【发布时间】:2022-09-14 12:29:13
【问题描述】:
我有应用程序 FastAPI,我直接通过以下命令运行
gunicorn app.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0
它工作正常。现在我通过 systemd 服务为这个应用程序提供服务
[Unit]
Description=To run FX FastAPI backend through gunicorn
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/home/fx/fx_demo_all_modules/fastapi/
Environment="PATH=/home/fx/fx_demo_all_modules/fastapi/venv/bin"
ExecStart=/home/fx/fx_demo_all_modules/fastapi/venv/bin/gunicorn app.main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0
[Install]
WantedBy=multi-user.target
服务文件的位置是/etc/systemd/system,并且我将所有者从 root 更改为 fx
服务也很好。
当我从 python 运行 bash 脚本时出现问题
manufacturer = subprocess.check_output(['/var/www/get-manufacturer.sh'])
脚本如下
#! /bin/bash
var=$(sudo dmidecode -s system-manufacturer)
echo $var
如果我直接运行应用程序,那么如果我从服务中运行它就可以正常工作,但它不起作用。以下是 journalctl 日志
/var/www/get-manufacturer.sh: line 2: sudo: command not found
提前感谢您的解决方案。
【问题讨论】:
-
尝试将
sudo更改为/usr/bin/sudo和dmidecode更改为/usr/sbin/dmidecode -
尝试 sudo
/usr/bin/sudo的完整路径(运行which sudo并返回该输出以检查是否是问题所在)。
标签: python bash ubuntu service systemd