실행중인 프로그램의 출력을 / dev / null로 리디렉션하는 방법


19

프로그램의 출력을 억제하기 위해으로 리디렉션 할 수 있음을 알고 있습니다. /dev/null예를 들어 크롬에서 모든 오류 및 경고 메시지를 숨기려면 다음과 같이 프로그램을 시작할 수 있습니다

chromium-browser 2> /dev/null &

그러나 오류 메시지와 유형을 잊어 버린 경우

chromium-browser &

(명령 중간에 나타날 때 상당히 성가신 일입니다.) 응용 프로그램을 중지하고 제대로 다시 시작하는 것을 제외하고는 무엇을 해야할지 모르겠습니다.

어떻게하면 응용 프로그램을 다시 시작하지 않고 오류 출력을 리디렉션 할 수 있습니까?

답변:


8

nohup으로 브라우저를 시작한 후 다음을 사용하여 터미널 창을 닫을 수도 있습니다.

nohup chromium-browser &

이런 식으로 브라우저가 콘솔에서 시작 및 분리 된 다음 조용히 닫을 수 있습니다.


2
입력해야한다는 사실을 제외하고는 허용됩니다.nohup
phunehehe

5
@phu 최소한 zsh에서는 당신이 넣을 setopt nohup.zshrc있고 당신이 실행하는 모든 것을 방해 할 것입니다. 다른 조개에 대해서는 잘 모르겠습니다
Michael Mrozek

예, 좋아요, 이런 식으로 좋아합니다!
phunehehe

3
또는 별칭을 만들 수 있습니다 ... alias chromium = nohup chromium
Pablo Olmos de Aguilera C.

22

이 여기에 대답했다 : 여기 에서 vladr . 답은 다음과 같습니다.

  • gdb를 사용하여 해당 프로세스에 연결하고 다음을 실행하십시오.
  • p dup2 (open ( "/ dev / null", 0), 1) (표준 출력 리디렉션)
  • p dup2 (open ( "/ dev / null", 0), 2) (stderr 리디렉션의 경우)
  • 떼다
  • 떠나다

다음 스크립트에서 시도했습니다.

[첫 코멘트 후 에디션 :]

수면 10 # 그래서 프로세스에 첨부 할 시간을 가질 수 있습니다
if [ "$ sonorfather"== "father"] # 무한 재귀를 피하십시오 
그때 
   sonorfather = son ./test & 
fi 

진실한 동안 
해야 할 것 
   에코 "stdout $ sonorfather" 
   에코 "stderr $ sonorfather"> & 2 
   수면 1 
끝난 

아들 프로세스가 생성되기 전에 stderr 출력을 비활성화했습니다. 출력은 다음과 같습니다.

스타우트 아버지 
스타우트 아들 
스타우트 아버지 
스타우트 아들 
[등등...]. 

나는 이것이 당신의 질문에 대답하기를 바랍니다 : 아들 프로세스 stderr도 리디렉션되었습니다.


3
그것은 매우 좋았지 만 크롬 탭에 문제가있을 수 있습니다. 어쨌든 각 브라우저 탭마다 새로운 프로세스가 생성되므로 해결할 수 있습니까?
phunehehe

답변을하도록 내 게시물을 수정했습니다.
Mike Perdide

자식 프로세스를 만들기 전에 출력을 리디렉션 해야하는 것처럼 보입니까? 지식에 감사하지만 복잡성에 대해서는 다음과 같이 진행하겠습니다. nohup:)
phunehehe

기술적으로 이것은에 대한 중복 파일 디스크립터를 누출 /dev/null하지만 실제로는 큰 영향을 미치지 않습니다.
Kevin

6

chromium-browser대신 실행할 별칭을 설정할 수도 있습니다chromium-browser 2> /dev/null

예를 들어 bash를 사용하는 경우 /home/username/.bashrc를 편집하고 다음 줄을 추가하십시오.

chromium-browser='chromium-browser 2> /dev/null'

또는 더 나은

chrome='chromium-browser 2> /dev/null'

키 입력을 저장하십시오.

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