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

두 개의 쉘 스크립트 a.shb.sh. In a.shb.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 &)


답변

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

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


답변

nohup sh -x runShellScripts.sh &