我有一个脚本,无需使用网络管理器即可自动启用我的 wifi,但我不知道如何在系统启动时以 root 身份运行该脚本。如何让脚本在启动时自动运行?
答案1
将要运行的脚本放在 /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/
。
答案2
使用crontab
选项让脚本在重启后运行,
您可以通过在命令中添加前缀来实现@reboot
非标准预定义调度定义在计划任务。
以 root 用户身份打开 crontab(您必须在此处使用sudo
以编辑您的根的crontab 代替你的用户的定时任务 (crontab):
sudo crontab -e
然后,在底部添加一条记录,包含您想要以 root 身份运行的命令:
@reboot path/to/your/executable/to/be/run/as/root
那将会实现你想要的效果。
请注意,您可以看到您的用户和 root 的 crontab 条目,如下所示:
crontab -l # list your user crontab entries
sudo crontab -l # list root's crontab entries
为了以 root 身份运行命令,它必须在你的 root 的 crontab 中。
答案3
将该命令包含在 中/etc/rc.local
。每当用户的运行级别改变时,它就会运行。
注意:您必须将该命令放在 /etc/rc.local 中包含“exit 0”的最后一行之前。
答案4
将您的脚本文件包含到/etc/init.d/
具有可执行权限的文件中,然后设置不同的运行级别
$ update-rc.d script-name default
它会在启动时执行你的脚本。