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

How to run different files conditionally in systemd config?

我希望这不是一个重复的问题。 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

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

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

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

  #!/bin/bash
  if [ -f  /opt/app/app.pyc ];
  then
    exec /opt/app/app.pyc
  else
    exec /opt/app/app.py
  fi