LoginSignup
17
8

More than 3 years have passed since last update.

systemd/timerを使ってサーバを毎晩リブートさせる

Posted at

サーバを定期的に再起動したいという需要は常に存在します。

完璧に書かれたシステムにおいてメモリが一方的に減っていくなんてことはおこらないはずですが、どっかの誰かが開放し忘れたコードにより徐々に減っていく空きメモリ。原因を追求するより、定期的に再起動しちゃえば一発解決だよね🧙

なんか時々落ちるこのサービス、いっそ定期的にサーバを再起動しておけば、たとえ落ちたとしても復活するから、大体の時間は動いてるサービスにできるんじゃないの?😈

いいことか悪いことか、かっこいいかどうかはともかくとして、定期的にサーバを再起動しておけば解決できるある種の問題が存在することは事実です。問題の先送りだって一つの技術力ですし(後ろめたいときって前置きが長くなるよね)

ともかくそういうわけで何らかの理由でサーバを定期的に再起動させたいときの設定です。

CentOS7から標準になったSystemdのTimer機能を使います

serviceの作成と登録

$ sudo nano /etc/systemd/system/reboot.service
reboot.service
[Unit]
Description=Scheduled Reboot

[Service]
Type=simple
ExecStart=/usr/bin/systemctl --force reboot

こうやって出来たserviceファイルを

sudo systemctl enable reboot

で登録します。

この段階で、

sudo systemctl start reboot

ってたたいてあげると、サーバが予告なく再起動するかと思います。

Q: rebootコマンドじゃないの?
A: rebootとかhaltはCentOS7から非推奨になりました
10.4. システムのシャットダウン、サスペンド、休止状態 Red Hat Enterprise Linux 7 | Red Hat Customer Portal

Timerの作成と登録

serviceの作成と登録

$ sudo nano /etc/systemd/system/reboot.timer
reboot.timer
[Unit]
Description=schedule reboot

[Timer]
Unit=reboot.service
OnCalendar=*-*-* 5:30:00

[Install]
WantedBy=timers.target

この例では毎朝5:30に再起動する記述になっています

sudo systemctl enable reboot.timer
sudo systemctl start reboot.timer

で登録します。

$ sudo systemctl list-timers --all
NEXT                         LEFT          LAST                         PASSED   UNIT                         ACTIVATES
Tue 2019-10-29 17:04:33 JST  4min 59s left n/a                          n/a      systemd-tmpfiles-clean.timer systemd-t
Wed 2019-10-30 05:30:00 JST  12h left      n/a                          n/a      reboot.timer                 reboot.se
n/a                          n/a           n/a                          n/a      systemd-readahead-done.timer systemd-r

という具合に、次の5:30にrebootが予定されていれば出来上がりです。よい再起動ライフを!

17
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
8