通过 bash 命令注释从 pkill 中查看
Pass bash command a comment to see from pkill
我有一个任意 bash 命令 运行 我想附加一些识别注释,以便我可以在必要时取消它。
例如:
sleep 1000 #uniqueHash93581
pkill -f '#uniqueHash93581'
...但是 #uniqueHash93581 没有得到解释,所以 pkill 找不到进程。
有什么方法可以传递这个唯一的哈希值,以便我可以 pkill 进程?
Bash 删除 运行 命令前的注释。
使用 Linux 和 GNU grep 的解决方法:
使用具有唯一值的变量作为命令前缀
ID=uniqueHash93581 sleep 1000
稍后搜索此变量以获取 PID 并终止进程
grep -sa ID=uniqueHash93581 /proc/*/environ | cut -d '/' -f 3 | xargs kill
exec
子 shell 中的命令,并使用 -a
选项为其指定一个可识别的名称。例如:
$ (exec -a foobar sleep 1000) &
$ ps | grep foobar
893 ttys000 0:00.00 foobar 10
或者,仅运行后台作业并保存其 PID。
$ sleep 1000 & pid=$!
$ kill "$pid"
我有一个任意 bash 命令 运行 我想附加一些识别注释,以便我可以在必要时取消它。
例如:
sleep 1000 #uniqueHash93581
pkill -f '#uniqueHash93581'
...但是 #uniqueHash93581 没有得到解释,所以 pkill 找不到进程。
有什么方法可以传递这个唯一的哈希值,以便我可以 pkill 进程?
Bash 删除 运行 命令前的注释。
使用 Linux 和 GNU grep 的解决方法:
使用具有唯一值的变量作为命令前缀
ID=uniqueHash93581 sleep 1000
稍后搜索此变量以获取 PID 并终止进程
grep -sa ID=uniqueHash93581 /proc/*/environ | cut -d '/' -f 3 | xargs kill
exec
子 shell 中的命令,并使用 -a
选项为其指定一个可识别的名称。例如:
$ (exec -a foobar sleep 1000) &
$ ps | grep foobar
893 ttys000 0:00.00 foobar 10
或者,仅运行后台作业并保存其 PID。
$ sleep 1000 & pid=$!
$ kill "$pid"