나는 / nohup
아래의 중요한 장기 실행 프로세스에 매우 자주 사용 하므로 거의 관용구입니다.linux
bash
nohup time my command with arguments && mv nohup.out my.log
문제는이 nohup
모두를두고 stdout
와 stderr
에 nohup.out
, 나는 파일의 이름을 제어 할 수 없습니다. 이것은 실수로 nohup
같은 디렉토리에서 두 개의을 시작하면 출력이에 인터리브 됨을 의미합니다 nohup.out
.
질문은 :
답변
stdout과 stderr 을 하나의 파일로 리디렉션 할 수 있습니다 . Bash 4 (또는 Zsh와 같은 다른 것)를 사용하면 다음과 같이 쉽습니다.
nohup <some-command> &> output.log
nohup
출력을 설정하는 별도의 옵션이없는 이유는 알 수 없지만 셸에서 처리 할 수 있으면 실제로 옵션이 필요하지 않습니다.
답변
사용자 정의 파일에 출력 을 추가 하기 위해 >>
nohup 명령에서 사용할 수 있습니다 .
nohup php your_command >> filename.out 2>&1 &
이 명령은 오래된 데이터를 제거하지 않고 파일의 모든 출력을 추가합니다.
답변
nohup
SIGHUP을 무시하도록 프로세스를 시작하는 것보다 더 많은 방법이 있습니다 . 예를 들면 다음과 같습니다 (셸 함수로 작성).
nohup() {
setsid "$@"
}
nohup() {
("$@" &)
}
nohup() {
"$@" & disown
}
( setsid
또는 심지어 (setsid "$@" &)
최선의 선택 일 수도 있습니다.)
그들 모두는 당신이 당신의 자신의 리디렉션을 지정할 수 있습니다 >
, 2>
및 &>
/ >&
.