スクリプトまたはターミナルコマンドを探しています。すべてのスクリプトを一覧表示(パスを使用することをお勧めします)cron、cron.dailyを介して定期的に実行します。私はスクリプト期間のフィルタを見つけるのではなく、すべてのスクリプトのリストを探しています(しかし、一部の管理者はそのようなフィルタを望むかもしれません)。
目的:定期的に実行されるすべてのスクリプトを記録し、デバッグ、トラブルシューティング、アップデート、および新しいシステムへの移行が簡単かつ効率的に行われます。
答え1
root以外のユーザーがcronで実行しているすべてのスクリプトのファイル名とスクリプトの種類を見つけるには(ユーザー認識なし):
find /var/spool/cron/crontabs/ -type f ! -name 'root' \
-exec awk '!/^[[:blank:]]*(#|$)/ {print $6}' {} + |
xargs -d'\n' file | grep -i script
/home/cas/scripts/fetch.sh: Bourne-Again shell script, ASCII text executable
/usr/local/sbin/backup-postgres.sh: Bourne-Again shell script, ASCII text executable
root以外のユーザー(IDユーザー)がcronで実行しているすべての実行可能ファイル(バイナリとスクリプト)を見つけるには、次の手順を実行します。
find /var/spool/cron/crontabs/ -type f ! -name 'root' \
-execdir awk '!/^[[:blank:]]*(#|$)/ {print FILENAME"\t"$6}' {} + |
sed -e 's:^./::'
cas /home/cas/scripts/fetch.sh
postgres /usr/local/sbin/backup-postgres.sh
もちろん、どちらもrootとして実行する必要があります。ルートだけがすべてのユーザーのcrontabを読むことができます。
注:crontabはシステムの他のディレクトリにある可能性があります。 cronデーモンのマニュアルを確認してください。