後でアクセスできるように、再起動時に画面からブロックサーバーを起動したいと思います。
コマンド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)