Linuxで望みの時間にコマンドを実行するには、cronを使います。
私は、初めて使ったので上手く行くまでにポイントとなったところを覚書します。
まず、テストのために、メッセージをログファイルに書く実行可能シェルスクリプトを用意しておきます。
今、この記事は、nanoというテキストエディタで書いています。
理由は、crontabを書くときに必要になるからです。
選択肢は3つありますが、私はnanoくらいしか使えないのです。(一番簡単て書いてあります)
ほぼ普通のテキストエディタと同じように使うことができます。
とりあえず覚えておくべきことは、
上部ステータスバーにファイル名が表示されるということ
保存は、Ctr+O(オー)で、デフォルトはファイル名を入れてエンターするとカレントディレクトリに保存されるということ
あるいは、おなじみのCtr+Sでも保存できます。
今回は、Ctr+Sで保存すればOKです。
しかし、上部ステータスバーを見ると /tmp/crontab.GU0qly/crontab となっていてこれが毎回変わっているようです。
実際には、どこに保存されるのか調べてみると/var/spool/cron/crontabsに保存されているようです。
今回は、実際に動作するかどうかの確認のために、
#!/bin/bash
######################################
#メッセージcron #コマンド msg_cron
######################################
echo "メッセージcronしました"`date +'%Y-%m-%d %H:%M:%S'` >> cron_test_log
というログファイルにメッセージを吐くだけのコマンドを作成して、実験しました。
$ corontab -e
で実行すると最初にエディタの選択を尋ねられます。
エディタをnanoに選択すると
上の画面が出ます。
コメント行の下に
* * * * * /home/user/bin/msg_cron
(アスタリスクの間はスペースで区切る)
と入力してCtr+Sで保存、Ctr+Xでnanoを終了して設定完了です。
コマンドの書式はググって調べると丁寧な解説が見つかります。
このコマンドでは1分おきに、実行する設定になっています。
ここで大事なのはコマンドは、フルパスで入れることです。
3分後に
$ cat cron_test_log で確認すると
メッセージcronしました2019-04-12 21:57:01
メッセージcronしました2019-04-12 21:58:01
メッセージcronしました2019-04-12 21:59:01
と1分おきに実行されているのが確認されました。
このままおいておくと、永遠にログを毎分書き続けるので、crontab -e で編集して消しましょう。
あと、注意点として
決して、$ corontab -r と打たないことです。
ユーザー設定のcrontabが全部消されてなくなってしまいます。
これでLinuxで自動実行ができるようになりました。