여러 자동화 된 작업을 수행 할 수있는 스크립트가 있습니다. 스크립트 끝에서 다음 명령을 실행합니다.
nohup ./MyServer &
이 명령은 콘솔이있는 내 서버 백그라운드에서 실행됩니다. 그런 다음 Nohup은 표준 콘솔 출력의 내용을 포함 할 nohup.out 파일 을 생성합니다 . Enter 키를 누르면 콘솔에 TC> \ n이 표시됩니다 .
문제는 스크립트에서 nohup 명령을 실행하면 콘솔에서 Enter 키가 계속 눌러져 있다는 것입니다.
즉, 스크립트에서 nohup 명령을 실행하면 nohup.out 파일에 초당 수백만 개의 쓰기가 수행됩니다.
그러나 단순히 명령을 실행하면
nohup ./MyServer &
이러한 기록은 발생하지 않으며 언제든지 nohup.out 파일 에서 잠재적 인 오류를 볼 수 있습니다 .
자동화 된 작업을 시작하는 사용자 지정 스크립트를 실행하고이 스크립트의 실행이 끝날 때까지 (시간이 소요됨) 기다린 다음 nohup 명령을 실행하여 서버를 시작해야합니까?
GNU nohup (예 : 데스크톱 / 서버 Linux)이있는 컴퓨터에서 실행하는 경우 nohup은 SIGHUP
신호의 처리를 "무시"로 설정하고 stdout / stderr을로 리디렉션 할 nohup.out
뿐만 아니라 해당 stdin이 터미널 인 경우 , 또한 읽기 전용 모드 에서 열린 stdin 을 리디렉션하여 모든 읽기에서 오류가 발생하도록합니다./dev/null
예를 들어 백그라운드 명령이 스크립트에서 실행 foo &
되면 해당 stdin이 이미 읽기 전용 모드로 /dev/null
열림에서 리디렉션되고 리디렉션이 발생하지 않으며이 명령에서 읽은 경우 오류 대신 EOF가 발생합니다.
따라서 다음을 사용하여 터미널에서 스크립트 nohup의 동작을 시뮬레이션 할 수 있습니다.
(trap '' HUP; command 0>/dev/null >logfile 2>&1 &)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다