質問: cron ジョブを使用して Linux で特定のシェル スクリプトを特定の間隔で実行するにはどうすればよいですか?異なる期間を使用した例を提供してください。
答え: Crontab を使用して、特定の内部で実行されるジョブをスケジュールできます。ここの例は、さまざまな間隔を使用して backup.sh シェル スクリプトを実行する方法を示しています。
また、15 の実用的な例を含む以前の crontab 記事を読むことを忘れないでください。また、@monthly、 @daily、.. crontab で使用できるタグ。
1. 5 分ごとに cron ジョブを実行
最初のフィールドは分です。このフィールドに * を指定すると、毎分実行されます。 1 番目のフィールドに */5 を指定すると、以下に示すように 5 分ごとに実行されます。
*/5 * * * * /home/ramesh/backup.sh
注: 同様に、10 分ごとに */10、15 分ごとに */15、30 分ごとに */30 などを使用します。
2. 5 時間ごとに cron ジョブを実行
2 番目のフィールドは時間です。このフィールドに * を指定すると、1 時間ごとに実行されます。 2 番目のフィールドに */5 を指定すると、以下に示すように 5 時間ごとに実行されます。
0 */5 * * * /home/ramesh/backup.sh
注: 同様に、2 時間ごとに */2、3 時間ごとに */3、4 時間ごとに */4 などを使用します。
3. 5 秒ごとにジョブを実行
Cron ジョブを使用して、秒間隔でジョブをスケジュールすることはできません。つまり、cron ジョブを 5 秒ごとに実行するようにスケジュールすることはできません。別の方法は、「sleep 5」コマンドを使用するシェル スクリプトを作成することです。
以下に示すように、bash while ループを使用して、シェル スクリプト every-5-seconds.sh を作成します。
$ cat every-5-seconds.sh #!/bin/bash while true do /home/ramesh/backup.sh sleep 5 done
次に、以下に示すように、nohup を使用してこのシェル スクリプトをバックグラウンドで実行します。これにより、セッションからログアウトした後でもスクリプトが実行され続けます。これにより、backup.sh シェル スクリプトが 5 秒ごとに実行されます。
$ nohup ./every-5-seconds.sh &
4.平日 5 日おきにジョブを実行
この例は、「5 日ごと」のスケジュールに関するものではありません。ただし、これは「平日の 5 日おき」にスケジュールするためのものです。
5 番目のフィールドは DOW (曜日) です。このフィールドに * を指定すると、毎日実行されます。毎週金曜日に実行するには、このフィールドに金のいずれか 5 を指定します。
次の例では、毎週金曜日の深夜に backup.sh を実行します。
0 0 * * 5 /home/ramesh/backup.sh (or) 0 0 * * Fri /home/ramesh/backup.sh
以下に示すように、ユーザー番号または対応する平日の 3 文字の頭字語のいずれかを使用できます。
- 0=太陽
- 1=月
- 2=火
- 3=水曜日
- 4=木
- 5=金
- 6=土
注: 5 の代わりに Fri を使用する習慣を身につけてください。数字は 0 (1 ではなく) から始まり、0 は Sun (Mon ではなく) を表すことに注意してください。
5. 5 か月ごとにジョブを実行する
「5 か月ごと」と直接言う方法はありません。代わりに、ジョブを実行する特定の月を指定する必要があります。おそらく、5 か月目 (5 月) と 10 か月目 (10 月) にジョブを実行することをお勧めします。
4 番目のフィールドは月です。このフィールドに * を指定すると、毎月実行されます。特定の月に実行するには、その月に対応する番号を指定する必要があります。たとえば、5 月と 10 月にジョブを実行するには、5,10 を指定する必要があります (または) 月の 3 文字の頭字語を使用して May,Oct を指定することもできます。
3 番目のフィールドは DOM (Day of the Month) 用です。このフィールドに * を指定すると、毎月実行されます。この月に 1 を指定すると、その月の 1 日に実行されます。
次の例では、backup.sh を年に 2 回実行します。つまり、5 月 1 日の午前 0 時、10 月 1 日の午前 0 時です。
0 0 1 5,10 * /home/ramesh/backup.sh (or) 0 0 1 May,Oct * /home/ramesh/backup.sh
注: 4 番目のフィールドに 5-10 を指定するのを間違えないでください。これは、5 か月目から 10 か月目までを意味します。 5 か月目と 10 か月目だけが必要な場合は、コンマを使用する必要があります。