crontabは/etc/crontabにリストされているコマンドを実行しません。

crontabは/etc/crontabにリストされているコマンドを実行しません。

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"

関連情報