![作为服务运行时,Teamcity 不会启动,但实际命令工作正常](https://linux22.com/image/96434/%E4%BD%9C%E4%B8%BA%E6%9C%8D%E5%8A%A1%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%8CTeamcity%20%E4%B8%8D%E4%BC%9A%E5%90%AF%E5%8A%A8%EF%BC%8C%E4%BD%86%E5%AE%9E%E9%99%85%E5%91%BD%E4%BB%A4%E5%B7%A5%E4%BD%9C%E6%AD%A3%E5%B8%B8.png)
我正在尝试将 teamcity 设置为家庭服务器,但我似乎无法运行该服务。这是在 ubuntu 16.04 上。
我按照说明进行操作这里直到安装和配置数据库部分。 (除了我只是使用 /opt/Teamcity 而不是 /opt/jetbrains/Teamcity)
现在,当我尝试运行该服务时,我得到了这个
sudo service teamcity start
Job for teamcity.service failed because the control process exited with error code. See "systemctl status teamcity.service" and "journalctl -xe" for details.
但是,当我在脚本中执行实际命令时
sudo start-stop-daemon --start -c teamcity --exec /opt/TeamCity/bin/runAll.sh start
效果很好。有任何想法吗?
编辑
这是输出journalctl -xe
Oct 13 23:15:59 Home-Server sudo[8224]: ryan : TTY=pts/8 ; PWD=/opt/TeamCity/bin ; USER=root ; COMMAND=/usr/sbin/service teamcity start
Oct 13 23:15:59 Home-Server sudo[8224]: pam_unix(sudo:session): session opened for user root by ryan(uid=0)
Oct 13 23:15:59 Home-Server systemd[1]: Starting teamcity.service...
-- Subject: Unit teamcity.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit teamcity.service has begun starting up.
Oct 13 23:15:59 Home-Server systemd[8256]: teamcity.service: Failed at step EXEC spawning /etc/init.d/teamcity: Exec format error
-- Subject: Process /etc/init.d/teamcity could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- The process /etc/init.d/teamcity could not be executed and failed.
--
-- The error number returned by this process is 8.
Oct 13 23:15:59 Home-Server systemd[1]: teamcity.service: Control process exited, code=exited status=203
Oct 13 23:15:59 Home-Server systemd[1]: Failed to start teamcity.service.
-- Subject: Unit teamcity.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit teamcity.service has failed.
--
-- The result is failed.
Oct 13 23:15:59 Home-Server systemd[1]: teamcity.service: Unit entered failed state.
Oct 13 23:15:59 Home-Server systemd[1]: teamcity.service: Failed with result 'exit-code'.
Oct 13 23:15:59 Home-Server sudo[8224]: pam_unix(sudo:session): session closed for user root
答案1
10 月 13 日 23:15:59 Home-Server systemd[8256]: teamcity.service: 步骤 EXEC 生成失败 /etc/init.d/teamcity: Exec 格式错误 -- 主题:进程 /etc/init.d/teamcity 无法执行
......它准确地告诉您问题是什么。您的文件不是可执行脚本。它也不是 Debian 政策为旧的 van Smoorenburg 脚本规定的正确形式rc
,甚至缺少 van Smoorenburg 脚本的旧 RedHat/SuSE 标头rc
,更不用说几年前在 Debian 上强制使用的 LSB 标头了。
但修复它也是浪费时间。把它扔掉。使用 systemd 服务单元。
您正在使用一种机制两次在 Ubuntu 上被取代,一次被 upstart 取代,然后又被 systemd 取代。
现在是 2016 年,迁移到 systemd 的第一条规则适用。然而,你应该忽略过去几年的许多人(例如本·怀特海德和这个无名之人)谁会让你为 systemd House of Horror 创建另一个候选者。 不要将一个穷人的守护进程管理程序(用 shell 脚本写得很糟糕)包装在一个 systemd 单元内。
[单元] 描述=TeamCity 文档=https://unix.stackexchange.com/a/316369/5132 [服务] 类型=简单 用户=teamcity 环境=TEAMCITY_DATA_PATH=/opt/jetbrains/TeamCity/.BuildServer 环境=TEAMCITY_SERVER_OPTS=-Djava.awt.headless=true ExecStart=/opt/jetbrains/TeamCity/bin/runAll.sh 运行 [安装] WantedBy=多用户.target
进一步阅读
- https://unix.stackexchange.com/a/316168/5132
- https://askubuntu.com/a/626858/43344
- 乔纳森·德博因·波拉德 (2015)。 systemd 恐怖屋。经常给出的答案。