0

我有一个正在运行的任意 bash 命令,我想附加一些识别注释,以便在必要时删除它。

例如:

sleep 1000 #uniqueHash93581
pkill -f '#uniqueHash93581'

...但是 #uniqueHash93581 没有被解释,所以 pkill 不会找到该进程。

有什么方法可以传递这个唯一的哈希,以便我可以杀死这个过程?

4

2 回答 2

1

exec子shell中的命令,并使用该-a选项为其提供可识别的名称。例如:

$ (exec -a foobar sleep 1000) &
$ ps | grep foobar
893 ttys000    0:00.00 foobar 10

或者,只需在后台运行作业并保存其 PID。

$ sleep 1000 & pid=$!
$ kill "$pid"
于 2018-01-04T00:37:54.883 回答
1

Bash 在运行命令之前删除注释。


Linux 和 GNU grep 的解决方法:

使用具有唯一值的变量为您的命令添加前缀

ID=uniqueHash93581 sleep 1000

稍后搜索此变量以获取 PID 并终止进程

grep -sa ID=uniqueHash93581 /proc/*/environ | cut -d '/' -f 3 | xargs kill
于 2018-01-04T00:12:11.460 回答