programing

백그라운드에서 쉘 스크립트를 실행하고 출력을 얻는 방법

nasanasas 2020. 8. 21. 07:52
반응형

백그라운드에서 쉘 스크립트를 실행하고 출력을 얻는 방법


두 개의 쉘 스크립트 a.sh와 b.sh를 작성했습니다. a.sh 및 b.sh에는 무한 for 루프가 있으며 일부 출력을 터미널에 인쇄합니다. a.sh와 b.sh를 모두 호출하는 또 다른 스크립트를 작성하고 싶지만 사용자가 스크립트를 무한히 실행하는 대신 터미널을 즉시 제어하고 터미널에서 출력을 숨기고 싶습니다.


를 사용 nohup하여 백그라운드 작업 완료하는 데 시간이 오래 걸리는 경우 또는 서버에 로그인처럼 그냥있는 SecureCRT 또는 무언가를 사용합니다.

출력을 무시 하려면 stdoutstderr/dev/null리디렉션하십시오 .

nohup /path/to/your/script.sh > /dev/null 2>&1 &

다음과 같은 파일로 출력을 리디렉션합니다.

./a.sh > somefile 2>&1 &

이렇게하면 stdout과 stderr가 모두 동일한 파일로 리디렉션됩니다. stdout 및 stderr을 두 개의 다른 파일로 리디렉션하려면 다음을 사용하십시오.

./a.sh > stdoutfile 2> stderrfile &

/dev/nullstdout 및 / 또는 stderr에 신경 쓰지 않는 경우 파일 중 하나 또는 둘 모두로 사용할 수 있습니다 .

리디렉션에 대한 자세한 내용은 bash 맨 페이지참조하십시오 .


죄송이 조금 늦었하지만 때문에 어디 당신이 (신용를 표준 또는 오류 출력을 원하지 않는 somple 명령을위한 이상적인 솔루션을 발견 http://felixmilea.com/2014/12/running-bash-commands-background -제대로 / )

그러면 출력이 null로 리디렉션되고 화면이 깨끗하게 유지됩니다.

command &>/dev/null &

다음을 포함하는 스크립트와 동일한 디렉토리에있는 경우 :

./a.sh > /dev/null 2>&1 &
./b.sh > /dev/null 2>&1 &

&말에 백그라운드에서 실행되는 스크립트를 만드는 것입니다.

> /dev/null 2>&1부분은 필요하지 않습니다. stdout 및 stderr 스트림을 리디렉션하므로 출력이 많은 시끄러운 스크립트에 대해 수행 할 수있는 터미널에서 볼 필요가 없습니다.


알림을 제거하고 STDOUT 및 STDERR을 닫으려면 서브 쉘에서 실행하십시오.

(&>/dev/null script.sh &)

nohup sh -x runShellScripts.sh &

다음 예제는 잘 작동합니다.

nohup sh prog.sh proglog.log 2> & 1 &

For 루프는 다음과 같이 사용할 수 있습니다.

for i in {1..10}; sh prog.sh 수행; 수면 1; 완료 prog.log 2> & 1 &

백그라운드에서 작동하며 출력을 표시하지 않습니다.


리눅스 킥 스타트에서 스크립트를 실행하려면 아래와 같이 실행해야합니다.

sh /tmp/script.sh > /dev/null 2>&1 < /dev/null &

참고 URL : https://stackoverflow.com/questions/9190151/how-to-run-a-shell-script-in-the-background-and-get-no-output

반응형