关于服务、python 和控制台的新手问题

关于服务、python 和控制台的新手问题

我对 ubuntu 和 python 脚本都很陌生。我编写了一个 python 脚本,当从 shell 启动时,它会监视一些事件并将这些事件写入 shell。所有这一切都运行良好。

我希望 python 脚本在启动时作为服务运行,并使用 systemd 启动我的 .sh 文件。现在,启动后,如果我检查服务的状态,它会显示它正在运行,但不会写入 shell。

我搜索了好多遍,想看看如何以可见的方式获取脚本的反馈,但无济于事。有人能给我指点一下吗?

谢谢大家。节日快乐。

答案1

您必须准确地告诉系统您希望脚本使用哪个 $DISPLAY。

由于在启动时(登录前)不能激活 $DISPLAY,因此您似乎遇到了设计问题。

大多数人将他们的脚本写入文件、日志或其他服务,然后使用具有 $DISPLAY 的不同进程检索值。

答案2

我不太明白为什么你需要这个.sh文件...如果你需要运行 Python 脚本并获取日志,这通常是通过日志文件完成的。我会这样做:

在主文件夹中创建脚本:

touch ~/example.py
nano ~/example.py

在 example.py 中:

from datetime import datetime
import time

while True:
    time.sleep(1)
    mytime = datetime.now().strftime("%m/%d/%Y, %H:%M:%S")
    with open("example.log", "a") as myfile:
        myfile.write(mytime + "\n")

接下来将创建一个服务:

sudo chmod +x ~/example.py
sudo touch /etc/systemd/system/example.service
sudo nano /etc/systemd/system/example.service

在服务文件中:

[Unit]
Description=Example

[Service]
WorkingDirectory=/home/user/
ExecStart=/usr/bin/python3 /home/user/example.py
Restart=on-failure

[Install]
WantedBy=multi-user.target

充值服务:

sudo systemctl daemon-reload

然后您就可以使用该服务:

sudo systemctl start example
sudo systemctl enable example
cat ~/example.log

有时您可以使用print("")。然后服务日志将通过以下命令发出:journalctl -u example -b


您可以使用我的应用程序在 Ubuntu 中创建服务,其中该算法从用户中抽象出来以简化:Linux 服务


祝你节日快乐

相关内容