2つのcrontabファイルを作成するとします。
/tmp/my-crontab
/root/my-alternate-crontab
各crontabファイルは、異なるスクリプトを実行するために配布されています。
Cronjobを開始すると、最初のものは古いものに置き換えられます。
crontab -u smarak /tmp/my-crontab
crontab -u smarak /root/my-alternate-crontab
上記は単一ユーザーでも可能ですか?
単一のcrontabを回避する2つの方法。
Crontabエントリを~/crontab.d/thisandthat.cron
などのディレクトリ内のファイルに配置し、それらからの変更をシステムのcrontabにコミットします。
cat ~/crontab.d/*.cron | crontab -
拡張子.cron
は、エディターからのバックアップファイルを誤って含めないようにするためのものです。すべてのファイルが連結されるため、ファイルに設定された変数は、後で来るファイルにも適用されることに注意してください。
また、/etc/cron.hourly
とその仲間がDebianに実装される方法と同様のことを行うこともできます。メインの/etc/crontab
には、次のようなルールが含まれています。
17 * * * * root cd / && run-parts --report /etc/cron.hourly
複数のプログラムを実行するために、単一のcrontabエントリーを用意することができます。 Debianのrun-parts dir
はfor f in dir/* ; do "$f" ; done
に似ていますが、編集者などによって作成されたバックアップファイルが実行されないように、奇妙なファイル名をスキップする点が異なります。
いいえ。各ユーザーには1つのcrontabがあります。どうして? crontabは、単一のユーザーに関連付けられたすべてのcronジョブの「テーブル」(「タブ」)であるためです。
cron
で複数のものを実行したい場合は、crontabに複数の行を追加するだけです。
Cronジョブ指定を含む複数のファイルがある場合は、それらを連結するだけです。
cat crontab1 crontab2 crontab3 >my-crontab
crontab my-crontab
実際のエントリを読んですぐに新しいエントリを追加するだけです。
これを実行したら:
crontab -u smarak /tmp/my-crontab
理想的には次のようなことができます:
crontab -u smarak <(cat/root/my-alternate-crontab)<(crontab -l)
しかし、crontabは上記のフォームを受け入れないようですので、ここに回避策を示します。
cat /root/my-alternate-crontab <(crontab -l)| crontab -u smarak -
これでうまくいきます。お役に立てば幸いです。