私はubuntuサーバーをシャットダウンするための簡単なシェルスクリプトを書きました。次に、毎日23:59にこのスクリプトを実行するcronジョブを作成しました。
#!/bin/bash
Sudo shutdown -h now
このエラーメッセージが表示されました:
Sudo: no tty present and no askpass program specified
コードからSudoを削除すると、別のエラーメッセージが表示されました。
/home/qinking126/scripts/test.sh: line 3: shutdown: command not found
これを解決するにはどうすればよいですか?
Cronスクリプトがrootとして実行されていることを確認し、shutdown
を次のコマンドで指定されたフルパスに置き換えます。
command -v shutdown
Ubuntu GNU/Linux(および一般的にGNU/Linux)では、/sbin/shutdown
:
#!/bin/bash
/sbin/shutdown -h now
/etc/cron.d/midnight-shutdown
のような名前で、以下を含むファイルを追加することに注意してください。
59 23 * * * root test -x /sbin/shutdown && /sbin/shutdown -h now
完全なbashスクリプトのオーバーヘッドなしであなたが望むことをするべきです。これをすばやくインストールするためのコードは次のとおりです。
echo '59 23 * * * root test -x /sbin/shutdown && /sbin/shutdown -h now' \
| Sudo tee '/etc/cron.d/midnight-shutdow'
Sudo service cron reload
編集:あなたのコメントに返信するには、設定の別の可能性は次のとおりです:
echo '59 23 * * * test -x /sbin/shutdown && /sbin/shutdown -h now' \
| Sudo tee '/etc/cron.d/midnight-shutdow'
Sudo service cron reload
Cronがこのエラーメッセージを出力するのは非常に奇妙です。
コマンド「Sudohalt」を使用してUbuntuサーバーの電源を切ることもできます。