我正在寻找一些脚本或终端命令列出所有脚本(最好带有它们的路径)由 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 用户(标识用户)从 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 身份运行。只有 root 可以读取所有用户的 crontab。
注意:crontab 可能位于系统上的不同目录中。检查 cron 守护程序的文档。