web-dev-qa-db-ja.com

cronから2つのコマンドを続けて実行するにはどうすればよいですか?

1時間ごとに実行する必要のあるコマンドが2つあるので、これらを/etc/cron.hourly/hrcronファイルに次の形式で配置します。

command1; command2

私の意見ではうまくいくはずですが、何がそれを実行するのを止めているのか誰かが知っていますか?

CentOS6.8を実行しています。

1
Sollosa

/etc/cron.hourlycron.daily、およびcron.monthlyに配置されたファイルは実行可能ファイルである必要があります。質問に示されているように1行のテキストファイルをそのディレクトリに配置すると、コマンドラインからシェルスクリプトなどのファイルを実行できなかったのと同じ理由で、まったく実行できません。

あなたが言うつもりはこれです:

#!/bin/sh
command1
command2

2行目と3行目をセミコロンで連結することもできますが、ここでは必要ありません。これは完全なシェルスクリプトなので、そのようにコマンドを「スタック」する必要はありません。

また、スクリプトを実行可能としてマークしてください。そうしないと、スクリプトは実行されません。

crontabエントリ の知識に基づいて、これらすべてが奇妙に思われる場合は、これらのディレクトリ内の実行可能ファイルは通常、 anacron または run-partscronではありません。したがって、man 5 crontabからの情報はここでは実際には適用されません。

5
Warren Young

そのための最もクリーンな方法は、2つのファイルを作成することです

  • /etc/cron.hourly/file1含むcommand1
  • /etc/cron.hourly/file2を含むcommand2

単一のcronジョブを実行することはお勧めしませんcommand1 && command2最初のコマンドが失敗した場合、2番目のコマンドが意図的に実行されることはないためです。

編集:command2の前にcommand1を実行する必要がある場合は、標準の/etc/crontabファイルを作成し、次のように入力します。

0 * * * *  root  command1
5 * * * *  root  command2

これにより、command1が毎時00分に実行され、command2が毎時05分に実行されます。

3
dr_