cmd1과 cmd2라는 두 가지 명령이 있습니다. 둘 중 cmd2는 완료하는 데 시간이 더 오래 걸립니다. cmd2를 먼저 실행한 다음 cmd1을 실행해야 합니다.
다음을 통해 실행해 보세요.
bash$ (nohup ./cmd2>result2 &) && nohup ./cmd1>result1 &
또는
bash$ (nohup ./cmd2>result2 &) ; nohup ./cmd1>result1 &
그러나 두 번 모두 cmd1이 cmd2가 완료될 때까지 기다리지 않고 result1이 채워지는 것을 볼 수 있습니다.
cmd1과 cmd2가 모두 nohup 프로세스이고 백그라운드에서 실행되어야 할 때 cmd2 다음에 cmd1을 실행하려면 어떻게 해야 합니까?
답변1
두 가지를 모두 만들어 cmd1
병렬로 실행했습니다. cmd2
"백그라운드에서 cmd2를 실행하고 연결을 끊습니다. 백그라운드에서 cmd1을 실행하고 연결을 끊습니다." 의미는 "cmd2를 백그라운드에서 실행하고 완료되면 cmd1을 실행합니다(또한 background)." ” 더 이상 백그라운드 작업과 연결이 없으므로 cmd2를 먼저 실행한 다음 cmd1을 실행하는 백그라운드 작업을 설계해야 합니다. 이는 cmd2; cmd1
(또는 cmd2가 성공한 경우에만 cmd1을 실행하려면) 백그라운드에서 실행되는 셸을 시작하도록 cmd2 && cmd1
지시해야 합니다 .nohup
nohup sh -c './cmd2 >result2 && ./cmd1 >result1' &
답변2
nohup을 사용하지 않아도 괜찮다면:
{ command1 >result1 2>&1 && command2 >result2 2>&1 ; } & disown
답변3
그냥 사용:
nohup ./cmd2>result2 & nohup ./cmd1>result1 & nohup ./cmd3>result3 &
답변4
cmd2와 cmd1을 정확히 무엇을 사용하고 있는지 알려주세요. 이는 작업 유형과 원하는 명령 출력에 따라 다릅니다. 명령을 사용하여 Enter 키를 두 번 누르는 문제에 직면했다면 내 방법으로 해결할 수 있습니다.우편 엽서
이 길로도 갈 수 있어요
nohup `cmd2 && ccmd1` > Output.out 2> Error.err < /dev/null &
아래 제공된 스크린샷을 참조하세요. 여기서는 3개의 명령을 사용했으며 모든 명령은 하나씩 순차적으로 실행됩니다. 이 작업을 수행하기 위해 백틱을 사용합니다. 스크린샷에서 날짜 타임스탬프도 확인할 수 있습니다. sleep 명령에는 60초가 있으므로 60초 후에 다음 명령이 성공적으로 실행됩니다. jobs 명령을 사용하여 백그라운드에서 여전히 실행 중인 명령이 있는지 확인합니다. 여기는 아닙니다. 볼 수 있는 위치 수는 1개입니다.
이 스크린샷은 여기에서 찾을 수 있습니다협회또한, 눈에 띄지 않는 경우