クローンジョブを同時に実行できますか?

クローンジョブを同時に実行できますか?

同じ時間の真夜中以下のジョブのすべてのファイルを削除したいと思います。

0 0 * * * root  [[ -d /var/log/ambari-metrics-collector ]] && find  /var/log/ambari-metrics-collector  -type f -mtime +10 -regex '.*\.log.*[0-9]$' -delete 

0 0 * * * root  [[ -d /var/log/kO ]] && find  /var/log/Ko  -type f -mtime +10 -regex '.*\.log.*[0-9]$' -delete 

0 0 * * * root  [[ -d /var/log/POE ]] && find  /var/log/POE  -type f -mtime +10 -regex '.*\.log.*[0-9]$' -delete  

0 0 * * * root  [[ -d /var/log/REW ]] && find  /var/log/REW  -type f -mtime +10 -regex '.*\.log.*[0-9]$' -delete 

これらすべてを同時に実行できますか?

Dosage cronジョブは徐々に実行されますか?それとも、すべて同じスレッドにありますか?

答え1

cronはい、同時に複数のジョブをスケジュールすることは完全に許可されています。

コンピュータは何もないただし、表に示されている順序で同時に開始されますcron。ただし、順次実行されるわけではありません。真夜中は互いにミリ秒以内に始まり、すべての実用的な目的のために同時に始まります。

答え2

Cronはほぼ同時にすべてのタスクを開始し、同時に実行します。

ただし、この種のクリーンアップ操作では、プロセスを順番に実行するショートシェルスクリプトを作成することをお勧めします。これにより、複数のfind実行が互いに遅くなるのを防ぐことができます(システムの残りの部分へのディスクアクセス速度が潜在的にわずかに遅くなる現象)。またfind、cron仕様を変更または追加することなく、クリーンアッププロセス(新しいディレクトリの追加や変更など)を簡単に変更/更新できます。もっと清掃作業)。

例えば、

#!/bin/bash

for dir in /var/log/{ambari-metrics-collector,k0,POE,REW}; do
    [ ! -d "$dir" ] && continue
    find  "$dir" -type f -mtime +10 -regex '.*\.log.*[0-9]$' -delete
done

そうでなければ

#!/bin/bash

find  /var/log/{ambari-metrics-collector,k0,POE,REW} -type f -mtime +10 -regex '.*\.log.*[0-9]$' -delete

(1つ以上のディレクトリが存在しない場合でもエラーが発生します。これを知っておくと便利かもしれません。)

その後、cronを使用して、システムに適した方法で実行するようにスクリプトをスケジュールできます。


もっと華やかに:

#!/bin/bash

# directories to clean up
dirs=( /var/log/ambari-metrics-collector
       /var/log/k0
       /var/log/POE
       /var/log/REW
)

for dir in "${dirs[@]}"; do
    if [ ! -d "$dir" ]; then
        printf 'Dir "%s" does not exist, check this!\n' "$dir" >&2
    else
        printf 'Removing files from "%s":\n' "$dir"
        find  "$dir" -type f -mtime +10 -regex '.*\.log.*[0-9]$' -print -delete
    fi
done

あるいは、このアプローチを完全に放棄し、logrotate同様のソフトウェアを使用してログファイルのメンテナンスを適切に実行してください。

答え3

Cronは真夜中に4つのプロセスをすべて並列に開始します。

関連情報