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 " "
複数のスペースを1つのスペースに圧縮
cut -d"" -f 2
2番目のフィールド - PIDを選択してください。
xargs ...
各行は1つのコマンドを実行し、実行されるコマンドは次のとおりです。
bash -c {...}
新しいbashシェルを起動すると実行されます...
cat /proc/xxx/cmdline
元のプロセスを開始したコマンドラインを表示します。
お役に立てば幸いです。