ubuntu20.04开机自启动sh
时间: 2025-01-01 11:30:14 浏览: 10
### Ubuntu 20.04 设置 Shell 脚本开机自启动
#### 使用 `rc.local` 方法
为了使 shell 脚本在系统启动时自动执行,在 `/etc/rc.local` 文件中添加相应的命令是一个常见方法。确保该文件存在并具有可执行权限[^3]。
```bash
sudo touch /etc/rc.local
sudo chmod +x /etc/rc.local
sudo vim /etc/rc.local
```
向此文件内写入如下内容:
```bash
#!/bin/bash
cd /path/to/script/directory
./your_script.sh &
exit 0
```
注意,当在 `/etc/rc.local` 中加入类似 `./test.sh` 的指令时,应在结尾处追加 `&` 符号以便让脚本以后台模式运行,防止阻塞系统的正常启动过程[^2]。
还需复制默认的服务定义到本地配置目录,并启用服务以确保其随系统一同加载:
```bash
sudo cp /lib/systemd/system/rc-local.service /etc/systemd/system/
sudo systemctl enable rc-local
```
最后重启计算机验证设置是否生效。
#### 创建 Systemd Service 单元方式
另一种更为推荐的方法是利用 systemd 来管理开机启动项。这涉及到创建一个新的 service 文件来描述待执行的任务[^4]。
1. 准备好想要作为开机任务执行的 `.sh` 文件;
2. 编辑新的 service 配置文件;
假设目标脚本位于用户的桌面上,则可以按照下面的方式操作:
```bash
sudo nano /etc/systemd/system/myscript.service
```
将下列文本粘贴进去(记得替换路径和名称):
```ini
[Unit]
Description=My custom script at startup
[Service]
ExecStart=/home/user/Desktop/my_start.sh
WorkingDirectory=/home/user/Desktop/
[Install]
WantedBy=default.target
```
保存更改后激活新安装的服务单元:
```bash
sudo systemctl daemon-reload
sudo systemctl start myscript.service
sudo systemctl enable myscript.service
```
上述步骤完成后,每次机器重新引导都会触发指定的 shell 命令序列被执行。
阅读全文