在 RedHat 7.9 上的 systemd 服务 ExecStart 中使用 && 执行多个命令

2023-11-25

我在 Red Hat Enterprise Linux Server 7.9 (Maipo) 上有这个 systemd 服务

[Unit]
Description = EUM Server Service
PartOf=eum.service
# Start this unit after the app.service start
After=eum.service
After=eum-db.service

[Service]
Type=forking
User=root
WorkingDirectory=/prod/appdynamics/EUMServer/eum-processor/
ExecStart=/usr/bin/sleep 45 && /bin/bash bin/eum.sh start
RemainAfterExit=true
ExecStop=/bin/bash bin/eum.sh stop

[Install]
WantedBy=multi-user.target

失败是因为它试图选择之后的所有内容/usr/bin/sleep作为该命令的参数。我只想执行/usr/bin/sleep 45并成功执行bin/eum.sh start。我怎样才能让它发挥作用?

● eum-server.service - EUM Server Service
   Loaded: loaded (/etc/systemd/system/eum-server.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Fri 2021-07-02 00:00:53 CEST; 9min ago
  Process: 13860 ExecStart=/usr/bin/sleep 45 && /bin/bash bin/eum.sh start (code=exited, status=1/FAILURE)

Jul 02 00:00:53 lmlift06mnp001 systemd[1]: Starting EUM Server Service...
Jul 02 00:00:53 lmlift06mnp001 sleep[13860]: /usr/bin/sleep: invalid time interval ‘&&’
Jul 02 00:00:53 lmlift06mnp001 sleep[13860]: /usr/bin/sleep: invalid time interval ‘/bin/bash’
Jul 02 00:00:53 lmlift06mnp001 sleep[13860]: /usr/bin/sleep: invalid time interval ‘bin/eum.sh’
Jul 02 00:00:53 lmlift06mnp001 sleep[13860]: /usr/bin/sleep: invalid time interval ‘start’
Jul 02 00:00:53 lmlift06mnp001 sleep[13860]: Try '/usr/bin/sleep --help' for more information.
Jul 02 00:00:53 lmlift06mnp001 systemd[1]: eum-server.service: control process exited, code=exited status=1
Jul 02 00:00:53 lmlift06mnp001 systemd[1]: Failed to start EUM Server Service.
Jul 02 00:00:53 lmlift06mnp001 systemd[1]: Unit eum-server.service entered failed state.
Jul 02 00:00:53 lmlift06mnp001 systemd[1]: eum-server.service failed.

命令行没有提供给 shell,所以&&无效。例如,您需要

ExecStart=/bin/bash -c 'sleep 45 && /bin/bash bin/eum.sh start'

或者你可以将命令分成

ExecStartPre=/usr/bin/sleep 45
ExecStart=/bin/bash bin/eum.sh start
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 RedHat 7.9 上的 systemd 服务 ExecStart 中使用 && 执行多个命令 的相关文章

随机推荐