백그라운드에서 애플리케이션의 출력을 / dev / null로 리디렉션하는 방법


100

Linux의 백그라운드 응용 프로그램에서 생성 된 출력을 / dev / null로 리디렉션하고 싶습니다.

kate 텍스트 편집기를 사용하고 있으며 / dev / null로 리디렉션하려는 터미널의 모든 디버그 메시지를 인쇄합니다.

어떻게하는지 아십니까?

감사


답변:


230

너는 사용한다:

yourcommand  > /dev/null 2>&1

백그라운드에서 실행되어야하는 경우 &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1해당 시점의 지점 이있는 곳 stdout으로 /dev/nullAND stderr로 리디렉션 을 의미 stdout합니다.

당신이 원하는 경우 stderr콘솔에서 발생하는 것으로 만 stdout가는 /dev/null당신이 사용할 수 있습니다 :

yourcommand 2>&1 > /dev/null

이 경우 stderr에 재 지정됩니다 stdout(예를 들어, 콘솔) 및 이후 원래는 stdout리디렉션됩니다/dev/null

프로그램이 종료되지 않아야하는 경우 다음을 사용할 수 있습니다.

nohup yourcommand &

매개 변수가 없으면 모든 출력이 nohup.out에 있습니다.


둘 다 작동하지만 약간의 차이가 있지만 기억하지 마십시오
evildead

아 좋아, 다른 버전을 추가했습니다
evildead

이것이 bash 파일의 마지막 명령 인 경우 내가 알아 차린 한 가지는 프롬프트없이 파일을 호출 한 명령 콘솔을 떠난다는 것입니다.
Dennis

리디렉션을 통해이 때문에 이미 실행중인 응용 프로그램의 @elig 리디렉션 출력, 즉 쉽게 적어도되지 IMO 수 없습니다, 또는 dup2()직후에 발생 fork()하기 전에하지만 exec*(). 일단 exec*()프로그램을 실행 한 쉘은 해당 프로세스의 출력을 리디렉션 할 수있는 기능을하지 않았습니다. 내가 틀렸다면 정정하십시오. 그러나 그러한 기능을 구현 한 셸에 대해서는 모릅니다.
evildead

3

또한 다음 두 가지를 모두 리디렉션합니다.

yourcommand  &> /dev/null

yourcommand  >& /dev/null

bash 매뉴얼에는 첫 번째가 선호된다고 나와 있지만.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.