하나의 명령으로 백그라운드에서 여러 프로그램을 실행하는 방법은 무엇입니까?
다음 명령을 시도했지만 작동하지 않습니다.
nohup ./script1.sh & && nohup ./script2.sh &
-bash: syntax error near unexpected token '&&'
nohup ./script1.sh & ; nohup ./script2.sh &
-bash: syntax error near unexpected token ';'
답변1
쉘 구문 관점에서 보면 &
/ / ...와 같은 명령을 구분합니다(물론 의미론은 다르지만). 그래서 이것은 단지:;
|
&&
cmd1 & cmd2 & cmd3 &
답변2
bash 맨페이지 섹션의 제목은 다음과 같습니다.복합 명령사용 가능한 옵션에는 list 명령과 group 명령의 두 가지가 있습니다.
그룹 명령은 중괄호로 묶인 일련의 명령입니다 {}
. 목록은 동일하며 괄호로 묶입니다 ()
. 둘 다 여러 명령을 배경으로 설정하고 마지막으로 전체 컬렉션을 하나로 설정하는 데 사용할 수 있습니다. 목록 구성은 서브셸에서 명령을 실행하므로 변수 할당이 유지되지 않습니다.
일련의 명령을 실행합니다.
{ command1 & command2 & } &
목록(서브셸)에서 명령을 실행할 수도 있습니다.
( command1 & command2 ) &
답변3
다른 방법:
$(command1 &) && command2 &