백그라운드에서 프로세스를 실행할 수 없습니다.

백그라운드에서 프로세스를 실행할 수 없습니다.

다음 명령을 사용하여 백그라운드에서 cp.sh 스크립트를 실행합니다.

nohup sh cp.sh < /dev/null & > /dev/null &
output: Invalid null command.

이 "잘못된 빈 명령"에 대한 해결책은 무엇입니까?

답변1

사이에 공백을 두었습니다 . & >이는 필수입니다. &>그러면 STDOUT 및 STDERR이 다음 파일로 리디렉션됩니다.

따라서 다음이 필요합니다.

nohup sh cp.sh < /dev/null &> /dev/null &

쉘이 이를 지원하지 않는 경우 &>POSIX 메소드를 사용하여 STDOUT 및 STDERR을 리디렉션하십시오.

nohup sh cp.sh </dev/null >/dev/null 2>&1 &

답변2

메시지는 구문에 대해 불평하는 쉘에서 나옵니다.

& > /dev/null &

이는 실제로 다음을 포함하는 명령줄이지 a command between two &만 명령에는 명령 이름이 없습니다 stdout.

참고: 아직 모르시는 분들을 위해 말씀드리자면, 12년 전부터 Solaris에서는 nohup다음을 호출하여 이미 실행 중인 프로세스를 실행할 수 있습니다.

nohup -p <pid>

또는

nohup -g <pgid>

이는 nohup.out 파일을 생성하고 stdout커널의 파일 설명자를 해당 파일을 참조하는 파일 설명자로 대체합니다 nohup.out.

관련 정보