Startup script for ubuntu 16.04

本文介绍如何使用systemd创建启动脚本,实现开机自动运行指定的shell脚本,包括服务文件配置、权限设置及systemd服务管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://gist.github.com/toan2406/a0772fd8253f1e06a4bfea72bf37d3b0

$ sudo nano /etc/systemd/system/startup.service

  [Unit]
  Description=Startup

  [Service]
  ExecStart=/usr/local/bin/startup.sh

  [Install]
  WantedBy=default.target

$ sudo nano /usr/local/bin/startup.sh

  #!/bin/bash

  date > /root/report.txt
  du -sh /home/ >> /root/report.txt
 
$ sudo chmod 744 /usr/local/bin/startup.sh
$ sudo chmod 664 /etc/systemd/system/startup.service
$ systemctl daemon-reload
$ systemctl enable startup.service

# Test the script
$ systemctl start startup.service
$ cat /root/report.txt

# Reboot
$ sudo reboot


 

### 如何在 Ubuntu 20.04 上正确运行 SH 脚本 #### 使用 `systemctl` 配置开机自启动脚本 由于 Ubuntu 16.04 及之后的版本已弃用了传统的 `initd` 管理方式并采用 `systemd`,因此可以通过创建一个新的 systemd service 来实现 sh 脚本的开机自动运行。 以下是具体方法: 1. **编写 Shell 脚本** 创建一个 `.sh` 文件作为目标脚本。例如,在 `/opt/` 目录下新建名为 `start.sh` 的文件: ```bash nano /opt/start.sh ``` 编辑该文件的内容如下: ```bash #!/bin/bash echo "Script started at $(date)" >> /var/log/my_script.log java -jar /path/to/your/application.jar & ``` 这里假设您希望运行的是 Java 应用程序,并将其日志记录到指定路径中以便后续排查问题。 接着赋予此脚本执行权限: ```bash chmod +x /opt/start.sh ``` 2. **定义 Systemd Service Unit File** 新建一个服务单元文件用于描述如何调用您的 shell 脚本。进入目录 `/etc/systemd/system/` 并编辑新文件: ```bash sudo nano /etc/systemd/system/myscript.service ``` 将下面内容填入其中: ```ini [Unit] Description=My Custom Script Startup Service After=network.target [Service] ExecStart=/opt/start.sh Restart=always User=root [Install] WantedBy=multi-user.target ``` 3. **重新加载 Daemon 和启用服务** 更新 systemd daemon 配置使其识别新增的服务文件: ```bash sudo systemctl daemon-reload ``` 启用服务以确保它会在每次重启时被激活: ```bash sudo systemctl enable myscript.service ``` 手动测试一下是否正常工作: ```bash sudo systemctl start myscript.service sudo systemctl status myscript.service ``` 以上操作完成后,当系统下次引导时会按照设定好的逻辑来触发对应的 .sh 脚本[^1]。 #### 复原传统 RC.Local 方法 (不推荐) 尽管官方文档指出从 Ubuntu 17.10 开始就不再维护 rc.local 支持,但实际上我们仍然可以尝试恢复这一机制。不过需要注意这种方法可能不如直接利用 modern systemd 更加稳定可靠。 如果坚持要这么做,则需完成以下几个步骤: 1. 创建或修改现有 rc.local 文件: ```bash sudo touch /etc/rc.local && sudo chmod +x /etc/rc.local sudo nano /etc/rc.local ``` 输入类似这样的内容(记得替换实际命令位置): ```bash #!/bin/sh -e /opt/start.sh exit 0 ``` 2. 安装必要的依赖包以及设置好对应的服务状态: ```bash sudo apt install --reinstall sysvinit-utils sudo systemctl unmask rc-local sudo systemctl enable rc-local sudo systemctl start rc-local ``` 通过这种方式也可以达成目的,但是鉴于其局限性和潜在风险建议优先考虑前一种方案即基于 systemd services 实现自动化任务调度[^2]. ```python print("Example Python Code Block") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值