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 쉘을 시작하면 실행됩니다 ...
cat /proc/xxx/cmdline
원래 프로세스를 시작한 명령줄을 표시합니다.
도움이 되길 바랍니다.