每 59 秒运行一次 crontab 命令

每 59 秒运行一次 crontab 命令

sleep 59除了在脚本开头运行外,设置 crontab 命令每 59 秒运行一次的最方便的方法是什么?

如果没有其他建议,执行sleep 59延迟是否会让我计划执行的所有其他 cron 条目都等到休眠条目完成?

更新我为什么需要它?我写了一个小脚本来找出最后一分钟谁登录了系统,它看起来像这样:

who | grep `date +%R` | awk '{ print $1 " joins us." }' | write $USER

为了让它发挥作用并且不让事情变得复杂,我需要它在最后一分钟运行。

答案1

这有一个date查看前一分钟的命令:

who | grep `date -d "now -1 min" +%R` | awk '{ print $1 " joins us." }' | write $USER

然后你可以按分钟运行它cron

* * * * * /some/dir/scriptname

你甚至可以这样做:

who | grep `date -d "now -60 sec" +%R` | awk '{ print $1 " joins us." }' | write $USER

编辑:这是免费赠品:

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}'

输出带有逗号、“and”和复数动词一致以及删除重复短语(如果您希望所有内容都在一行上,则可以用空格替换换行符(最后一个除外):

Allen 加入我们

或者

比尔和
克里斯加入我们

或者

Dave、
Ellen 和
Felicity 加入我们

答案2

使用 cron 所能做的最好的事情就是每分钟运行一次:

# minute hour dom mon dow
* * * * * /path/to/command

答案3

sleep 59不会耽误其他任务。

但这听起来很危险。如果你需要那么我预测你将陷入困境。

如果您解释了您的要求的原因,您可能会发现有人能够提供更好的治疗方法。

答案4

最好将脚本添加到所有用户的 .login 文件或 .bashrc 或类似文件中。

1) 只有当有人登录时它才会运行,因此效率更高。2) 当有人登录时它会立即运行,因此不会延迟。

相关内容