web-dev-qa-db-ja.com

/etc/cron.d内でCrontabが実行されない

これが私がDebian Jessieで行ったことです:

  • apt-get install cron経由でcronをインストールします
  • backup_crontabファイルを/etc/cron.d/に配置します

ただし、タスクが実行されることはありません。

ここにいくつかの出力があります:

/# crontab -l
no crontab for root

/# cd /etc/cron.d && ls
backup_crontab

/etc/cron.d# cat backup_crontab
0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

特定のcrontabをアクティブにするために、またはcronの「サービス」自体をアクティブにするために何かすることはありますか?

34
Jivan

/etc/cron.dのファイルには、ジョブを実行するserもリストする必要があります。

つまり.

0,15,30,45 * * * * root /backup.sh >/dev/null 2>&1

また、権限と所有者:グループが正しく設定されていることを確認する必要があります(-rw-r--r--およびroot:rootが所有)

53
Stephen Harris

私が観察した別のことは、/etc/cron.dに拡張子を付けることはできません。私の特定のケースでは、シンボリックリンクがありました。

# my-job.crontab
* * * * * root echo "my job is running!" >> /tmp/my-job.log

$: ln -sf /home/me/my-job.crontab /etc/cron.d/
# This did not work -> job would not run

$: ln -sf /home/me/my-job.crontab /etc/cron.d/my-job
# This did work -> job ran fine

ファイル名の制限はrun-partのmanページに記載されています: http://manpages.ubuntu.com/manpages/xenial/man8/run-parts.8.html 、-regexを渡すことができますファイル形式を上書きするオプション。

ただし、デフォルトのcron動作は拡張機能なしで維持されています。以下のコメントを参照してください。 https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022

11

おそらく、cronファイルの最後から必要な空白行が抜けているだけだと思います。私は同じ問題を抱えていましたが、ここにリストされているすべて(ユーザー権限、ファイル名、cronバージョンなど)を確認したところ、/etc/cron.d/own_cronの最後のエントリの後に改行がないため、ファイル全体が原因であることに気付きました無視されます。

6
slac1024

このコンピューターの唯一のユーザーである場合は、crontab -eだけを使用することをお勧めします。コマンドを初めて実行するときに、エディターを選択するように求められます。次に、これを追加できます。

0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

通常のユーザーアカウントに変更する場合は、Sudo crontab -eを使用して、スケジュールするスクリプトをrootとして構成する必要があります。

crontab -lは、crontab -eを使用して設定すると、現在のcrontabのみを表示します。 /etc/cron.d /にcronファイルがある場合、crontab -lでは表示されません。

また、スクリプトがchmod +x /backup.shで実行可能であることを確認する必要があります。

2
clk

* Raspbianなどの* bianディストリビューションのCronの場合、Cronデーモンの-lパラメータを有効にする必要があります。これは、/etc/default/cron構成ファイルを使用してEXTRA_OPTSを有効にすることをお勧めします。

2
touchwood
  1. まず、/var/log/syslogファイルcron.dエラー

    Sudo grep "cron.d" /var/log/syslog |grep -i error

    errorsを見つけるのに役立ちます

  2. ない場合は、すべてを確認してくださいcron.dエントリと同じファイルに

    Sudo grep "cron.d" /var/log/syslog

1

cronのバージョンを確認してください。

Dillonのcrondを使用している場合、/etc/cron.dエントリにユーザーを含める必要はないようです。

私は残りの髪をほとんど引き抜いた後、これを理解しました。

さまざまなインストールによって/etc/cron.dにドロップされたエントリがいくつかあります。調査の結果、そのうちの1つが機能していたことがわかりました。ユーザーがいませんでした。そのため、ユーザーを他のユーザーから除外しました。そして彼らは働き始めた。

1
James Nelson