비차단 bash 명령

비차단 bash 명령

다음을 포함하는 bash 스크립트가 있다고 가정해 보겠습니다.

#!/bin/sh
gedit
rm *.temp

를 사용하여 실행하면 sh ./test.sh팝업 gedit이 뜨는데 해당 rm부분은 닫을 때까지 실행되지 않습니다 gedit.

bash 실행을 차단하지 않는 gedit것처럼 스크립트를 닫지 않고도 계속 실행되기를 원합니다 .gedit

제가 제시한 예는 단지 예일 뿐입니다( rm실제 상황에서는 첫 번째 예가 작동하지 않습니다).

답변1

당신이 찾고 있는 용어는 "백그라운드" 작업이라고 합니다. 셸이나 스크립트에서 명령을 실행할 때 끝에 플래그를 추가하여 이를 백그라운드로 보내고 새 명령이나 스크립트의 나머지 부분을 계속 실행할 수 있습니다. 대부분의 쉘( 포함)에서 sh이것이 &문자입니다.

#!/bin/sh
gedit &
rm ./*.temp

gedit이렇게 하면 쉘은 및 종료를 기다리지 않고 rm동시에 gedit실행됩니다.

"차단"이라는 용어는 일반적으로 입력/출력 스트림(보통 파일 또는 장치)과 연관됩니다. 이는 여러분이 사용하는 것과 유사한 의미를 지닌 컴파일된 언어에서도 사용되지만, bash 및 유사한 쉘 스크립트에서는 용어(및 기능!)가 상당히 다릅니다.

답변2

이는 출력을 생성하지 않습니다. 또한 터미널에서 분리되어 아무것도 차단하지 않습니다.

nohup gedit >/dev/null 2>&1 &

관련 정보