it-swarm-ja.com

起動後24時間ごとにrootコマンドを実行する

Ubuntu11.04マシンでrootとしてコマンドを24時間ごとに実行したいと思います。このマシンは常にオンになっているわけではありませんが、オンになっている場合は、一度に数日間オンのままにすることができます。必要な間隔でこのコマンドを実行するようにcrontabを正しく構成するにはどうすればよいですか?また、ルートとしてcronジョブを実行することについて知っておくべき特別なことはありますか?この機械を使っているのは私だけです。

1
Matthew G

実行するスクリプトをディレクトリ/etc/cron.dailyに追加するだけです。スクリプトは1日1回 anacron によって実行されます。

man 8 anacronからの抜粋:

Anacronを使用して、日数で指定された頻度でコマンドを定期的に実行できます。 cron(8)とは異なり、マシンが継続的に実行されているとは想定していません。したがって、24時間稼働していないマシンで使用して、通常はcronによって制御される日次、週次、および月次のジョブを制御できます。

5
mvp

ルートのcrontabを編集するには、次のコマンドを実行します。

_Sudo crontab -e
_

次のように行を入力します。

_0 0 * * * /usr/sbin/ntpdate-debian -s
_

これにより、指定されたコマンドntpdateがスイッチ_-s_で真夜中のストロークごとに1回実行されます(形式のドキュメントについてはinfo 'crontab(5)'を参照、またはcrontabのコメント付きの最初の行のみを参照してください)自体)。

いくつかの小さなポインター:

  • Crontabのコマンドは通常、_/bin/sh_を介して実行されることに注意してください。これは、DebianベースのシステムではBashではなくDashです。コマンドで Bashisms を使用しないように注意してください。私の経験では、間違ったリダイレクトや、エスケープする必要のある文字に関する誤った仮定を目にすることは珍しくありません。
  • PATH変数はrootと通常のユーザーの間で異なる可能性があるため、バイナリへの完全なパスを指定することをお勧めします。 PATH変数が異なるために、あるコマンドが別のコマンドをシャドウイングしている状況を見てきました。これは不必要な複雑さです。

    また、パスルックアップの最初のプログラムを単純に実行することは、セキュリティ上のリスクと見なすことができます。これは、設定がずさんな場合、誰かがバイナリを置き換える可能性があるためです(システムに対してそのような権限がある場合は、とにかくある程度はできるでしょうが、それでも)。

Cronは、マシンがその時点で実行されている限り、24時間ごとにコマンドを実行します。計画された実行でマシンがオフにされた場合にマシンを「追いつく」ようにしたい場合は、まさにこの目的を持つ anacron を確認する必要があります。

0