![crontab이 스크린 세션을 생성하지 않습니다](https://linux55.com/image/204013/crontab%EC%9D%B4%20%EC%8A%A4%ED%81%AC%EB%A6%B0%20%EC%84%B8%EC%85%98%EC%9D%84%20%EC%83%9D%EC%84%B1%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.png)
나는 사용하려고
@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