![用于计算 crontab 中活动 cron 作业数量的命令](https://linux22.com/image/20808/%E7%94%A8%E4%BA%8E%E8%AE%A1%E7%AE%97%20crontab%20%E4%B8%AD%E6%B4%BB%E5%8A%A8%20cron%20%E4%BD%9C%E4%B8%9A%E6%95%B0%E9%87%8F%E7%9A%84%E5%91%BD%E4%BB%A4.png)
问题陈述
我有 5 个 Solaris 机器,有些有 Solaris 10,有些有 Solaris 9。
它们的 crontab 中都有很多 cronjobs。
我想知道可用的活动 cronjobs 的数量,所以我手动计算定时任务。
现在我正在寻找一个命令 [我正在使用的 bash shell] 来计算活动 cronjobs 的数量。
我已经尝试过crontab -l|wc -l
,但我的 crontab 包含许多注释行,这些注释行也与我的命令一起计数。
我尝试过的
crontab -l|wc -l
我期待什么
用于计算活动 cronjob 数量(不包括注释行)的 bash shell 命令。
答案1
您需要删除所有不以数字(分钟)开头的内容。但要实现这一点,请先删除所有前导空格。这将消除注释、空行、变量赋值等。
crontab -l 2>/dev/null | sed 's/^ *//;/^[*@0-9]/!d' | wc -l
答案2
crontab -l | grep -v '^#'
简单的。
号码?
crontab -l | grep -v '^#' | wc -l
或者
crontab -l | grep -c -v '^#'
(最后一个受到此处答案的启发)。
这将为您提供计划的 cron 作业(数量),而不是活动的 cron 作业,这可能意味着当前正在运行的作业。
答案3
为什么要删除字符?请尝试以下操作:
$ crontab -l | grep -c "^[0-9*]"
答案4
你可以这样做:
PATH=`getconf PATH`:$PATH # needed on Solaris to get POSIX compliant versions
# of the basic Unix utilities
crontab -l | LC_ALL=C grep -c '^[[:blank:]]*[0-9@*]'
即计算以 ASCII 十进制数字 或*
或开头的行@
(Solaris 目前不支持后者cron
,但其他一些实现支持),前面有 0 个或多个空格(在 C 语言环境中,即 SPC 或 TAB)。