我都存储在 “/usr/lib/systemd/system/tomcat-autostart.service”systemd脚本:在部分之外进行分配;缺少 '='
[Unit]
Description=Tomcat Autostart Script
Requires=var-www-projects.mount
After=var-www-projects.mount
[Service]
Type=forking
ExecStart=/usr/bin/tomcat-autostart start
ExecStop=/usr/bin/tomcat-autostart stop
[Install]
WantedBy=multi-user.target
以下(匿名)systemd称为Tomcat的autostart.service脚本,运行
后sudo systemctl daemon-reload
sudo systemctl enable tomcat-autostart.service
我得到的错误信息:
Failed to execute operation: Bad message
而且我也得在/ var/log/messages中下面的输出
Feb 17 11:29:53 cheese systemd: [/usr/lib/systemd/system/tomcat-autostart.service:1] Assignment outside of section. Ignoring.
Feb 17 11:29:53 cheese systemd: tomcat-autostart.service lacks both ExecStart= and ExecStop= setting. Refusing.
Feb 17 11:29:53 cheese systemd: [/usr/lib/systemd/system/tomcat-autostart.service:1] Missing '='.
Feb 17 11:29:53 cheese systemd: [/usr/lib/systemd/system/tomcat-autostart.service:1] Missing '='.
我让它工作了一段时间,然后我在“[Unit]”行上添加了一些注释,并且它停止工作。然后我删除了这些注释,并可能无意中修改了脚本中的其他内容,之后我再也无法使用它了。
它似乎取悦它在它自己的矛盾。第一个错误消息说第一行有一个赋值('[Unit]'),第三个说明赋值缺少'='符号。所以基本上,'[Unit]'是一项任务,除非它不是因为缺少'='符号。
搜索这个问题已确定所述第二错误消息是他人的直接原因。由于它忽略了节标题,因此它从不读取ExecStart和ExecStop声明。如果我能解决第一和第三的错误信息,我应该能够
什么是我的脚本的实际问题?运行'sudo/usr/bin/tomcat-autostart start'按预期运行成功,并且Internet错误消息中最常见的原因是脚本不使用绝对路径(在这种情况下,我会这样做)
我仔细检查了匿名没有改变任何东西。被更改的行是Description,Requires,After,ExecStart和ExecStop行,以及* .service文件的文件名。文件中没有任何单引号。 将文件移动到'/ etc/systemd/system'没有改变任何东西,除了'/ var/log/messages'中的输出(现在引用了'/etc/systemd/system/tomcat-autostart.service ',而不是'/ usr/lib/systemd/system/tomcat-autostart.service')但是,我将在未来使用该目录。 –
查看提及'systemd-analysis verify'工具的更新答案。 –