我有一个脚本可以在不使用网络管理器的情况下自动启用我的 wifi,但我不知道如何在系统启动时以 root 身份运行脚本。如何让脚本在启动时自动运行?
Rad*_*anu 57
将要运行的脚本放在 /etc/init.d 目录中,并使脚本可执行。
chmod 755 myscript
Run Code Online (Sandbox Code Playgroud)
完成后,在您想要使用的运行级别目录中创建一个符号链接,例如,如果您想在图形运行级别 2(Ubuntu 的默认运行级别)中运行程序,您可以将它放在该/etc/rc2.d目录中。你只是不能把它放在目录中,你必须通过用“S”指示启动来表示它何时运行,并且执行顺序很重要。通过给它一个更高的数字,将它放在目录中的所有其他内容之后。
如果要运行的最后一个脚本是rc.local并且已命名,S99rc.local则您需要将脚本添加为S99myscript.
ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript
Run Code Online (Sandbox Code Playgroud)
每个向后兼容的/etc/rc*.d目录都有指向该/etc/init.d/目录的符号链接。
the*_*eye 27
将命令包含在/etc/rc.local. 每当用户的运行级别更改时,它将运行。
注意:您必须将命令放在 /etc/rc.local 中包含“exit 0”的最后一行之前。
小智 27
使用一个crontab选项让你的脚本在重启后运行,
您可以通过@reboot在cron 中添加代码来实现
以 root 用户打开 crontab:
$ sudo crontab -e
Run Code Online (Sandbox Code Playgroud)
在底部添加下一条记录:
@reboot yourScriptPath
Run Code Online (Sandbox Code Playgroud)
那会做你想做的。
YTe*_*rle 14
这在 Ubuntu 17.04 上对我有用:
创建一个脚本文件,disable_cdrom以方便您的位置。就我而言home/yterle/disable_cdrom。就我而言:
#!/bin/sh
eject /dev/sr0 -i 1
Run Code Online (Sandbox Code Playgroud)使其可执行 chmod 775 disable_cdrom
/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
Run Code Online (Sandbox Code Playgroud)
在哪里ExecStart运行你的脚本/bin/sh
然后运行systemctl enable disable_cdrom.service启用systemd服务
将您的脚本文件包含在/etc/init.d/
可执行权限中,然后设置不同的运行级别
$ update-rc.d script-name default
Run Code Online (Sandbox Code Playgroud)
它会将您的脚本置于引导启动状态。