nfexpire
したがって、crontabが実行する必要があるいくつかのコマンドのリストがあります/etc/crontab
。しばらくうまく機能しましたが、最近は完全に動作を停止しました。他のすべてのジョブは実行されます/etc/crontab
。 crontabデーモンが実行されていることを確認しました。systemctl status crond
エラーがあることを確認し/var/log/cron
て/var/log/messages
実行しましたが、何も見つかりませんでした。journalctl
端末を介してコマンドを実行できることを確認したので、問題はcrontabのどこかにあります。
文書/etc/crontab
:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
30 03 01 * * nfexpire -e "something"
ああ、最後に改行があることを確認しました。
たぶん権限の問題があるのでしょうか?
-rw-r--r--. 1 root root 891 Feb 6 2020 /etc/crontab
しかし、この設定で何ヶ月も何の問題もなく実行されているので、何を変更するのかわかりません。
追加情報
システム:セントース7
カーネル: 3.10.0-1160.el7.x86_64
答え1
これは構文の問題です。このファイルには追加のフィールドを追加する必要があります。ユーザー名:
30 03 01 * * username nfexpire -e "something"
その後、cronジョブがusername
。
その他の考慮事項。
- すべてのジョブが開始されるかどうか同時に?あまり良くない。この場合、すべてのジョブを実行し、1つのジョブしか持たないようにスクリプトを作成することをお勧めします。
- /etc/crontabをまったく編集しないことをお勧めします。ルート所有タスクの場合、ドロップディレクトリや
/etc/cron.d
その他のエントリ/etc/cron.*
(実行可能スクリプトの配置)を使用する場合、これらのタスクの開始時間はそれほど重要ではなく、重要なのは作業期間(毎日、毎週など)だけです。ユーザー実行ジョブを実行するには、専用ユーザーcrontabを使用します。crontab -e -u username
ジョブはその特定のcrontabが属する人の下で実行されるため、ユーザー名フィールドを省略できます。それにもかかわらず、これにより、システムアップデートはcrontabエントリを妨げません。 systemd
タイマーの使用を検討してください。
答え2
/etc/crontab ファイルはroot
各コマンドの前になければなりません。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"
30 03 01 * * root nfexpire -e "something"