web-dev-qa-db-ja.com

anacronがcrontabユーザーファイルを呼び出さないのはなぜですか?

特別なコマンドを毎日起動しますが、ユーザー固有のユーザーであるため、/ etc/cron.d /に入れたくありません!

pg@pipoTower: ~$ crontab -l
# m h  dom mon dow   command
0 0 * * * updatedb -l 0 -o ~/.externalharddisk.db -U /var/autofs/removable/usbData

crontab -eコマンドは、ファイルを/var/spool/cron/crontabs/userName

しかし、それがanacronによって呼び出されない理由を知らない....

usr@Tower: ~/$ cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

# These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly
3

これには2つの回避策が見つかりました...

オプション1:cron.dailyスクリプトを非rootユーザーとして実行する

/etc/cron.dailyのスクリプトはrootとして実行されますが、rootは他の人として実行するためにパスワードを必要としません。そこで、次のようなスクリプトを配置します。

su myuser -c "/home/myuser/dostuff.sh"

これを設定するためにrootになる必要がある場合の主な欠点。

オプション2:パーソナルアナクロンを設定する

~/.anacron/daily~/.anacron/weekly~/.anacron/monthlyなどの独自のanacronスクリプトディレクトリを作成します。毎日のスクリプトを毎日のディレクトリに置きます。

次に、~/.anacron/anacrontabなどの独自のanacrontabファイルを作成します。そして、それをこう言ってください:

1   5   cron.daily  run-parts --report /home/myuser/.anacron/daily
7   10  cron.weekly run-parts --report /home/myuser/.anacron/weekly
@monthly    15  cron.monthly    run-parts --report /home/myuser/.anacron/monthly

また、~/.anacron/spoolなど、anacronタスクのスプールディレクトリを作成します。

最後に、anacronを実行する必要があります。このために頻繁にcronジョブを使用してください。 crontab -eを実行して追加

* * * * * /usr/sbin/anacron -t /home/myuser/.anacron/anacrontab -S /home/myuser/.anacron/spool

これにより、設定でanacronが毎分実行され、ジョブが期限切れの場合、anacronが実行します。必要に応じて頻度を減らすことができます。ほとんどのユーザーにとっては1時間ごとで十分でしょう。

9
ge32