整理Centos的启动管理(借助Chatgpt)

将这个 `updateddns.sh` 脚本放在 `startscript.sh` 中运行是可以的,但并不是最佳实践。因为它是一个无限循环的脚本,可能会带来一些问题,如无法平稳重启、停止或监控。最佳实践是将它转换为一个 **systemd** 服务,这样可以更好地管理它的启动、停止和重启。

### 最佳实践:将 `updateddns.sh` 作为 systemd 服务运行

#### 1. 编写 Shell 脚本
确保你的 `updateddns.sh` 脚本可执行,且放置在适当的目录(如 `/usr/local/bin/`):

“`bash
#!/bin/bash
while true
do
sleep 1m
myip=$(curl v4.ident.me)
curl http://***:***@api.dynu.com/nic/update?myip=$myip
sleep 2m
done
“`

确保脚本有执行权限:
“`bash
chmod +x /usr/local/bin/updateddns.sh
“`

#### 2. 创建 systemd 服务文件
在 `/etc/systemd/system/` 目录下创建一个 `.service` 文件,例如 `updateddns.service`:

“`bash
sudo nano /etc/systemd/system/updateddns.service
“`

服务文件内容如下:

“`ini
[Unit]
Description=Update DNS with Dynu API
After=network.target

[Service]
ExecStart=/usr/local/bin/updateddns.sh
Restart=always
RestartSec=60

[Install]
WantedBy=multi-user.target
“`

– `ExecStart`:指定你的脚本路径。
– `Restart=always`:确保脚本在失败时自动重启。
– `RestartSec=60`:在脚本意外退出后 60 秒再重启。

#### 3. 启动并设置开机启动
接下来,刷新 systemd 守护进程,启动服务并设置为开机自动启动:

“`bash
sudo systemctl daemon-reload
sudo systemctl start updateddns.service
sudo systemctl enable updateddns.service
“`

#### 4. 检查服务状态
你可以通过以下命令查看服务状态,确保它正常运行:

“`bash
sudo systemctl status updateddns.service
“`

### 为什么这样做是最佳实践?
– **可管理性**:通过 systemd,你可以轻松启动、停止和重启服务,避免手动操作。
– **自动重启**:如果脚本意外退出,systemd 会自动重启它。
– **日志记录**:使用 `journalctl` 查看服务的运行日志,更易于调试和监控。

这样,你的脚本运行更加安全、稳定,并且方便管理。