获取作为 cron 作业运行的所有脚本及其路径的列表

获取作为 cron 作业运行的所有脚本及其路径的列表

我正在寻找一些脚本或终端命令列出所有脚本(最好带有它们的路径)由 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 守护程序的文档。

相关内容