한 줄에 여러 명령을 연결하고 동시에 백그라운드에서 실행하는 방법은 무엇입니까? 이것들은 작동하지 않습니다:
sleep 1m & && echo "goodbye" & && exit &.
sleep 1m & ; echo "goodbye" & ; exit &.
sleep 1m & echo "goodbye" & exit &.
모든 명령이 작동하도록 해야 합니다.포그라운드 세션. 예를 들어 exit &
포그라운드 세션을 종료해야 합니다.
참고: 저는 at
이 유틸리티를 대체하여 이 유틸리티를 사용하고 있습니다. 이 대안이 필요한 이유에 대한 이야기는 길지만 여기에서 질문한 다음 질문에서 볼 수 있습니다(아래에 연대순으로 제시됨). 불행히도 만족스러운 해결책을 찾지 못했습니다(나의 특정 상황에 대해).
Dataved의 답변은 여기서 유망한 것 같습니다.
답변1
어때요?
pid=$$; ( sleep 1; echo goodbye; kill $pid ) & echo hello
답변2
글쎄, IMO, 가장 좋은 방법은 화면 유틸리티를 사용하는 것입니다.
1. screen -R <name-of-the-screen-session>
2. <the-command(s)>
3. ctrl + a + d ### To exit the screen session
4. To log back: screen -x <name-of-the-screen-session>
답변3
&&
조건부 연산자입니다 . 왼쪽 명령이 성공적으로 종료되는 경우에만 오른쪽 명령을 실행합니다. 백그라운드에서 왼쪽에 있는 명령을 실행하고 있으므로 반환 코드를 확인할 수 없으며 문제가 발생하고 예상대로 작동하지 않습니다.
을 사용하지 &&
마십시오 . 두 번째 명령은 백그라운드에서 실행되는 하위 쉘에서 모든 명령을 순차적으로 실행합니다.command1 & command2 & command3
( command1; command2; command3 )&