在 Linux 中使用 systemd
创建一个服务来运行测试脚本是一个不错的练习。下面是一个简单创建和测试一个 systemd
服务的步骤。
1. 创建测试脚本
首先,创建一个简单的脚本,例如 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
2. 创建 systemd 服务文件
接下来,创建一个 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
3. 重新加载 systemd 配置
在创建服务文件后,重新加载 systemd
配置以使其识别新的服务:
sudo systemctl daemon-reload
4. 启动服务
可以使用以下命令启动服务:
sudo systemctl start test-script.service
5. 查看服务输出
由于我们将输出定向到系统日志,可以使用 journalctl
查看输出:
sudo journalctl -u test-script.service
如果要查看最新的输出,可以使用:
sudo journalctl -u test-script.service -f
6. 设置服务开机自启(可选)
如果希望该服务在系统启动时自动启动,可以运行:
sudo systemctl enable test-script.service
7. 停止和禁用服务(可选)
要停止服务,可以运行:
sudo systemctl stop test-script.service
要禁用开机自启,可以运行:
sudo systemctl disable test-script.service
8. 其他补充
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
总结
日志更常见的做法是将输出重定向到文件或日志系统。将输出重定向到文件不仅更容易管理,还能持久保存日志信息供日后查看和分析。