我想要一个脚本来杀死使用 -D 参数运行的实例ssh
(设置本地代理)。
我手动ps -A | grep -i ssh
查找带有 -D 的实例,以及kill -9 {id}
每个实例。
但是 bash 脚本形式是什么样子的呢?
(我使用的是 Mac OS X,但将通过安装任何必要的命令port
)
答案1
运行pgrep -f "ssh.*-D"
并查看是否返回正确的进程 ID。如果是这样,只需更改pgrep
为pkill
并保留相同的选项和模式
另外,除非绝对必要,否则不应使用kill -9
又名 SIGKILL,因为程序无法捕获 SIGKILL 在退出之前自行清理。我只kill -9
在第一次尝试后使用-1
-2
。-3
答案2
还,
kill `pgrep -f "ssh.*-D"`
答案3
您可以利用 proc 文件系统来收集信息。例如:
for proc in $(grep -irl "ssh.*-D" /proc/*/cmdline | grep -v "self"); do if [ -f $proc ]; then cat $proc && echo ""; fi; done
它并不完美,您需要一个更独特的正则表达式(特别是如果您正在终止进程),但echo $proc | awk -F'/' '{ print $3 }'
会向您显示进程的 PID。