다른 명령이 완료된 후 한 명령을 대기열에 추가하여 실행하는 방법은 무엇입니까?

다른 명령이 완료된 후 한 명령을 대기열에 추가하여 실행하는 방법은 무엇입니까?

때때로 나는 완료하는 데 오랜 시간이 걸리는 프로그램을 시작했지만 ( emerge) 그것을 기다리지 않고 잠에 들어야 한다는 것을 깨달았습니다. 이걸 처음부터 알았더라면 달려갔을텐데

program; halt

그러나 이제 프로그램을 시작했는데 프로세스가 완료되면 컴퓨터가 종료되도록 "예약"하려면 어떻게 해야 합니까? Ctrl+z그럼 괜찮나요 fg; halt?

답변1

예, 가능합니다.

확실하지 않은 경우 다음 명령으로 테스트할 수 있습니다.

  • sleep 15

  • Ctrl+z

  • fg; echo "it works"

답변2

halt또 다른 방법은 첫 번째 명령이 실행되는 동안 터미널에 입력하는 것입니다. 첫 번째 명령이 특정 시점에서 입력을 읽지 않는 한 터미널의 버퍼에 저장되고 쉘은 첫 번째 프로그램이 입력을 읽은 상태로 끝납니다.

답변3

wait명령 사용

$ sleep 10 &
[1] 29703
$ wait 29703 && echo hello
[1]+  Done                    sleep 10
hello

관련 정보