Linux常用脚本

2017-01-22

记录日常使用到的脚本

scp拷贝最近3天日期命名的tar.z文件,并删除本地6天前的tar.z文件

#!/bin/bash
for((i=0;i<=3;i++)); do
	datefile=`date -d"$i day ago" +%Y%m%d`.tar.z
	if [ ! -f "$datefile" ]; then
		scp malu.me:/backup/$datefile /home/backup/
	fi
done
find ./ -mtime +6 -type f -name "*.tar.z"|xargs rm -f

合并指定目录下的所有文本,并去除重复行,并过滤^M字符 (生成超级字典)

#!/bin/bash
if [ $# != 1 ] ; then 
echo "USAGE: $0 FLODER" 
exit 1;  
fi
root_dir=$1
NEWFILE=newfile_dic.txt
NEWFILE_TMP=newfile_dic.txt.tmp
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
function getdir(){
    for element in `ls $1`
    do  
        dir_or_file=$1"/"$element
        if [ -d $dir_or_file ]
        then 
            getdir $dir_or_file
        else
            echo -n $dir_or_file
            cat $dir_or_file |sed 's/^M//g'>> $NEWFILE_TMP
            echo '              ok'
        fi  
    done
}
getdir $root_dir
IFS=$SAVEIFS
sort $NEWFILE_TMP|uniq > $NEWFILE
rm -f $NEWFILE_TMP

注意:^M的输入方式是 Ctrl + v ,然后Ctrl + m

杀死进程及其所有子进程

pstree -p PID | grep -oP '(?<=\()[0-9]+(?=\))'|xargs kill -9