如何以root身份在引导期间运行脚本

我有一个脚本,可以在不使用networkmanager的情况下自动启用我的wifi,但我不知道如何在系统启动时以root身份运行脚本。 如何在启动过程中自动运行脚本?

将要运行的脚本放在/etc/init.d目录中,并使脚本可执行。

chmod 755 myscript 

完成后,在您想要使用的运行级目录中创建一个符号链接,例如,如果您想在图形运行级别2(Ubuntu的默认运行级别)中运行程序,您可以将它放在/etc/rc2.d目录。 你只是不能把它放在目录中,你必须通过用“S”指示启动并且执行顺序很重要来表示它何时运行。 将它放在目录中的所有其他内容之后,给它一个更高的数字。

如果要运行的最后一个脚本是rc.local并且它名为S99rc.local那么您需要将脚本添加为S99myscript

 ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript 

每个向后兼容的/etc/rc*.d目录都有到/etc/init.d/目录的符号链接。

/etc/rc.local包含该命令。 只要用户的运行级别发生变化,它就会运行。

注意:您必须将命令放在/etc/rc.local中包含以下内容的最后一行之前:“exit 0”。

使用crontab选项使脚本在重新启动后运行,

你可以通过在cron中添加@reboot代码来实现

 @reboot yourScriptPath 

会做的

将您的脚本文件包含在具有可执行权限的/etc/init.d/ ,然后设置不同的运行级别

 $ update-rc.d script-name default 

它会将您的脚本置于启动启动状态。

/etc/cron.d/创建这样的文本文件:

 SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin @reboot root yourScriptPath 

(您应该将yourScriptPath替换为要运行的脚本的路径。)

这在Ubuntu 17.04上对我有用:

  1. 创建像disable_cdrom这样的旅游脚本文件,方便您定位。 在我的情况下home/yterle/disable_cdrom 。 就我而言:

     #!/bin/sh eject /dev/sr0 -i 1 
  2. 使它可执行chmod 775 disable_cdrom

  3. 导航到/etc/systemd/system并在那里创建一个service文件。 例如sudo gedit /etc/systemd/system/disable_cdrom.service

我的disable_cdrom.service看起来像这样:

 [Unit] Description=Disable cdrom [Service] Type=oneshot ExecStart=/bin/sh /home/yterle/disable_cdrom [Install] WantedBy=multi-user.target 

ExecStart指向用/bin/sh运行脚本的地方

然后运行systemctl enable vgaoff.service以启用systemd服务