web-dev-qa-db-ja.com

cronジョブとして実行されるすべてのスクリプトとそのパスのリストを取得します

Cron、cron.daily、anacron、またはその両方によって定期的に実行されるすべてのアクティブなスクリプトを(できればパスとともに)リストするためのスクリプトまたは端末コマンドを探しています。スクリプトの特定の期間のフィルターを探していません。リストされているすべてのスクリプトが必要です(ただし、一部の管理者はこの種類のフィルターを必要とする場合があります)。

目的:定期的に実行されるすべてのスクリプトを文書化し、デバッグまたは障害チェック、更新、および新しいシステムへの転送を簡単かつ効率的にします。

ありがとう

2
ankit7540

これがあなたの望みどおりかどうかはわかりません。私はいくつかのstackexchangeでこの答えを少し前に見つけ、1台のサーバーで使用しました。

for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done

これにより、すべてのユーザーのすべてのcrontabがリストされます。

2
Operator

あなたがインターネットで見つけたものについては、理解せずに実行するべきではありませんが、以下はcron.hourly/cron.daily/cron.monthlyフォルダで実行されるスクリプトのファイル名と表示パスを取得します... (私の場合はCentOS)

cd /etc/cron.hourly/&&for i in $(ls);do find `pwd` -name $i;done&&cd /etc/cron.daily/&&for i in $(ls);do find `pwd` -name $i;done&&cd /etc/cron.weekly/&&for i in $(ls);do find `pwd` -name $i;done&&cd /etc/cron.monthly/&&for i in $(ls);do find `pwd` -name $i;done

基本的にこれの複数のバージョン:

cd /etc/cron.hourly/&&for i in $(ls);do find 'pwd' -name $i;done

次に、ディレクトリに移動し、lsの各ファイル名についてパスを見つけて表示します。

編集:構造が好きなコーダーの人々のために...関数と同じこと:

function AllTheCrons {
    cd /etc/cron.hourly/
    for i in $(ls);
        do
            find `pwd` -name $i;
        done;
    cd /etc/cron.daily/
    for i in $(ls);
        do
            find `pwd` -name $i;
        done;
    cd /etc/cron.weekly/
    for i in $(ls);
        do
            find `pwd` -name $i;
        done;
    cd /etc/cron.monthly/
    for i in $(ls);
        do
            find `pwd` -name $i;
        done;
}

次に実行します:

AllTheCrons
0
cormpadre