在 crontab 上启动时运行命令

Lot*_*tie 33 cron

我想在完成重新启动后在我们的 linux 上运行一个命令,我看到它可以使用 crontab 来完成。我想运行这个命令

sudo ifdown eth0 && sudo ifup -v eth0
Run Code Online (Sandbox Code Playgroud)

在 crontab 上,我可以这样做:

@reboot sudo ifdown eth0 && sudo ifup -v eth0
Run Code Online (Sandbox Code Playgroud)

还是我需要将其存储在脚本中?

谢谢你

The*_*hwa 40

在此之前有一些注意事项:

  1. 不要sudo在 cron 作业中使用。而是使用 editroot的 crontab 而不是您自己的,例如sudo crontab -e,然后输入不带sudo.
  2. 正如@mikewhatever 所提到的,这是 的一个奇怪用法cron,并且可能会更好地放置在/etc/rc.localexit 0行之前。
  3. 如果您确切地告诉我们您要查找的内容,我们或许可以将您引导至日志或配置选项(在启动时重新启动网络服务感觉有点黑客)。
  4. 在大多数系统上@reboot也应该在硬关机或崩溃后运行,但有不同的 cron 实现,所以 YMMV。我在不同的地方看到评论都断言两者。

编辑(2016/02/17):删除了绝对路径上的错误信息;kudos @muru
编辑(2016/10/17):添加关闭说明
编辑(2017/09/11):修改关闭说明。不太确定那个。

  • @TheSchwa cron 的重启不在冷启动时运行的说法是错误的。当 crond 守护进程启动时,带有 reboot 的行会运行。无论是热启动、冷启动,还是没有启动,我只是手动关闭 crond 并重新启动它。crond 守护进程不知道也不关心它为什么要重新启动,只要它重新启动它就会简单地运行重启行。 (2认同)

mur*_*uru 7

您可以为此使用 crontab,但如果您使用sudo,那么您将需要一个NOPASSWD规则sudoers来执行此操作。(请参阅如何使用 sudo 命令运行 cron 作业。)

在行/etc/rc.local之前编辑和添加这些命令会更简单exit 0

  • Ubuntu 20.04 中没有 `/etc/rc.local` 文件... (3认同)