我使用了这篇文章中建议的答案在我的 ubuntu 17.04 环境中创建了一个自定义服务:在 Ubuntu Server 16.04 中安装 gitblit GO 作为服务
不幸的是当我击中
sudo systemctl 启用 gitblit_server.service
我收到
无法启用单元:文件 gitblit_server.service:参数无效
為錯誤。
知道我做错了什么吗?
更新:
journalctl -xe 的结果
Sep 01 16:06:22 git-dmz01 sudo[7121]: msoadmin : TTY=pts/1 ; PWD=/etc/systemd/system ; USER=root ; COMMAND=/bin/systemctl enable gitblit_server.service
Sep 01 16:06:22 git-dmz01 sudo[7121]: pam_unix(sudo:session): session opened for user root by msoadmin(uid=0)
Sep 01 16:06:22 git-dmz01 systemd[1]: [/etc/systemd/system/gitblit_server.service:12] Missing '='.
Sep 01 16:06:22 git-dmz01 sudo[7121]: pam_unix(sudo:session): session closed for user root
我的文件 gitblit_server.service 的内容:
[Unit]
Description=gitblit Server CVS
After=network.target
[Service]
User=msoadmin
Type=simple
WorkingDirectory=/opt/gitblit
PIDFile=/var/run/gitblit.service.pid
ExecStartPre=/opt/gitblit/java-proxy-config.sh
ExecStart=/usr/bin/java -server -Xmx1024M -Djava.awt.headless=true -jar
/opt/gitblit/gitblit.jar --baseFolder /opt/gitblit/data --dailyLogFile
[Install]
WantedBy=multi-user.target
答案1
您使用错误的答案来创建自定义服务。首先,自定义服务文件不应放在其中,/lib/systemd/system
而应使用/etc/systemd/system/your_custom_file.service
。
其次,创建服务文件后,您需要运行以下命令systemct daemon-reload
通知 systemd 有关您新创建的文件的信息。请确保您已使用以下命令恢复了 SELinux 文件上下文:restorecon -RFvv /etc/systemd/system
更新之后,答案就显而易见了。
[Service]
.....
....
ExecStart=/usr/bin/java -server -Xmx1024M -Djava.awt.headless=true -jar
/opt/gitblit/gitblit.jar --baseFolder /opt/gitblit/data --dailyLogFile
....
这里,以 开头的行/opt/gitblit/..
被视为一行,而不是ExecStart
导致错误的指令的一部分。你可以简单地使用反斜杠来修复它,如下所示:
ExecStart=/usr/bin/java -server -Xmx1024M -Djava.awt.headless=true -jar \
/opt/gitblit/gitblit.jar --baseFolder /opt/gitblit/data --dailyLogFile
最后运行:
systemctl daemon-reload && systemctl enable gitblit_server.service