如何在启动后运行命令?

如何在启动后运行命令?

我想echo 1 > /proc/sys/kernel/sysrq在每次启动时运行简单的 shell 命令来启用 sysrq 键。应该在启动时何时执行此操作,我应该将脚本放在哪里来执行此操作?

答案1

取决于发行版。

如果你使用的是 Debian 衍生发行版,至少有两个合适的位置,/etc/rc.local 和 crontab。你可以以 root 身份调用 crontab,

   crontab -e

然后插入此行

   @reboot /home/my_name/bin/my_command

其中my_command是可执行文件 ( chmod 755 my_command)。

或者,你可以像这样放置一行

   /home/my_name/bin/my_command

在 /etc/rc.local 中,这将最后执行。无论如何,请记住您使用的是 root 环境,而不是您的环境。同样出于这个原因,最好使用绝对路径。

如果你在systemd发行版(Arch Linux、Fedora 19 等)中,第一个选项(crontab)仍然有效,而第二个选项(/etc/rc.local)不再存在。在这种情况下,您应该学习如何启动要运行的服务systemctl,但这可能超出了您对简单问题的预期。

答案2

cron如果您的系统正在运行支持它的版本(特别是 Vixie cron),您可以@reboot在 cron 作业中使用它。

这是它支持的 8 个特殊字符串之一。

引用crontab(5)手册页(来自我的 Ubuntu 12.04 系统):

除了前五个字段,还可能出现八个特殊字符串之一:

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

请注意,启动是@rebootcron(8)守护进程启动。具体来说,它可能在某些系统守护进程或其他设施启动之前启动。这是由机器的启动顺序决定的。

这远非仅有的在启动时运行某些程序的方法,但这是一种替代方法。

答案3

几乎所有 Linux 变体(可以追溯到很久很久以前)都有一个在启动时运行的文件 /etc/rc.local - 您只需将命令添加到其中即可。

也就是说,你甚至不需要这样做。“正确”的方法是修改/将行 kernel.sysrq = 1 添加到 /etc/sysctl.conf 中

相关内容