在linux上可以使用管道符“|”用来组合命令,左边的命令输出用作右边的命令输入,从而组合成为功能强大的命令。
例1,使用cat查看message日志,然后用more实现换页暂停功能:
# cat /var/log/message | more
例2,查找“/usr”目录下占据空间最大的5个目录,首先用du统计占据空间大小,然后用sort进行排序,最后用head提取前5行。这个组合命令可以用于文件系统告警故障的处理:
# du -k /usr | sort -nr -k 1 |head -5
例3,查看oracle数据库服务器所有的oracle用户进程,首先使用ps查询进程,然后用grep查找包含oracle字符串的行:
# ps -ef | grep oracle
例4,杀掉oracle数据库所有的外部连接进程,首先使用ps查询进程,然后用grep查找包含“LOCAL=NO”字符串的行,再用awk找到进程号,最后用kill杀连接进程:
# ps -ef|grep 'LOCAL=NO'|awk '{print $2}'| xargs kill -9
例5,查找服务器上所有可用的监听端口,例如数据库监听端口1521,首先用netstat显示网络连接,然后用grep查找包含“LISTEN”字符串的行:
# netstat -anp | grep LISTEN
例6,查找服务器上所有到数据库1521监听端口的网络连接,首先使用netstat显示网络连接,然后用grep查找包含“1521”字符串的行。这个组合命令可以用于查询外部连接来自哪个应用服务器和IP地址:
# netstat -anp | grep 1521
?
1、输入、输出可以重定向到其它文件;
2、重定向输出使用“>”、“>>”操作符,“>”为覆盖文件,“>>”为追加内容到文件尾部;
3、重定向输入使用“<” 、“<<” 操作符;
例1,重定向输出,查找messages文件中所有包含“fail”字符串的错误行,输出到新文件testnew.log:
# grep fail /var/log/messages > /root/testnew.log
例2,重定向输出,查找messages-20180930文件中所有包含“fail”字符串的错误行,追加输出到文件testnew.log:
# grep fail /var/log/messages-20180930 >> /root/testnew.log
例3,重定向输入,以testnew.log作为输入,统计文件的行数:
# wc -l < /root/testnew.log
例4,重定向输入,在shell脚本里使用<<和用户自定义终止符EOF,表示后续的输入作为子shell的输入,到下一个EOF终止,最后再返回主shell。例如下面的ftp脚本,连接到ftp服务器后,自动带入用户名和密码,然后上传新文件,删除老文件,最后中断ftp连接:
# vi test_ftp.sh
ftp -n -i 192.168.59.129 << EOF
user ftpuser ftpuser
bin
mput $yesterday.*
delete $three_day_ago.*
bye
EOF
·1、在/usr/share/dict/linux.words中找出所有包含abrot的行。复制所有这些行并按照原来的顺序放在文件/root/grepfile.txt中。/root/grepfile.txt应该没有空白行,所有的行必须是原有行的精确复制。