다음 명령을 사용하여 백그라운드에서 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
.