Bash에서 여러 명령을 실행하는 방법(일부는 백그라운드에서)

Bash에서 여러 명령을 실행하는 방법(일부는 백그라운드에서)

Bash에서 여러 명령을 실행하고 싶지만 그 중 일부는 백그라운드에서 실행되도록 하고 싶습니다. 이를 설명하는 가장 좋은 방법은 작동하지 않는 다음 명령을 사용하는 것입니다.

for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand

나는 이것이 두 가지 질문으로 받아들여질 수 있다고 생각합니다.

  1. 명령에서 &를 종료하는 방법은 무엇입니까?
  2. 이 문제를 해결하는 더 좋은 방법은 무엇입니까?

중요한 경우 기타 세부정보:

  • 오픈수스 13.2
  • 그놈 쉘

답변1

당신은 시도해야

(sleep 5; ls) &  echo "Now"

이것은 원하는 대로 작동합니다.

답변2

당신이해야 할 일은 ;. &자체적으로 명령 구분 기호 역할을 하므로 ;그 뒤에 추가하는 것은 유효하지 않습니다.

(sleep 30; command1; command2 param ) & anotherCommand

(세미콜론 뒤의 공백은 필요하지 않습니다. 이렇게 하면 읽기가 더 쉽습니다. 이는 쉘 구문에서 공백이 선택 사항인 몇 안 되는 지점 중 하나입니다. 대부분의 경우 공백은 필수이거나 금지되어 있습니다.)

이를 수행하는 더 나은 방법은... 실제로 수행하려는 작업이 정확히 무엇인지에 따라 다릅니다. 더 나은 제안을 하려면 더 많은 정보가 필요합니다.

관련 정보