Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2810

定期的に空になるtemporaryディレクトリを作る

$
0
0

環境

macOS Catalina 10.15.6
bash 5.0.18

やりたいこと

プログラミングをしていると何かとtmpディレクトリにお世話になるが、しばらくするとゴチャゴチャになってしまうので、それを解消するため、定期的に空にしてくれるプログラムを作りたい

そもそもtmpは一時的なという意味で、使うときはずっと残しておくことは想定していない(はず)ので、自動で空にしても大丈夫

仕様

試験的に、毎週月曜日の12:00に空にする。
ただ、流石に即削除をしてしまうと事故が起きる可能性があるので、一週間はサブのディレクトリに保存しておき、次の週に新しいデータと取り換える。

ディレクトリ構造

HOME
├── tmp_dir
│   └── README.txt
├── tmp_dir_sub
│   └── README.txt
└── tmp_reset.sh

※HOMEはホームディレクトリ
tmp_dirがメインのディレクトリで、tmp_dir_subが事故防止用のディレクトリとなっている。また、それぞれのディレクトリ内にはREADME.txtが置いてあり、注意書きが書かれている。
以後、tmp_dirをメインディレクトリ、tmp_dir_subをサブディレクトリと表記します。

実装したもの

tmp_reset.sh
# サブディレクトリにメインディレクトリの状態をコピーrm-rf ~/tmp_dir_sub
cp-r ~/tmp_dir ~/tmp_dir_sub

# メインディレクトリの初期化rm-rf ~/tmp_dir
mkdir ~/tmp_dir

# それぞれのディレクトリのREADME.txtの作成cd ~/tmp_dir
touch README.txt
echo"This is temporary directory.">> README.txt
echo"This directory is reset by ~/tmp.sh at noon of every monday.">> README.txt
echo"But, the datas will be saved until next week.">> README.txt
cd ~/tmp_dir_sub
echo"Warning! this directory will be deleted, because copy from ~/tmp_dir at noon of every monday."> README.txt

これを実行すると、メイン・サブディレクトリと、それぞれのディレクトリに注意書きが書かれたREADME.txtが生成される。(英語は多分正しくない)

最後の準備

最後に、自動的にこのスクリプトを実行する準備をしておく。

~ $ chmod 755 tmp_reset.sh
~ $ crontab -e # 以下を追記
    00 12 * * 1 bash ~/tmp_reset.sh

これで準備はできた。crontab -e実行後にメッセージボックスが出た場合、OKや許可を押す。
chmodはパーミッションの変更、crontabはコマンドの自動実行の設定を行い、こうすることで月曜日の12:00にホームディレクトリのtmp_reset.shが実行される。

終わりに

確認してみると、想定通りの動作をしていました。
ただ、スリープ状態だとcrontabは呼び出されないので、スリープ解除の機能を使うなど、少し工夫が必要です。(環境によるのでここでの紹介は省きます。「OS名 crontab スリープ」などで出てきます。)


Viewing all articles
Browse latest Browse all 2810

Trending Articles