web-dev-qa-db-ja.com

シェルスクリプトからubuntuサーバーをシャットダウンする方法は?

私は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

これを解決するにはどうすればよいですか?

1
qinking126

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がこのエラーメッセージを出力するのは非常に奇妙です。

4
Biapy

コマンド「Sudohalt」を使用してUbuntuサーバーの電源を切ることもできます。

0
vembutech