再起動時に画面からスクリプトを実行する方法

再起動時に画面からスクリプトを実行する方法

後でアクセスできるように、再起動時に画面からブロックサーバーを起動したいと思います。

コマンド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)

関連情報