首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制python脚本,如linux cli应用程序

控制python脚本,如linux cli应用程序
EN

Stack Overflow用户
提问于 2021-11-15 10:37:49
回答 1查看 53关注 0票数 1

我有一个python脚本,我想使用linux命令来控制它。例如,我们控制mysql:服务mysql重启

如何实现这种功能。我看到一些bash脚本可以做到这一点,但我对bash脚本一无所知。谢谢。

更新:

我在/etc/systemd/ site_monitor.py /中的site_monitor.service中包含了一个系统脚本。

代码语言:javascript
复制
[Unit]
Description=Site Monitor Service
After=multi-user.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/python3 /home/hemantsah/WisdomLeaf/site_monitor/site_monitor.py

[Install]
WantedBy=multi-user.target

在执行systemctl daemon-reload.service之后,我使用systemctl start site_monitor.service启动了该脚本

列出使用systemctl list-units --type=service的所有服务,我可以看到服务正在运行,但它没有做任何事情。

如果我使用python3 site_monitor.py在终端中运行我的python脚本,那么它就可以工作。

我刚刚发现如果我启动服务并使用sudo service site_monitor status检查状态,我在启动服务后检查,它是好的,检查一段时间后再次给我这个错误:

代码语言:javascript
复制
hemantsah@pop-os:/etc/systemd/system$ sudo service site_monitor status
● site_monitor.service - Site Monitor Service
     Loaded: loaded (/etc/systemd/system/site_monitor.service; disabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2021-11-18 10:47:30 IST; 16s ago
    Process: 111989 ExecStart=/usr/bin/python3 /home/hemantsah/WisdomLeaf/site_monitor/site_monitor.py (code=exited, status=1/FAILURE)
   Main PID: 111989 (code=exited, status=1/FAILURE)

Nov 18 10:47:30 pop-os systemd[1]: site_monitor.service: Scheduled restart job, restart counter is at 5.
Nov 18 10:47:30 pop-os systemd[1]: Stopped Site Monitor Service.
Nov 18 10:47:30 pop-os systemd[1]: site_monitor.service: Start request repeated too quickly.
Nov 18 10:47:30 pop-os systemd[1]: site_monitor.service: Failed with result 'exit-code'.
Nov 18 10:47:30 pop-os systemd[1]: Failed to start Site Monitor Service.
Nov 18 10:47:34 pop-os systemd[1]: site_monitor.service: Start request repeated too quickly.
Nov 18 10:47:34 pop-os systemd[1]: site_monitor.service: Failed with result 'exit-code'.
Nov 18 10:47:34 pop-os systemd[1]: Failed to start Site Monitor Service.

运行sudo journalctl -u site_monitor.service时出现以下错误:

代码语言:javascript
复制
Nov 18 10:10:37 pop-os systemd[1]: site_monitor.service: Scheduled restart job, restart counter is at 4.
Nov 18 10:10:37 pop-os systemd[1]: Stopped Site Monitor Service.
Nov 18 10:10:37 pop-os systemd[1]: Started Site Monitor Service.
Nov 18 10:10:37 pop-os python3[111023]: Traceback (most recent call last):
Nov 18 10:10:37 pop-os python3[111023]:   File "/home/hemantsah/WisdomLeaf/site_monitor/site_monitor.py", line 3, in <module>
Nov 18 10:10:37 pop-os python3[111023]:     from bs4 import BeautifulSoup
Nov 18 10:10:37 pop-os python3[111023]: ModuleNotFoundError: No module named 'bs4'
Nov 18 10:10:37 pop-os systemd[1]: site_monitor.service: Main process exited, code=exited, status=1/FAILURE
Nov 18 10:10:37 pop-os systemd[1]: site_monitor.service: Failed with result 'exit-code'.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-15 10:45:20

我猜你的机器上已经有systemd了,但是如果你没有,你可以通过包管理器来安装它,例如apt

代码语言:javascript
复制
sudo apt-get install systemd

然后,您可以创建自己的systemd服务。为此,只需在/etc/systemd/systemd/中创建一个类似于/etc/systemd/systemd/your_service_name.service的新文件。该文件应如下所示:

代码语言:javascript
复制
[Unit]
Description= My service
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/path/to/your/working/dir/
User=<user>
Restart=always
ExecStart=/usr/bin/python3 /path/to/your/script/<script_name>.py

[Install]
WantedBy=multi-user.target

当然,您可以使用不同的Python3二进制文件来代替/usr/bin/python3。此外,服务配置本身也可以不同,上面的示例只是一个基本的服务结构。

创建此文件(具有root权限)后,应使用以下命令重新加载守护程序:

代码语言:javascript
复制
sudo systemctl daemon-reload

如果您希望在服务器/计算机重新启动时仍启用脚本,请运行:

代码语言:javascript
复制
sudo systemctl enable your_service_name.service

最后,您可以使用以下命令启动您的服务:

代码语言:javascript
复制
sudo systemctl start your_service_name.service
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69973022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档