当前位置: 首页>>技术教程>>正文


如何以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服务

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1671.html,未经允许,请勿转载。