5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TTDCAdvent Calendar 2024

Day 9

cron + rtcwake によるサーバ停止・起動の定期実行

Last updated at Posted at 2024-12-08

本記事は「 TTDC Advent Calendar 2024 」 9 日目の記事です。

はじめに

Linuxサーバを「週末の夜にOFF(スリープ)、週明けの朝にON」するような定期実行が必要になったので、設定方法を簡単にまとめました。

諸注意

  • rtcwake のマニュアル にある通り、全てのハードウェアで以下の手順が有効なわけではありません。
  • 再起動できなくなることを防ぐため、任意に電源OFF/ONできる(オンプレサーバなら物理的にOFF/ONできる)状態で設定&確認することをおすすめします。
  • date コマンドの時刻がずれていることで、動作テスト時に既に過ぎた時刻をcronに設定していることに気づかないことがあります。こちらも念のため事前確認を。

環境

  • Ubuntu 22.04

設定手順

1. ハードウェアクロックの確認

ハードウェアクロックがローカル時間なのかUTCなのかを以下で確認します。

$ cat /etc/adjtime
0.0 0 0
0
LOCAL

ファイル3行目に LOCAL または UTC のどちらが書かれているかで判断します(上記の場合はローカル時刻、ファイルがない場合は UTC )。

2. cron のログ出力有効化

上手く設定できていない場合の原因調査に備えてログを有効化しておきます。

以下のようにして rsyslog の設定ファイルを開き、
#cron.* /var/log/cron.log と書かれた行のコメントアウトを解除してから、

$ sudo nano /etc/rsyslog.d/50-default.conf

rsyslog を再起動します。

$ service rsyslog restart

3. crontab の設定

定期実行を crontab で設定します。

$ sudo su -  # 定期実行にroot権限が必要なのでユーザ切り替え
$ crontab -e # 設定ファイルを開く

具体例:設定ファイル末尾に以下を追記すると、毎週金曜日23時にシャットダウンし、月曜日5時に起動します。

## Shutdown at 11pm on Friday and starts up at 5am on Monday.
00 23 * * fri /usr/sbin/rtcwake -m off -l -t `date -d "next monday 05:00" +\%s`

`date -d "next monday 05:00" +\%s` の部分で、cron実行(シャットダウン)時の次の月曜日5時を計算しています。

設定後、ログ /var/log/cron.log を確認して期待通りの日時に停止・起動できていれば完了です。

$ tail /var/log/cron.log

crontab 設定記載の注意点

  1. ハードウェアクロックが UTC の場合は rtcwake-l オプションを外し -u を設定、 date コマンドにも -u オプションを指定します。
  2. date -d "next monday 05:00" +\%s の部分について、 \% として % に対するエスケープが必要です。

おわりに

最後まで読んでいただき、ありがとうございました!

今後も機械学習の活用を始め、開発環境やシミュレーションなど幅広く技術情報発信をしていく予定です!

最後になりますが、本記事の内容に誤りなどあれば、コメントにてご教授お願いいたします。

参考サイト

5
0
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?