Ubuntuの再起動を30分ごとにスケジュールしたいと思います。コマンドまたはグラフィカルな方法はありますか?
Ubuntuの再起動を30分ごとにスケジュールしたいと思います。コマンドまたはグラフィカルな方法はありますか?
回答:
これを行う最適な方法は、Ubuntuを30分ごとに再起動する理由によって異なります。
そのため、質問を編集して、これを行う理由を説明することをお勧めします。
ユーザーがローカルまたはリモートでマシンを使用している可能性があると仮定すると、警告なしでユーザーの下からUbuntuを再起動しないようにするのが最善です。したがって、reboot
コマンドをスケジュールするのではなくshutdown
、ユーザーに警告するようにコマンドをスケジュールすることをお勧めします。
5分前に警告を表示して30分ごとにシャットダウンをスケジュールするには、これを/etc/crontab
以下に追加します。
#minute hour mday month wday user command
*/30 * * * * root shutdown -r +5
コメントである最初の行を追加する必要はありません。わかりやすくするために、既に含まれているようなものを含めました。
-r
から5分後に(+5
)再起動のためにシステムが停止するようにスケジュールされます。30分ごとに実行されます(*/30
)。man cron
およびを参照してくださいman 5 crontab
。+5
、再起動を警告された後、持っているどのくらいのユーザーに変更するには何か他のものに。0,30
あなたがそれを好めば、分未満も動作します。(同様に、それが20分ごとであれば、書き込み*/20
またはができます0,20,40
。)/sbin
れたPATH
変数にあることを確認してください/etc/crontab
。それ以外の場合、shutdown
(の下でcommand
)として起動する必要があります/sbin/shutdown
。その時点でマシンが稼働している場合、コマンドは常に30分マークで実行されます。これにより、シャットダウンが30分ごとにアナウンスされ、1時間の5分35分後に実行されます。
sudo shutdown -c
です。shutdown
んが、スケジューリングの場合は同様に適用されますreboot
。)その場合は、質問を編集して特定のニーズを説明してください。(anacron
これをお勧めしますが、時間間隔が短すぎます。)管理者が自動的にスケジュールされたすべての再起動を簡単に一時停止できるように、これを設定できます。
#minute hour mday month wday user command
*/30 * * * * root [ -e /etc/noautoreboot ] || shutdown -r +5
これは同じ方法でリブートをスケジュールします-30分ごとに5分間の警告があります-ただし、というファイルがnoautoreboot
存在する場合、リブートをスケジュールしません/etc
。
この制御ファイルは、管理者が以下を使用して作成できます。
sudo touch /etc/noautoreboot
以下で削除できます:
sudo rm /etc/noautoreboot
それはだと注意ファイルが存在するか否かの重要なこと、それに何が含まれているか、ではありません。
再起動がスケジュールされ、ユーザーに警告が表示された場合、ファイルが作成され、(すぐに予定されている)再起動が引き続き発生します。
これはどのように作動しますか?以下の短縮形として、短絡評価または演算子(||
)を使用します。
/etc/noautoreboot
存在しない場合は、実行しshutdown -r +5
ます。
この回答は、短絡および and または演算子がどのように実行できるかを説明していますif
- then
ロジック。簡潔で直感的で非常に非公式な説明については、次のようにコマンドを読むことができます。
/etc/noautoreboot
存在します!または、を実行しshutdown -r +5
ます。
参照してくださいman [
テスト自体が行われたかを確認します。
Session Managerにリブートすることを伝えることで、これを行うのが大好きです。これはルート権限なしで実行でき、システムが再起動されることを警告するウィンドウが表示されます。必要に応じて再起動をキャンセルすることもできます。
gnome-schedule
Ubuntu Software Centerからインストールします。追加のものをインストールしたくない場合は、ターミナルウェイで行います。
gnome-schedule
ダッシュから開き、新しい繰り返しタスクを作成して、これらのオプションを設定します。
dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
他のオプションはデフォルト値のままにします。追加をクリックします。
ターミナルから実行:
crontab -e
次の行を追加します。
0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
保存して終了します。nano
(デフォルトの)を使用していると仮定して、Ctrl + oおよびCtrl + xを押します。
DISPLAYが実際にと異なる場合、これは機能しないことに注意してください:0
。このため、この方法は推奨されません。しかし、正直なところ、30分ごとにコンピューターを再起動する場合、ほとんどの場合、DISPLAYは常にになります:0
。
上で説明した両方の方法は、GnomeセッションとUnityの両方にあるいくつかのgnomeコンポーネントに依存しています。これを別の環境(KubuntuのKDE、KubuntuのLXDEなど)で実行する場合は、代わりにコマンドをこの環境に置き換えてください。
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
これは確認を求めず、すぐに再起動しますが、ConsoleKitを手動でアンインストールしていないことを前提に、すべての環境で動作します。
sudo crontab -e
コマンドラインから実行し、この行をファイルに追加します。
0,30 * * * * reboot
これは、reboot
ルートとして30分ごとにコマンドを実行するようシステムに指示します。時間の構文の概要については、http://linuxmoz.com/crontab-syntax-tutorial/を参照してください。
reboot
実行する必要があるためroot
、これは機能せず、ユーザーの個人crontabに追加されるため、その非rootユーザーとして実行されます。(パスワードの入力を求めて失敗するため、同じものsudo reboot
も機能しませsudo
ん。)/etc/crontab
代わりにこれを使用する必要があります(構文が若干異なることに注意してください)。
sudo crontab -e
cronエントリを発行して作成できます。
cron
30分ごとにジョブをスケジュールするために使用します。単に持っているシェルスクリプトでその仕事を指す
reboot
初期化。
cron
rootとして実行されるため、アクセス権に関して特別なことをする必要はありません。
はい、実際、どのシステムでもユーザーベースのcrontabを許可しません(ユーザーレベルのスケジュールされたタスクをユーザーに許可するより良い方法があります)タスク。ログのローテーションなど(今日でも発生しています)
リブートは正しく動作するためにルートとして実行する必要があります。代替手段はスティッキービットを設定することです。そのため、通常のユーザーとして実行すると実際にルートとして実行され、期待どおりに動作しますユーザーが自由に再起動します。
SUDOへの呼び出しを自動化することもできますが、SUDOを使用してパスワードの必要性を自動化できるかどうかはわかりません(頻繁に使用しないため、ルートに直接ドロップすることをお勧めします) SUを使用したシェル)
システム全体のcrontabで設定すると、すべてがルートとして実行されるため、私のステートメントは正確です(システム全体のcrontabを使用する必要があることを言及するのを怠りました)
「なぜスクリプトでラップするのか」という質問については まあ、なぜですか?OPがそれをシェルスクリプトに入れた場合、将来のある時点で追加する必要があり、crontabを開いてジョブを見つけ、削除し、シェルスクリプトに置き換える代わりに、単にスクリプトに追加します次に、古い+新しいinを使用してスクリプトを記述します。
システム管理者/開発者として20年以上、Ultrix / SolarisやVAXにまで遡るシステムで1つの重要なポイントを教えてくれました。
最初から簡単にできるようになれば、それは一生簡単なままです。
私は、多くの現代のシステム管理者が持っている「最小限の」態度を実際に得ていません。最近のほとんどのサーバーは、私がこれまでに始めたどの20倍以上にも簡単に強力であり、この種のシナリオ(シェルスクリプトでのラップ)が推奨されていました。
本当にハードコアなUnix / Linuxを使いたくない場合は、その場合はすべてをcronエントリにタグ付けし、すべてを実行する方法でパイプします:-)
しかし、私は脱線し、また、最近多くの人が深い終わりに投げ込まれ、物事を機能させるように言われたことを理解しています。そのため、彼らは座って新しいテクニックを学ぶ時間(そして通常は傾き)を欠いています(またはこの場合は古い)、または仕事以外でこのようなもので遊んでみたい。
私は個人的に、実行するサーバーの中に、純粋に遊ぶためだけに専用のサーバーを持っているので、このようなことをテストすることができます... AまたはBの方が良いので、理由のないことをアドバイスしますこの。