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)。そのコマンドを使用せずに使用すると、通常は機能します@rebootscreen -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

おすすめ記事