30分ごとに自動的に再起動する方法は?


14

Ubuntuの再起動を30分ごとにスケジュールしたいと思います。コマンドまたはグラフィカルな方法はありますか?


12
私はちょうど興味があります:30分ごとに再起動する目的は何ですか?
ラファウチェーラク

回答:


30

これを行う最適な方法は、Ubuntuを30分ごとに再起動する理由によって異なります。

そのため、質問を編集して、これを行う理由を説明することをお勧めします。

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分後に実行されます。

  • ここでの利点の1つは、管理者が直前に発表されたシャットダウンをでキャンセルできること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 [テスト自体が行われたかを確認します。


12

Session Managerにリブートすることを伝えることで、これを行うのが大好きです。これはルート権限なしで実行でき、システムが再起動されることを警告するウィンドウが表示されます。必要に応じて再起動をキャンセルすることもできます。

グラフィカルな方法-好ましい方法

gnome-scheduleUbuntu Software Centerからインストールします。追加のものをインストールしたくない場合は、ターミナルウェイで行います。

gnome-scheduleダッシュから開き、新しい繰り返しタスクを作成して、これらのオプションを設定します。

  • 説明:あなたが望むものは何でも
  • コマンド: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • コマンドのすぐ下にあるXアプリケーションを選択します。
  • 日時、詳細:
    • 分:0,30

他のオプションはデフォルト値のままにします。追加をクリックします。


ターミナルウェイ-追加のソフトウェアは不要

ターミナルから実行:

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セッションと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を手動でアンインストールしていないことを前提に、すべての環境で動作します。


6

sudo crontab -eコマンドラインから実行し、この行をファイルに追加します。

0,30 * * * * reboot

これは、rebootルートとして30分ごとにコマンドを実行するようシステムに指示します。時間の構文の概要については、http//linuxmoz.com/crontab-syntax-tutorial/を参照してください。


3
としてreboot実行する必要があるためroot、これは機能せず、ユーザーの個人crontabに追加されるため、その非rootユーザーとして実行されます。(パスワードの入力を求めて失敗するため、同じものsudo rebootも機能しませsudoん。)/etc/crontab代わりにこれを使用する必要があります(構文が若干異なることに注意してください)。
エリアケイガン

1
sudo crontab -ecronエントリを発行して作成できます。
タス

-3

cron30分ごとにジョブをスケジュールするために使用します。単に持っているシェルスクリプトでその仕事を指す

reboot

初期化。

cronrootとして実行されるため、アクセス権に関して特別なことをする必要はありません。

更新

はい、実際、どのシステムでもユーザーベースのcrontabを許可しません(ユーザーレベルのスケジュールされたタスクをユーザーに許可するより良い方法があります)タスク。ログのローテーションなど(今日でも発生しています)

リブートは正しく動作するためにルートとして実行する必要があります。代替手段はスティッキービットを設定することです。そのため、通常のユーザーとして実行すると実際にルートとして実行され、期待どおりに動作しますユーザーが自由に再起動します。

SUDOへの呼び出しを自動化することもできますが、SUDOを使用してパスワードの必要性を自動化できるかどうかはわかりません(頻繁に使用しないため、ルートに直接ドロップすることをお勧めします) SUを使用したシェル)

システム全体のcrontabで設定すると、すべてがルートとして実行されるため、私のステートメントは正確です(システム全体のcrontabを使用する必要があることを言及するのを怠りました)

「なぜスクリプトでラップするのか」という質問については まあ、なぜですか?OPがそれをシェルスクリプトに入れた場合、将来のある時点で追加する必要があり、crontabを開いてジョブを見つけ、削除し、シェルスクリプトに置き換える代わりに、単にスクリプトに追加します次に、古い+新しいinを使用してスクリプトを記述します。

システム管理者/開発者として20年以上、Ultrix / SolarisやVAXにまで遡るシステムで1つの重要なポイントを教えてくれました。

最初から簡単にできるようになれば、それは一生簡単なままです。

私は、多くの現代のシステム管理者が持っている「最小限の」態度を実際に得ていません。最近のほとんどのサーバーは、私がこれまでに始めたどの20倍以上にも簡単に強力であり、この種のシナリオ(シェルスクリプトでのラップ)が推奨されていました。

本当にハードコアなUnix / Linuxを使いたくない場合は、その場合はすべてをcronエントリにタグ付けし、すべてを実行する方法でパイプします:-)

しかし、私は脱線し、また、最近多くの人が深い終わりに投げ込まれ、物事を機能させるように言われたことを理解しています。そのため、彼らは座って新しいテクニックを学ぶ時間(そして通常は傾き)を欠いています(またはこの場合は古い)、または仕事以外でこのようなもので遊んでみたい。

私は個人的に、実行するサーバーの中に、純粋に遊ぶためだけに専用のサーバーを持っているので、このようなことをテストすることができます... AまたはBの方が良いので、理由のないことをアドバイスしますこの。


私の更新を参照してください..ご希望の場合は、今すぐ私の1ポイントを返すことができます
;

もう一度やり直してください...
辛抱してください...- shawty

2
これはもはや答えではありません!(また、スティッキービットsetuidビットを混同しています。)
エリアカガン

はい、それは答えです、私はそれをタイプし、答えとしてそれを追加したので、それは答えです!!!
ショーティー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.