crontab이 스크린 세션을 생성하지 않습니다

crontab이 스크린 세션을 생성하지 않습니다

나는 사용하려고

@reboot /usr/bin/screen -dmS nfc /home/pi/.nvm/versions/node/v17.8.0/bin/npm run --prefix /home/pi/nfc/ dev

시작 시 스크립트를 실행합니다 /home/pi/nfc/. 안타깝게도 재부팅한 후에는 스플래시 화면이 표시되지 않습니다( 사용 screen -ls). 해당 명령을 사용하지 않고 사용하면 @reboot일반적으로 작동합니다( screen -ls내 화면 나열).

reboot /usr/bin/screen -dmS test예상대로 작동합니다.

grep CRON /var/log/syslog보여줘 Mar 25 17:22:05 pi CRON[509]: (pi) CMD (/usr/bin/screen -dmS nfc /home/pi/.nvm/versions/node/v17.8.0/bin/npm run --prefix /home/pi/nfc/ dev).

내가 뭘 잘못하고 있는지 어떤 아이디어가 있습니까?

답변1

이 답변은 npm 스크립트가 어느 시점에 종료되어 스크린 세션이 종료된다는 가정을 기반으로 합니다.

나중에 몇 가지 명령을 실행하여 화면을 "사용 중"으로 유지하면 이를 방지할 수 있습니다.

screen -dmS foo sleep 10s

10초 후에 종료됩니다.

screen -dmS bar bash -c 'sleep 10s; bash'

절전 모드 후에 bash 쉘을 시작하고 screen종료를 방지합니다.


crontab에서는 다음과 같이 보일 것입니다:

@reboot /usr/bin/screen -dmS nfc bash -c '/home/pi/.nvm/versions/node/v17.8.0/bin/npm run --prefix /home/pi/nfc/ dev; exec bash'


목적이 스크립트와 상호 작용하는 것이 아니라 npm스크립트의 로그 출력을 보존하는 것이라면 다음을 사용하는 대신 출력을 로그 파일로 리디렉션할 수도 있습니다 screen.

@reboot /home/pi/.nvm/versions/node/v17.8.0/bin/npm run --prefix /home/pi/nfc/ dev >> /home/pi/npmscript.log

관련 정보