我有一个python脚本,我想使用linux命令来控制它。例如,我们控制mysql:服务mysql重启
如何实现这种功能。我看到一些bash脚本可以做到这一点,但我对bash脚本一无所知。谢谢。
更新:
我在/etc/systemd/ site_monitor.py /中的site_monitor.service中包含了一个系统脚本。
[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检查状态,我在启动服务后检查,它是好的,检查一段时间后再次给我这个错误:
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时出现以下错误:
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'.发布于 2021-11-15 10:45:20
我猜你的机器上已经有systemd了,但是如果你没有,你可以通过包管理器来安装它,例如apt
sudo apt-get install systemd然后,您可以创建自己的systemd服务。为此,只需在/etc/systemd/systemd/中创建一个类似于/etc/systemd/systemd/your_service_name.service的新文件。该文件应如下所示:
[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权限)后,应使用以下命令重新加载守护程序:
sudo systemctl daemon-reload如果您希望在服务器/计算机重新启动时仍启用脚本,请运行:
sudo systemctl enable your_service_name.service最后,您可以使用以下命令启动您的服务:
sudo systemctl start your_service_name.servicehttps://stackoverflow.com/questions/69973022
复制相似问题