재부팅시 화면에서 스크립트를 실행하는 방법

재부팅시 화면에서 스크립트를 실행하는 방법

나중에 액세스할 수 있도록 재부팅 시 화면에서 차단 서버를 시작하고 싶습니다.

명령 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)

관련 정보