jobs 명령 출력에서 ​​변수를 확장하는 방법

jobs 명령 출력에서 ​​변수를 확장하는 방법

$i아래 출력에서 ​​볼 수 있듯이 출력의 변수는 등 ps aux으로 확장됩니다 sleep 1. 같은 일을 할 sleep 2수 있는 방법이 있나요 ? 출력 zsh에서 모든 명령의 이름은 동일합니다(예: .jobssleep $i

$ for i in {1..10}; do sleep $i& done; ps aux | grep sleep; jobs
[6] 1630
[7] 1631
[8] 1632
[9] 1633
[10] 1634
[11] 1635
[12] 1636
[13] 1637
[14] 1638
[15] 1639
root      1630  0.0  0.0   5224   684 pts/3    SN   10:06   0:00 sleep 1
root      1631  0.0  0.0   5224   684 pts/3    SN   10:06   0:00 sleep 2
root      1632  0.0  0.0   5224   744 pts/3    SN   10:06   0:00 sleep 3
root      1633  0.0  0.0   5224   744 pts/3    SN   10:06   0:00 sleep 4
root      1634  0.0  0.0   5224   748 pts/3    SN   10:06   0:00 sleep 5
root      1635  0.0  0.0   5224   752 pts/3    SN   10:06   0:00 sleep 6
root      1636  0.0  0.0   5224   680 pts/3    SN   10:06   0:00 sleep 7
root      1637  0.0  0.0   5224   748 pts/3    SN   10:06   0:00 sleep 8
root      1638  0.0  0.0   5224   748 pts/3    SN   10:06   0:00 sleep 9
root      1639  0.0  0.0   5224   748 pts/3    SN   10:06   0:00 sleep 10
root      1641  0.0  0.0   6144   880 pts/3    S+   10:06   0:00 grep --color=auto sleep
[6]    running    sleep $i
[7]    running    sleep $i
[8]    running    sleep $i
[9]    running    sleep $i
[10]    running    sleep $i
[11]    running    sleep $i
[12]    running    sleep $i
[13]    running    sleep $i
[14]  - running    sleep $i
[15]  + running    sleep $i

건배!

답변1

그렇지 않으니 참고해주세요프로세스작업을 포그라운드에 놓지만 작업은 셸 명령으로 구성됩니다. 이 명령은 여러 프로세스를 병렬로( 에서처럼 sleep 10 | sleep 20 &) 시작하거나 차례로( 에서 처럼 for i in {1..10}; do sleep $i; done &) 시작하는 복합 명령일 수 있습니다.

이러한 각 프로세스는 차례로 더 많은 프로세스를 시작하거나(여전히 작업의 일부이지만 zsh직계 자손이 아니기 때문에 알 수 없음) 보고하는 매개변수 목록을 변경할 수 있습니다 ps(예: 해당 프로세스를 sh -c 'exec env sleep 10'실행한 다음 , 그리고 둘 다 동일한 프로세스에서) 또는 가능합니다.shenvsleep떠나다직업(새로운 프로세스 그룹 리더가 됨).

각 작업에 대해 해당 작업의 프로세스에 대한 매개변수 목록을 보고 싶은 것처럼 들립니다.

어쩌면 다음과 같은 것일 수도 있습니다.

for job state ("${(@kv)jobstates}") {
  pgid=${${state%%=*}##*:}
  echo Job $job:
  pgrep -ag $pgid
}

귀하의 예에서는 다음과 같은 것을 제공합니다.

Job 2:
26590 sleep 1
Job 3:
26591 sleep 2
Job 4:
26592 sleep 3
Job 5:
26593 sleep 4
Job 6:
26594 sleep 5
Job 7:
26595 sleep 6
Job 8:
26596 sleep 7
Job 9:
26597 sleep 8
Job 10:
26598 sleep 9
Job 11:
26599 sleep 10

관련 정보