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
显示最初启动该进程的命令行
希望有帮助。