系统加固

密码输入错误超过3次锁定账号 sed -i '3aauth required pam_tally2.so.deny=3' /etc/pam.d/system-auth sed -i '17d;16apassword requisite pam_cracklib.so retry=3 minlen=8 ucredit=0 lcredit=-1 dcredit=-1 ocredit=0 try_first_pass' /etc/pam.d/system-auth sed -i '18d;17apassword sufficient pam_unix.so use_authtok sha512 shadow remember=3 try_first_pass ' /etc/pam.d/system-auth

/etc/motd 设置系统登录提示语

禁ping echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

chattr +a /etc/profile echo "echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all" >>/etc/profile echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词

内含有空白字元的时候, xargs 可能就会误判了,如果需要处理特殊字符,需要使用-0参数进行处理。 选项解释 0 :当sdtin含有特殊字元时候,将其当成一般字符,想/'空格等 $ echo "/ / "|xargs echo #不显示空格 / /
$ echo "/ / "|xargs -0 echo / /

注意,-I 必须指定替换字符 -i 是否指定替换字符-可选 find . | xargs -I {} cp {} $D_PATH find . | xargs -i cp {} $D_PATH 注意:cshell和tcshell中,需要将{}用单引号、双引号或反斜杠,否则不认识。bash可以不用。 find /shell -maxdepth 2 -name a -print | xargs -t -i sed -i '1 i\111' ‘{}‘

在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限: find . -perm -7 -print | xargs chmod o-w 查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件 find . -type f -print | xargs file ./liyao: empty 尝试用rm 删除太多的文件,你可能得到一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题 $find ~ -name ‘*.log’ -print0 | xargs -i -0 rm -f {} 查找所有的jpg 文件,并且压缩它 find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz 拷贝所有的图片文件到一个外部的硬盘驱动 ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

ps -ef uid pid ppid

ps -ef | grep /usr/local/tomcat/ | grep -v grep | awk '{print $2}' | xargs kill -9

查看现在登录的用户IP who -u | awk -F "[(|)]" '{print $2}' w | sed -n '{3,$p}' | awk '{print $3}' w | grep pts | awk '{print $3}'

统计Tomcat日志中IP连接次数最多的,倒序排列 awk '{print $2}' localhost_access_log-20171201.log |sort -nr |uniq -c | head -n 10 查看Tomcat对应的进程 ps -ef |grep tomcat | grep -v grep | awk '{print $2}' 查看Tomcat的线程数 ps -Lf pid | wc -l 查看tomcat的并发数 netstat -an|grep 10050|awk '{count[$6]++} END{for (i in count) print(i,count[i])}'

怎样隐藏文件 mv 原文件名 .文件名 ------> 前面加.即可

屏蔽某一列,使其不打印 awk '{$5="",print $0}' /etc/passwd 打印某一列及其后面的列 uptime|awk 'BEGIN{print "1Min""\t","5Min""\t","15Min""\t"}{for(i=10;i<=NF;i++)printf$i"\t";printf"\n"}'

查看CPU型号 cat /proc/cpuinfo | grep "model name" |cut -c 14-

删除后面重复的内容 awk '!x[$0]++' filename
简要解释一下,awk 的基本执行流程是,对文件的每一行,做一个指定的逻辑判断,如果逻辑判断成立,则执行指定的命令;如果逻辑判断不成立,则直接跳过这一行。

我们这里写的 awk 命令是!x[$0]++,意思是,首先创建一个 map 叫x,然后用当前行的全文$0作为 map 的 key,到 map 中查找相应的 value,如果没找到,则整个表达式的值为真,可以

执行之后的语句;如果找到了,则表达式的值为假,跳过这一行。由于表达式之后有++,因此如果某个 key 找不到对应的 value,该++操作会先把对应的 value 设成 0,然后再自增成 1,

这样下次再遇到重复的行的时候,对应的 key 就能找到一个非 0 的 value 了。

对齐 df -ih|awk '{printf "%-6s %-3s %-5s %5s %-8s\n",$2,$3,$4,$5,$6}'

真正清空终端屏幕. printf “\033c” 或者 printf “\ec” reset

文件比较

common 文件比较

比较已经排序的文件

comm [options] file1 file2

comm将逐行比较已经排序的两个文件。显示结果包括3列:

第1列为只在file1中找到的行;第2列为只在file2中找到的行;第3列为两个文件的公用行。

参数

参数file1和file2为comm要比较的文件的路径名。用连字符(-)来替代file1或者file2时,comm将从标准输入读取输入信息

注意

如果文件没有排序,comm就不能正常的工作

diff 文件比较 命令格式:

diff [参数][变动前的文件1或目录1][变动后的文件2或目录2]

命令功能:

diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff 命令

会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

y 以并列的方式显示文件的异同之处。

c 显示全部内文,并标出不同之处。

u,-U 以合并的方式来显示文件内容的不同。

r或--recursive  比较子目录中的文件。

查看文件类型 file 文件