2
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とシェルスクリプトで定期実行プログラムを作る

Last updated at Posted at 2022-09-23

はじめに

この記事でやること

  • cronとシェルを使って定時実行するプログラムを作る
  • cronの設定方法

この記事でやらないこと

  • シェルスクリプトの書き方

投稿者の実行環境

  • Mac

手順

1.ゴール
2.実行するソースコードを作成
3.cron設定
4.動作確認

1. ゴール

  • 定期的に 今日の日付のディレクトリ を作ってくれるプログラムを作る

2. 実行するソースコードを作成

  • 実行したい shファイルを作る
  • 今回用意したのは下のようなプログラム (createDirectory.sh)
#!/bin/bash

#########################################
#
# 今日の日付でディレクトリを作成する プログラム
#
#########################################

#########################################
# 設定
#########################################
basePath=/hoge ... ディレクトリを作りたいベースパス
dirName=`date "+%Y%m%d"` # ディレクトリ名 ... 今日の日付

#########################################
# メインプログラム
#########################################

cd $basePath

# ディレクトリを作成する

# もしすでにディレクトリがあれば作らない
if [ -d $basePath/$dirName ]; then
    echo "すでにディレクトリ:${dirName}は存在します"
else
    echo "ディレクトリ:${dirName}を作成します"
    mkdir $basePath/$dirName
fi

3. cron設定

  • ターミナルで以下のコマンドを実行
    • crontab -e
  • エディターが開かれるので以下の記述を追加
* * * * * sh /hoge/createDirectory.sh
最初の * 印 5つで実行したい時刻を設定できる
* * * * *
曜日(0:日 ~ 7:土)
  • 追加したら :wq! で保存してエディターを閉じる

4. 動作確認

  • ~/D/test配下に今日の日付(2022/09/23)でディレクトリを作ってみる
  • 14:50 にプログラムが自動実行されるようにcronの時刻を設定する

cron実行

  • 14:49時点だとディレクトリは作成されていない

スクリーンショット 2022-09-23 14.49.53.png

cron実行

  • 14:53時点だと ディレクトリ 20220923 が作られている

スクリーンショット 2022-09-23 14.53.50.png

最後に

  • mac だと automator を使っても自動実行プログラムを組めるけど、UI操作が面倒だった
  • crontab ならcronの時刻設定をして、実行したいプログラムを指定するだけなので楽
  • 注意点としては、crontab -rでcron設定が吹き飛ぶらしい。
2
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
2
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?