명령을 실행하고 첫 번째 명령이 완료된 후 다른 명령을 실행하려면 다음을 실행할 수 있습니다.
command1 &
실행 중인 프로세스의 PID를 인쇄합니다 command1
.
command1
그런 다음 작업이 끝나면 무엇을 해야 할지 생각하고 다음을 수행할 수 있습니다.
wait [PID printed by the previous command] && command2
command1
그러나 이는 동일한 터미널 창 내에서만 작동하며 출력을 인쇄하면 매우 지저분해집니다. 새 터미널 창을 열고 기다리면 다음과 같은 내용이 표시됩니다.
$ wait 10668
bash: wait: pid 10668 is not a child of this shell
프로그램이 첫 번째 명령의 출력을 삭제하지 않고 현재 실행된 명령의 출력에 다음 명령을 쓸 때까지 기다리는 것을 지원하는 터미널 에뮬레이터가 있습니까(예: 에 파이핑 /dev/null
)?
wait
반드시 해결될 필요는 없습니다 . 마우스 오른쪽 버튼을 클릭하고 "반환 후 현재 명령 실행"을 선택하십시오.
단순히 명령을 연결하는 것이 아니라 명령을 실행하고그 다음에이 작업이 완료된 후 즉시 실행할 항목을 결정합니다.
답변1
일반적으로 장기 실행 명령을 내린 후 다음에 실행할 명령을 준비하려면 셸을 사용합니다.직업 통제그것을 달성하기 위해. 예를 들어, 당신은 을 command1
주는 대신 을 주었고 &
, 을 주고 싶어 command2
하므로정지시키다현재 실행 중인 명령을 입력합니다 control-z. 이제 쉘 프롬프트가 다시 표시되므로 다음을 입력하십시오.
fg; command2
첫 번째 명령을 재개 하고 fg
완료되면 쉘이 두 번째 명령을 시작합니다.
command1을 시작하면 &
백그라운드에서 실행됩니다. 를 사용하여 전경으로 가져온 fg
다음 일시 중지하고 이전과 동일한 작업을 수행할 수 있습니다.
답변2
이전 명령이 완료되자마자 명령을 실행하려면 ;
다음과 같이 구분할 수 있습니다.
command1 ; command2
또는 다음과 같이 첫 번째 명령이 반환될 때 두 번째 명령을 실행하려는 경우 true
:
command1 && command2