しぐまろぐ

勉強したことや読んだ本について書きます。

ファイルを自動で削除する設定

概要

N予備校プログラミング入門2章10「通信をするボットの開発」で、ニコニコ動画のサイトから毎時ランキング情報をRSSで取得するシェルスクリプトを作成し、cronで自動化した。
放っておくと取得したXMLファイルが溜まっていくので、毎週自動的に削除するように設定した。

設定方法

1. ファイルを削除するスクリプトを作成する

新しいファイル(sample.sh)に以下を書く。

#! /bin/bash
$ find /path -name '*.xml' -mtime +6 -delete
$echo "削除完了"

/path : 削除したいXMLファイルが保存されているディレクトリを指定
-name '*.xml' : 末尾が.xmlのファイル名を対象にする
-mtime : ファイルのデータが最後に修正された日時
+6 : 7日以上前に作成されたファイルを対象にする

cronに設定する前に、./sample.shで実行して試してみる。「削除完了」が表示されれば成功。

なお、都合よく過去のファイルがない場合は、touchコマンドで作成できる。

$ touch --date="2020/05/26 21:00" test1.xml test2.xml


2. cronに設定する

まず、cronを設定するエディタを起動する。
間違って-rを押すと設定が全部消えるので慎重に。

$ crontab -e


cronの書式は以下の通り。

分 時 日 月 曜日 <コマンド>

曜日は0,7:日曜日、1:月曜日、2:火曜日、3:水曜日、4:木曜日、5:金曜日、6:土曜日となっている。
特に指定しない場合は、「*」とすると、設定できるすべての値を設定することになる(正規表現と同じ?)

たとえば毎週月曜の20時半にsample.shを起動した場合は、以下のように設定する。

$ 30 20 * * 1 /path2/sample.sh

path2 : 1.で作成したsample.shを格納したディレクトリを指定する

参考