Bash에서 여러 명령을 실행하고 싶지만 그 중 일부는 백그라운드에서 실행되도록 하고 싶습니다. 이를 설명하는 가장 좋은 방법은 작동하지 않는 다음 명령을 사용하는 것입니다.
for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand
나는 이것이 두 가지 질문으로 받아들여질 수 있다고 생각합니다.
- 명령에서 &를 종료하는 방법은 무엇입니까?
- 이 문제를 해결하는 더 좋은 방법은 무엇입니까?
중요한 경우 기타 세부정보:
- 오픈수스 13.2
- 그놈 쉘
답변1
당신은 시도해야
(sleep 5; ls) & echo "Now"
이것은 원하는 대로 작동합니다.
답변2
당신이해야 할 일은 ;
. &
자체적으로 명령 구분 기호 역할을 하므로 ;
그 뒤에 추가하는 것은 유효하지 않습니다.
(sleep 30; command1; command2 param ) & anotherCommand
(세미콜론 뒤의 공백은 필요하지 않습니다. 이렇게 하면 읽기가 더 쉽습니다. 이는 쉘 구문에서 공백이 선택 사항인 몇 안 되는 지점 중 하나입니다. 대부분의 경우 공백은 필수이거나 금지되어 있습니다.)
이를 수행하는 더 나은 방법은... 실제로 수행하려는 작업이 정확히 무엇인지에 따라 다릅니다. 더 나은 제안을 하려면 더 많은 정보가 필요합니다.