在 Linux 中使用 systemd 创建一个服务来运行测试脚本是一个不错的练习。下面是一个简单创建和测试一个 systemd 服务的步骤。
首先,创建一个简单的脚本,例如 test-script.sh:
#!/bin/bash
# test-script.sh
echo "Hello, this is a test script running as a systemd service!"
将上述内容保存到 /usr/local/bin/test-script.sh,并确保脚本是可执行的:
sudo chmod +x /usr/local/bin/test-script.sh
接下来,创建一个 systemd 服务文件。服务文件通常位于 /etc/systemd/system/ 目录下。可以命名为 test-script.service:
sudo nano /etc/systemd/system/test-script.service
在文件中添加以下内容:
[Unit]
Description=Test Script Service
[Service]
ExecStart=/usr/local/bin/test-script.sh
StandardOutput=journal
[Install]
WantedBy=multi-user.target
在创建服务文件后,重新加载 systemd 配置以使其识别新的服务:
sudo systemctl daemon-reload
可以使用以下命令启动服务:
sudo systemctl start test-script.service
由于我们将输出定向到系统日志,可以使用 journalctl 查看输出:
sudo journalctl -u test-script.service
如果要查看最新的输出,可以使用:
sudo journalctl -u test-script.service -f
如果希望该服务在系统启动时自动启动,可以运行:
sudo systemctl enable test-script.service
要停止服务,可以运行:
sudo systemctl stop test-script.service
要禁用开机自启,可以运行:
sudo systemctl disable test-script.service
StandardOutput=journal 将服务的标准输出重定向到 systemd 日志中。默认不填也是这个配置。
StandardOutput 和 StandardError 重定向到文件另一种更常见和简单的方法是将输出重定向到文件,然后查看文件内容:
编辑服务文件:
[Unit]
Description=Test Script Service
[Service]
ExecStart=/usr/local/bin/test-script.sh
StandardOutput=file:/var/log/test-script.log
StandardError=file:/var/log/test-script.err
[Install]
WantedBy=multi-user.target
在上述配置中,标准输出被重定向到 /var/log/test-script.log,标准错误被重定向到 /var/log/test-script.err。
重新加载 systemd 配置:
sudo systemctl daemon-reload
启动服务:
sudo systemctl start test-script.service
查看输出文件:
可以查看 /var/log/test-script.log 和 /var/log/test-script.err 文件以获取输出:
cat /var/log/test-script.log
cat /var/log/test-script.err
日志更常见的做法是将输出重定向到文件或日志系统。将输出重定向到文件不仅更容易管理,还能持久保存日志信息供日后查看和分析。