백그라운드에서 쉘 스크립트를 실행하고 출력을 얻는 방법
두 개의 쉘 스크립트 a.sh와 b.sh를 작성했습니다. a.sh 및 b.sh에는 무한 for 루프가 있으며 일부 출력을 터미널에 인쇄합니다. a.sh와 b.sh를 모두 호출하는 또 다른 스크립트를 작성하고 싶지만 사용자가 스크립트를 무한히 실행하는 대신 터미널을 즉시 제어하고 터미널에서 출력을 숨기고 싶습니다.
를 사용 nohup
하여 백그라운드 작업 완료하는 데 시간이 오래 걸리는 경우 또는 서버에 로그인처럼 그냥있는 SecureCRT 또는 무언가를 사용합니다.
출력을 무시 하려면 stdout 및 stderr 을 /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/null
stdout 및 / 또는 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 &
'programing' 카테고리의 다른 글
CPanel을 사용하여 크론 작업에서 PHP 파일 실행 (0) | 2020.08.21 |
---|---|
asp.net mvc의 최소 / 최대 값 유효성 검사기 (0) | 2020.08.21 |
SVN 모범 사례-팀 작업 (0) | 2020.08.21 |
스레드 경합이란 무엇입니까? (0) | 2020.08.21 |
C / C ++ 줄 번호 (0) | 2020.08.21 |