4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cronを使い、コマンドなどを定期的に自動実行させる

Posted at

概要

サーバ上で定期的にコマンドを実行させたいときに、シェルスクリプトをローカルで実行させる方法があるので、そちらをまとめる。

実行させるシェルの作成

まずは、シェルスクリプトを作成する。

vi シェルスクリプト名

シェルスクリプトの書き方は、およそ以下の通り。

  • 1回目、2回目に実行するコマンド
    • ここに、cat ファイル名とか、sudo ~~みたいなコマンドを入れる。
      これを、必要な分だけ続けていく
シェルの内容
#! /bin/bash
1回目に実行するコマンド
2回目に実行するコマンド
・・・以下略

次に、先ほど作成したシェルスクリプト名に実行権限を与える

sudo chmod 755 シェルスクリプト名

これで、以下のように入力する事で、シェルスクリプトの中身を実行する事ができる。

./シェルスクリプト名

cronの設定

以下のコマンドで一般ユーザから、rootに変更する。

su -

その後、以下のコマンドで、crontabを編集する。

crontab -e

crontabは、空白を開けて分、字などを記録していく。
書式はこんな感じ。

00 17 23 * * /home/username/sample_make_c_list.sh

左から、[分] [時] [日] [月] [曜日] [コマンド(スクリプトパス)]
上記の形で見ると、毎月23日17時に、sample_make_c_list.shを実行する
という形である。

  • 分は0~59の数字で指定
  • 時は0~23の数字で指定
  • 日は1~31の数字で指定
  • 月は1~12の数字で指定
  • 曜日は0と7が日曜日、1以降は順に、月、火、水、木、金、土
  • コマンド(フルパスで指定するかカレントディレクトリからの相対パスで指定する

保存したら、以下のコマンドで、登録されているシェルを確認できる。

crontab -l

また、実行できるかの確認のために、以下のコマンドで、crond.serviceが起動しているかを確認する。

systemctl status crond.service

activeになっているならOK

出力結果
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 金 2023-04-28 17:01:03 JST; 1 weeks 2 days ago
 Main PID: 592 (crond)
    Tasks: 1
   Memory: 1.2M

曜日判定と、定期処理で実行させる。

毎月第三金曜日にシェルを実行させるみたいな方法を設定させる方法。
シェルスクリプトを、以下の形で編集させる。

vi シェルスクリプト名
編集内容
#金曜日のみ実施する場合
a=` date +%w`
if [ "$a" == "5" ];then
1回目に実行するコマンド
2回目に実行するコマンド
・・・以下略
fi

dateコマンドの結果を%wとして取得し、その値をaとする。そして、その内容がifで指定する数字と等しいなら、if文内を実行するという内容になる。曜日は、上記のcrontabの書き方を参照すること。

crontabの設定

そして、これをcrontab -eで設定するときに、以下のように設定する。

00 17 24-31 * * シェルスクリプト名

この場合、24日~31日の間の17時でシェルスクリプトを実行し続ける形になる。
他にも、最初の週であれば、1~7、その次なら8~14といった形になる、

参考サイト

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?