koguti ターミナル上で動作する出納帳 フリーソフト

Windowsにも Linux にも対応 10兆円規模に対応

Linuxで自動実行

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に選択すると
イメージ 1
上の画面が出ます。

コメント行の下に

* * * * * /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で自動実行ができるようになりました。