나중에 액세스할 수 있도록 재부팅 시 화면에서 차단 서버를 시작하고 싶습니다.
명령 screen -d -m /home/dataserv/www/start_production_server.sh
자체는 호출 위치에 관계없이 잘 작동하지만 crontab 항목으로 사용되는 경우에는 작동하지 않습니다.
dataserv@dataserv-dev:~$ crontab -l
# m h dom mon dow command
@reboot echo "test" > /home/dataserv/reboot.txt 2>&1
@reboot screen -d -m /home/dataserv/www/start_production_server.sh
테스트 항목이 제대로 작동하는데 왜 실패하는지 혼란스럽습니다.
답변1
screen
명령을 실행 cron
하고 캡처하세요.표준 에러이 메시지를 신고하세요:
Must run suid root for multiuser support.
빠른 검색 결과 세션 이름을 구성할 장치 screen
가 없을 때 tty
이 메시지가 인쇄되는 것으로 나타났습니다. (보통 세션 이름은 다음과 같습니다 11597.pts-0.myhostname
.) 추가 읽기매뉴얼 페이지이 -S
플래그를 사용하여 세션 이름을 지정할 수 있음을 보여주세요.
screen -md -S "atboot.$(hostname)" ...
"atboot" 레이블에는 특별한 것이 없습니다. 부팅 시 프로세스가 시작되고 tty가 없음을 상기시키기 위해 이 레이블을 사용합니다.
이를 귀하의 사양과 crontab
결합하면 다음과 같은 결과가 나옵니다.
# m h dom mon dow command
@reboot echo "test" > /home/dataserv/reboot.txt 2>&1
@reboot screen -d -m -S "atboot.$(hostname)" /home/dataserv/www/start_production_server.sh
실행 screen -ls
하면 다음과 유사한 출력이 표시됩니다.
11732.atboot.myhostname (03/01/16 00:25:01) (Detached)