管道和xargs
ps aux|grep deltest|grep -v grep|awk '{print $2}'|xargs kill -9ps aux会列出所有的进程,后面碰到管道会将结果传递给第二个命令
第二个命令会从第一个命令的结果中查找deltest
第三个命令是反向过滤文本,会将包含grep的删除
第四个命令将会读取第三个命令删选的结果的第二列数据,awk默认通过空格隔开
xargs命令是用于给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。
将标准输入数据转换成功命令行参数能够将管道或者标准输入里的数据转换成特定命令的命令行参数
第五个命令会将前面的命令当成kill 的参数进而杀死
xargs
如果想要运行当前目录里的某个文件,可以使用python3 `pwd`/deltest2.py
也可以使用pwd | xargs -I {} python3 {}/deltest2.py
这个-I{}应该是把前面传过来的内容放到{},然后再次使用{}为使用
而echo `pwd|xargs -I {} python3 {}/$element`应该是想输出运行返回值,如果程序一直运行,那么将一直等待。
让多个程序运行的sh命令
#!/bin/bash
array=("deltest2.py" "deltest.py")
cd /workplace/kill_test
nowpath='/workplace/kill_test/'
for element in ${array[@]}
do
echo $element
nohup pwd|xargs -I {} python3 {}/$element &
sstr=$(echo -e $str)
echo $sstr
done
批量让程序停止
#!/bin/bash
#尽量写全运行的程序,最好把后缀也加上 数组元素之间没有逗号
array=("deltest2.py" "deltest.py")
for element in ${array[@]}
do
ps aux|grep $element|grep -v grep|awk '{print $2}'|xargs kill -9
done