简介:systemd(系统守护进程)是Linux操作系统中的init系统和服务管理器,由Lennart Poettering主导开发,在LGPL 2.1及其后续版本许可证下开源发布。作为Linux系统的基本构建基块套件,systemd以PID 1进程运行并负责启动系统其余组件,提供按需启动守护程序、自动挂载点维护、进程跟踪及服务依赖关系管理功能。其技术特征包括Socket激活式服务、Cgroups进程追踪机制,并通过WSL子系统实现跨平台服务管理支持。systemd-python是Python语言的库,用于与systemd系统服务进行交互,提供对systemd日志(journal)、守护进程(daemon)等功能的访问。
历史攻略:
Python:多进程,多线程,协程基础案例
Python:aiomultiprocess实现协程与多进程的强强联合

安装:
步骤1:安装系统开发库

systemd-python 是一个需要编译的 Python 包,它依赖于系统的开发库。

# 对于 Ubuntu/Debian 系统:
apt update
apt install -y pkg-config libsystemd-dev build-essential

# 对于 CentOS/RHEL/Alibaba Cloud Linux 系统:
yum install -y pkgconfig systemd-devel gcc python3-devel
dnf install -y pkgconfig systemd-devel gcc python3-devel

步骤2:pip安装 systemd-python

pip install systemd-python

案例:
1、创建简单的 Python 脚本:/root/simple-service.py

#!/usr/bin/env python3
import time
import systemd.daemon
def main():
    print("简单服务启动中...")

    # 告诉 systemd 服务已就绪
    systemd.daemon.notify('READY=1')

    # 简单的主循环
    count = 0
    while True:
        print(f"服务运行中... 计数: {count}")
        count += 1
        time.sleep(2)
if __name__ == "__main__":
    main()

2、创建 systemd 服务文件:/etc/systemd/system/simple-python.service

[Unit]
Description=Simple Python Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 /root/simple-service.py
WorkingDirectory=/root/
Restart=always

[Install]
WantedBy=multi-user.target

3、启用和管理服务

# 重新加载 systemd
systemctl daemon-reload

# 启动服务
systemctl start simple-python

# 查看状态
systemctl status simple-python

# 查看日志
journalctl -u simple-python -f

# 停止服务
systemctl stop simple-python

4、运行结果:

(base) root@iZwz97aveou7xd62qsx1kfZ:~# systemctl stop simple-python
(base) root@iZwz97aveou7xd62qsx1kfZ:~# systemctl status simple-python
● simple-python.service - Simple Python Service
   Loaded: loaded (/etc/systemd/system/simple-python.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Nov 26 01:31:11 iZwz97aveou7xd62qsx1kfZ systemd[1]: simple-python.service: Failed with result 'exit-code'.
Nov 26 01:31:11 iZwz97aveou7xd62qsx1kfZ systemd[1]: simple-python.service: Service hold-off time over, scheduling restart.
Nov 26 01:31:11 iZwz97aveou7xd62qsx1kfZ systemd[1]: simple-python.service: Scheduled restart job, restart counter is at 5.
Nov 26 01:31:11 iZwz97aveou7xd62qsx1kfZ systemd[1]: Stopped Simple Python Service.
Nov 26 01:31:11 iZwz97aveou7xd62qsx1kfZ systemd[1]: simple-python.service: Start request repeated too quickly.
Nov 26 01:31:11 iZwz97aveou7xd62qsx1kfZ systemd[1]: simple-python.service: Failed with result 'exit-code'.
Nov 26 01:31:11 iZwz97aveou7xd62qsx1kfZ systemd[1]: Failed to start Simple Python Service.
Nov 27 22:10:04 iZwz97aveou7xd62qsx1kfZ systemd[1]: Started Simple Python Service.
Nov 27 22:13:47 iZwz97aveou7xd62qsx1kfZ systemd[1]: Stopping Simple Python Service...
Nov 27 22:13:47 iZwz97aveou7xd62qsx1kfZ systemd[1]: Stopped Simple Python Service.
(base) root@iZwz97aveou7xd62qsx1kfZ:~# systemctl start simple-python
(base) root@iZwz97aveou7xd62qsx1kfZ:~# systemctl status simple-python
● simple-python.service - Simple Python Service
   Loaded: loaded (/etc/systemd/system/simple-python.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2025-11-27 22:13:56 CST; 1s ago
 Main PID: 16715 (python3)
    Tasks: 1 (limit: 2235)
   CGroup: /system.slice/simple-python.service
           └─16715 /usr/bin/python3 /root/simple-service.py

Nov 27 22:13:56 iZwz97aveou7xd62qsx1kfZ systemd[1]: Started Simple Python Service.
(base) root@iZwz97aveou7xd62qsx1kfZ:~# 

小结: systemd-python为Python开发者打开了一扇通往系统管理的新大门。无论是日志分析、服务监控,还是系统状态管理,它都能提供强大而灵活的支持。可以让Python的强大生态与systemd的系统管理能力完美结合,打造属于专属智能运维工具!

温馨提示:在生产环境使用前,请务必在测试环境中充分验证,确保脚本的稳定性和安全性。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐