有没有办法在重新启动时制作/运行 bash 脚本(例如在 Debian/Ubuntu 中,因为那是我家里的 2 个盒子所拥有的)
另外,有什么推荐的 cron 作业指南吗?我对它们完全陌生(但它们会有很大用处)
答案1
在 Ubuntu/Debian/Centos 上,您可以设置一个 cron 作业来运行 @reboot。它在系统启动时运行一次。使用 crontab -e 编辑 crontab 并添加一行,如下例所示
@reboot /path/to/some/script
如果你寻找的话,有很多关于 cron 的资源。这个网站有几个很好的例子。
答案2
在许多计算机上启动某些东西的另一种典型方法*尼克斯平台是(或者是,我认为这可能开始失去青睐——参见备择方案)将脚本放在一个目录中,根据特定的操作系统/发行版,该目录可能类似于/etc/rc2.d
、/etc/rc3.d
、/etc/rc/rc3.d
等(不同的发行版使用不同的“运行级别”,这就是数字的来源 - 请参阅下面的链接)。通常,这些也被符号链接到文件中或来自 的文件中/etc/init.d
,以便更容易手动执行,并且它们在大多数 *nix 平台中采用“启动”和/或“停止”参数,以及“状态”,“重新启动”,在许多Linux平台上等等。在此类系统上,这些通常由init
, via执行inittab
- 请参阅SysV 初始化脚本。在 *BSD 系统上,有一个相似概念的不同风格,并且,正如上面链接的,有很多变体。
在上述样式中,例如/etc/rc2.d
(对于默认运行级别为 2 的系统)中的脚本通常以字母S
或开头K
,然后是两位数字。以S开头的脚本运行在字典顺序(通常翻译为数字顺序)启动时进入级别 2,参数为“start”。关闭时,以 K 为前缀的脚本也会以类似方式运行,并带有“stop”参数。
中的文件/etc/init.d
(有时是/etc/rc/init.d
,或其他变体)的命名不带 S 和 K 前缀或数字。通常,各个 /etc/rc?.d 目录中的文件符号链接到实际文件,通常通过相对路径前缀引用../init.d/
。
各种系统上存在各种实用程序来管理这些,以及打开和关闭等。在 IRIX 上(至少从 IRIX 4 起,如果我没记错的话),它曾经是一个名为 的工具chkconfig
,它不会操作链接,但脚本会检查它们是否应该运行。我思考IRIX 是第一个具有此类功能的操作系统。后来,在我以前使用的 RedHat 的某些版本中,有一个同名的工具,但它的行为有点不同,实际上是管理符号链接 - 请参阅chkconfig(8)
我认为可能与我当时使用的版本相同(或非常相似)。
在我可以访问的 Ubuntu 9.04 系统上,它看起来像是update-rc.d
要运行的脚本。
如果您使用的系统使用 inittab,您还可以直接在其中添加内容 - 这对于您希望不仅在启动时运行一次,而且还希望(通过init
)主动监控respawn
它们是否曾经运行过的内容特别有用崩溃或终止。请参阅系统上的输出man inittab
(如果有)以获取更多信息。和/或man init
等等。有很多不同的风格,而且我(目前)对 Debian 或 Ubuntu 都不太熟悉,所以我不确定到底要向您指出什么,但希望这能给您一些起点。
crontob 中的 @reboot 部分对我来说是新的,但似乎它可能是一个有用的选项——尽管我建议 init 脚本对于很多事情来说更可取。但是,请参阅man 5 crontab
有关您可以在 cron 配置中放入哪些内容,以及如何告诉它运行事物以及何时运行的更多信息(包括假设 Vixie/ISC 版本的 cron [参见计划任务历史] 和@reboot
)。
我希望这有帮助。