我对 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 服务
祝你节日快乐