我可以在后台运行多个 bash 脚本实例,一切都很好。我以这样的方式设置它,有些有-x
作为标志,有些没有。看:
./test.sh &
./test.sh &
./test.sh -x &
./test.sh -x &
现在,我想杀死所有使用该-x
标志运行的脚本。我总是用这个杀死在后台运行的脚本:
ps -aux | grep -Po "^\S{1,}\s*\K\d*(?=.*test.sh$)" | \
while read -r level
do
kill $level
done
但是,ps -aux
不显示脚本运行时给出的任何参数/标志。因此,当使用它时,我不能只抓取使用-x
. 有针对这个的解决方法吗?我只想杀死使用-x
.
尝试
使用
pkill
带有-f
标志的命令。该命令
pkill test.sh
将杀死所有test.sh
用作命令名称的进程。使用该-f
标志在man pgrep
, as中进行了解释,pgrep
并pkill
使用类似的语法:但是,您需要用引号将搜索模式括起来,并转义
-
of-x
。所以pkill -f "test.sh \-x"
只会杀死test.sh
使用该-x
标志运行的进程。