有没有办法获取后台作业/进程的全名?

有没有办法获取后台作业/进程的全名?
jobs -l 

这列出了工作,但我的工作名称又长又相同,这导致了他们完成哪一项的混乱。例如:如果我的工作是:

aaaaaabbbbbbccccc...............123
aaaaaabbbbbbccccc...............125
aaaaaabbbbbbccccc...............126

我在作业的输出中看到的是

[1]   Running         aaaaaabbbbbbccccc....
[2]   Running         aaaaaabbbbbbccccc....
[3]   Running         aaaaaabbbbbbccccc....

答案1

这是我的尝试 - 它有点毛茸茸的,可能有很多更干净的方法,但它确实有效:

$ jobs
[4]   Running                 ./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 10000 &
[5]-  Running                 ./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab 10000 &
[6]+  Running                 ./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac 10000 &

做你想做的事:

$ jobs -l | tr -s " " | cut -d" " -f 2 | xargs -L1 -I PID bash -c "cat /proc/PID/cmdline ; echo"
./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa10000
./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab10000
./aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac10000

解释:

jobs -l列出带有 PID 的作业

tr -s " "将多个空间压缩为单个空间

cut -d"" -f 2选择第二个字段 - PID

xargs ...每行运行一个命令,它运行的命令是...

bash -c {...}启动一个新的 bash shell 它将运行...

cat /proc/xxx/cmdline显示最初启动该进程的命令行

希望有帮助。

相关内容