脚本自启动,如果觉得使用 service
方式较为复杂,另一种更简单的方法是将shell脚本如:hello.sh,添加到 /etc/rc.local
文件中。rc.local
可以在系统启动时执行脚本,并且可以直接在脚本中使用 sudo
。
步骤:
-
编辑
/etc/rc.local
文件:sudo nano /etc/rc.local
-
在
rc.local
中添加脚本的调用:
在exit 0
之前添加以下行:sudo /home/aaa/hello.sh
注意:确保
/etc/rc.local
文件有可执行权限,如果没有,请运行以下命令:sudo chmod +x /etc/rc.local
-
确保脚本能正常执行:
确保脚本hello.sh
中的命令能够执行,如果需要被sudo
执行。可以通过sudo visudo
修改sudoers
文件,添加无密码执行权限,例如:aaa ALL=(ALL) NOPASSWD: /home/aaa/hello.sh
这样设置后:
每次系统启动时,/etc/rc.local
将以 root
权限自动执行 hello.sh
脚本,而无需复杂的 systemd
配置。
注意
需要注意的是,在 Ubuntu 20.04 中,/etc/rc.local
文件默认是不存在的,但可以手动创建并启用它。
启用 rc.local
的步骤
-
创建
rc.local
文件:
如果/etc/rc.local
文件不存在,可以手动创建:sudo nano /etc/rc.local
在文件中添加以下内容:
#!/bin/bash # rc.local sudo /home/aaa/hello.sh exit 0
-
修改权限:
确保rc.local
文件有执行权限:sudo chmod +x /etc/rc.local
-
创建
rc-local.service
文件:
如果系统中没有服务文件来管理rc.local
,您可以手动创建一个:sudo nano /etc/systemd/system/rc-local.service
内容如下:
[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no [Install] WantedBy=multi-user.target
-
启动并启用服务:
运行以下命令来启用和启动rc-local
服务:sudo systemctl enable rc-local sudo systemctl start rc-local
-
检查服务状态:
可以检查服务是否正常运行:sudo systemctl status rc-local
完成这些步骤后,rc.local
将在每次开机时自动执行,就可以用它来启动shell脚本了,当然也可以直接在rc.local添加你想要执行的命令。