프로그램의 출력을 억제하기 위해 프로그램을 다음으로 리디렉션할 수 있다는 것을 알고 있습니다 /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'
그리고 몇 가지 키 입력을 저장하세요.