我正在学习如何使用 systemd 创建服务。我收到此错误:
.service: Start request repeated too quickly.
我无法再启动该服务;昨天还在工作。我究竟做错了什么?
(root@Kundrum)-(11:03:19)-(~)
$nano /lib/systemd/system/swatchWATCH.service
1 [Unit]
2 Description=Monitor Logfiles and send Mail reports
3 After=syslog.target network.target
4
5 [Service]
6 Type=simple
7 ExecStart=/usr/bin/swatch --config-file=/home/kristjan/.swatchrc --input-record-separator="\n \n " --tail-file=/var/log/snort/alert --daemon
8 Restart=on-failure
9 StartLimitInterval=3
10 StartLimitBurst=100
11
12 [Install]
13 WantedBy=multi-user.target
StartLimitInterval
我StartLimitBurst
在尝试修复它后添加了它。
我的系统是 Debian 9.8 Stretch all update。
答案1
首先,如果这是自定义服务,则它属于/etc/systemd/system
./lib/systemd
适用于包提供的文件。
其次,该服务可能崩溃,并且 systemd 尝试重复重新启动它,因此您需要找出它崩溃的原因。检查服务日志:
journalctl -e -u swatchWATCH
主期刊中可能会有一些额外的细节:
journalctl -e
最后,检查一下是否可以直接在 CLI 上运行:
/usr/bin/swatch --config-file=/home/kristjan/.swatchrc --input-record-separator="\n \n " --tail-file=/var/log/snort/alert --daemon
我看到你正在使用一个--daemon
选项。这通常是 systemd 的一个错误。 Systemd 为您进行守护进程。尝试删除此选项。
如果一切都失败了,请回顾一下自昨天开始工作以来发生了什么变化。
答案2
“systemd[1]:SERVICE:启动请求重复得太快”的快速解决方案是
systemctl reset-failed SERVICE
systemctl start SERVICE
systemctl status SERVICE
相关引用来自手动系统控制:
重置失败 [模式...]
...启动速率限制计数器重置为零。因此,如果达到某个单元的启动限制(如配置
StartLimitIntervalSec=/StartLimitBurst=
)并且该单元拒绝再次启动,请使用此命令使其可以再次启动。”
答案3
就我而言,错误消息有些误导。失败的原因是机器之间的复制造成的。线路
User=my_user
在我的服务配置文件中/etc/systemd/system/infinite_script.service
是罪魁祸首。
新机器不认识这个用户。改变一下就User=root
解决了这个问题。