当应用程序在systemd服务上运行时,Bash脚本返回EmptyString



我有一个应用程序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

如果我直接运行应用程序,那么它可以正常工作;如果我从服务运行,它不工作。下面是日志

/var/www/get-manufacturer.sh: line 2: sudo: command not found

提前感谢您的解决方案。

将行Environment="PATH=/home/fx/fx_demo_all_modules/fastapi/venv/bin"更改为以下内容:Environment="PATH=/home/fx/fx_demo_all_modules/fastapi/venv/bin:/sbin:/bin:/usr/sbin:/usr/bin"

相关内容

  • 没有找到相关文章