引导后如何运行命令?


27

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


所有Linux发行版都已经设置了时间。也许主板上RTC的电池电量不足?
一些程序员哥们2012年

@JoachimPileborg实际上在我的主板上没有RTC :)这是没有RTC的嵌入式系统板。


2
我希望有所不同,@ davidgo。您引用的引用有些过时了:尽管crontab可以工作,但/etc/rc.local在systemdArch Linux 等发行版上却没有。通过提及它们,我们可能会在野鹅追逐中发送Demetri。有时需要进行一些更新。
MariusMatutiae

Answers:


37

取决于发行版。

如果您使用的是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由来运行的服务,但这可能比您通过简单的问题讨价还价还多。


1
您可以为Fedora确认吗?我的搜索告诉我,如果rc.local存在并且可以执行,它将仍然运行,但是默认情况下未设置。如果rc.local不运行,我会感到不安的后果!(我只能找到这个引用在Fedora 18 - forums.fedoraforum.org/showthread.php?t=291889
davidgo

没错,在Fedora 19中,如果您确实想要它,可能仍然可以使用它。但是它不再打包,docs.fedoraproject.org / en-US / Fedora / 16 / html / Release_Notes /…项目符号3.2.4。另外,它在Arch Linux中根本不存在,因此我认为对此添加警告是安全的。
MariusMatutiae

2
也许这对我来说是一个未知的别名,但@boot并不存在,只是 @reboot debianhelp.co.uk/crontab.htm
Zarathustra

19

如果您的系统正在运行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 * * * *".

请注意,就c @reboot而言,启动是cron(8)守护程序启动的时间。特别是,可能是在某些系统守护程序或其他功能启动之前。这是由于计算机的启动顺序而引起的。

这远不是在启动时运行某些东西的唯一方法,而是另一种选择。


2
在原始问题出现一年以上之前,该答案怎么写的?
MariusMatutiae


+1用于指定需要Vixie cron。
哈维尔·阿里亚斯

10

几乎所有Linux变体(很长很长一段时间都可以使用)都有一个/etc/rc.local文件,该文件可以在启动时运行-您只需向其中添加命令即可。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.