如何在systemd配置中有条件地运行不同的文件?

nbr*_*ing 2 systemd ubuntu-16.04

我希望这不是一个重复的问题。Systemd真的很难搜索......

我有一个 systemd 文件,看起来像

[Unit]
Description=My Daemon

[Service]
User=root
Type=simple
PIDFile=/var/run/app.pid
ExecStart=/usr/bin/python /opt/app/app.pyc
Restart=always

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

我希望 ExecStart 运行 /usr/bin/python /opt/app/app.pyc 如果它存在并运行 /usr/bin/python /opt/app/app.py 如果它不存在。

目标是在部署的系统上不会有一个 py 文件,只有一个 pyc,但在开发系统上我们可能只有一个 py 文件。我怎样才能让它发挥作用?

Mar*_*erg 5

制作一个小 bash 脚本,它可以执行您想要的操作,然后将该脚本放在ExecStart行上。

  #!/bin/bash
  if [ -f  /opt/app/app.pyc ];
  then
    exec /opt/app/app.pyc
  else
    exec /opt/app/app.py
  fi
Run Code Online (Sandbox Code Playgroud)