rc.local,Cron 风格
发布于 2014 年 6 月 9 日
偶尔,作为经验丰富的 Linux 用户,我们会遇到一些我们从未知道存在,但却感到惊讶的简单事情。 无论是 Tab 自动补全,sudo !!
(当你忘记输入 sudo 时),甚至是使用 ls
递归列出文件,最小的技巧都可能非常有用。 不久前,我就经历了这样的时刻。
大多数人都知道 rc.local 是一个文件,你可以在其中放置你希望在系统启动时运行的命令。 然而,有时 rc.local 脚本会被禁用,并且无法工作。 记住以特定用户身份启动特定程序的语法也可能很困难。 此外,在 rc.local 中包含长长的程序列表可能会变得很糟糕。 我才知道,cron 不仅支持定期执行命令,还可以在系统启动时启动程序!
一个普通的 crontab 条目看起来像这样
* * * * * /usr/bin/command
这会每分钟运行一次该命令。 有无数种变体可以获得非常具体的间隔,但直到最近,我才知道这五个字段还有其他选项。 以下是一个 crontab 条目,它会在每个小时的整点运行命令
@hourly /usr/bin/command
而且,还有更多:@annually
、@monthly
、@daily
、@midnight
,以及对于本文最有趣的 @reboot
。 如果你有一个像这样的 crontab 条目
@reboot /usr/bin/command
它将在系统启动时执行,并具有拥有 crontab 的人的所有权和权限! 我做了很多研究以确保它不仅在重新启动时,而且在冷启动时也能运行——是的,@reboot
术语只是意味着它在系统首次启动时运行一次。 我一直在使用它作为一个快速黑客来启动程序,而且效果非常好。

我知道 99.9% 的人已经知道了这个有趣的信息,但对于像我一样一直生活在黑暗中的 0.1% 的人,我向你展示一个为你系统管理员箭筒准备的锋利的新箭。 这是一个非常简单的技巧,但所有最好的技巧都是如此!