バックグラウンドジョブ/プロセスのフルネームを取得する方法はありますか?

バックグラウンドジョブ/プロセスのフルネームを取得する方法はありますか?
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 -lPIDを含むジョブのリスト

tr -s " "複数のスペースを1つのスペースに圧縮

cut -d"" -f 22番目のフィールド - PIDを選択してください。

xargs ...各行は1つのコマンドを実行し、実行されるコマンドは次のとおりです。

bash -c {...}新しいbashシェルを起動すると実行されます...

cat /proc/xxx/cmdline元のプロセスを開始したコマンドラインを表示します。

お役に立てば幸いです。

おすすめ記事