除了sleep 59
在脚本开头运行 a 之外,将crontab 命令设置为每 59 秒运行一次的最便捷方法是什么?
如果没有其他建议,执行是否会sleep 59
延迟我计划执行的所有其他 cron 条目,直到休眠的条目完成?
更新为什么我需要它?我写了一个小脚本来找出谁在最后一分钟登录系统,它看起来像这样:
who | grep `date +%R` | awk '{ print $1 " joins us." }' | write $USER
Run Code Online (Sandbox Code Playgroud)
为了让它工作而不是让事情变得复杂,我需要它在一分钟结束时运行。
这有一个date
查看前一分钟的命令:
who | grep `date -d "now -1 min" +%R` | awk '{ print $1 " joins us." }' | write $USER
Run Code Online (Sandbox Code Playgroud)
然后你可以立即运行它cron
:
* * * * * /some/dir/scriptname
Run Code Online (Sandbox Code Playgroud)
你甚至可以这样做:
who | grep `date -d "now -60 sec" +%R` | awk '{ print $1 " joins us." }' | write $USER
Run Code Online (Sandbox Code Playgroud)
编辑:这是一个免费赠品:
awk 'FNR > 2 {printf ",\n"} {printf "%s", name; name = $0; next} END {conj = " and\n"; if (FNR == 1) {singular = "s"; conj = ""}; printf "%s%s join%s us\n", conj, name, singular}'
Run Code Online (Sandbox Code Playgroud)
用逗号、“and”和复数动词一致输出并删除重复的短语(如果您希望将所有内容都放在一行,可以用空格替换换行符(最后一个除外)):
艾伦加入我们
或者
比尔和
克里斯加入我们
或者
戴夫、
艾伦和
费利西蒂加入我们
您可以使用 cron 做的最好的事情是每分钟运行一次:
# minute hour dom mon dow
* * * * * /path/to/command
Run Code Online (Sandbox Code Playgroud)