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

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

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

chromium-browser 2> /dev/null &

그러나 오류 메시지를 잊어버리고 입력하면

chromium-browser &

(명령 중간에 나타나면 매우 짜증납니다.) 응용 프로그램을 중지하고 제대로 다시 시작하는 것 외에는 무엇을 해야할지 모르겠습니다.

애플리케이션을 다시 시작하지 않고도 오류 출력을 리디렉션할 수 있나요?

답변1

이에 대한 답변은 다음과 같습니다.여기통과블라델. 대답은 (인용문)입니다.

  • gdb를 사용하여 문제의 프로세스에 연결하고 다음을 실행합니다.
  • p dup2(open("/dev/null", 0), 1) (표준 출력 리디렉션의 경우)
  • p dup2(open("/dev/null", 0), 2) (표준 오류 리디렉션의 경우)
  • 분리
  • 사직하다

나는 다음 스크립트를 시도했습니다.

[첫 번째 댓글 이후 버전:]

sleep 10 # 그래서 프로세스에 연결할 시간이 있습니다
if [ "$sonorfather" == "father" ] # 무한 재귀 방지
그 다음에
   sonorfather=son./test&
필리핀 제도

사실이긴 하지만
하다
   echo "stdout $sonorfather"
   echo "stderr $sonorfather" >&2
   잠 1
완벽한

하위 프로세스를 만들기 전에 stderr 출력을 비활성화했는데 결과는 다음과 같습니다.

표준 출력 아버지
표준 아들
표준 출력 아버지
표준 아들
[등...].

이것이 귀하의 질문에 대한 답변이 되기를 바랍니다. 하위 프로세스 stderr도 리디렉션됩니다.

답변2

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

nohup chromium-browser &

이렇게 하면 브라우저가 시작되고 콘솔에서 분리된 다음 조용히 종료될 수 있습니다.

답변3

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

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

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

또는 더 나은

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

그리고 몇 가지 키 입력을 저장하세요.

관련 정보