在Linux系统中,尤其是Ubuntu这样的主流发行版里,守护进程(Daemon)是运行在后台、不依赖用户交互的长期运行程序。它们负责处理网络请求、日志记录、定时任务等关键系统功能。随着Ubuntu从早期的SysV init过渡到现代的systemd,守护进程的管理方式也发生了显著变化。本教程将带你从零开始,理解并掌握Ubuntu守护进程的创建、启动、监控和管理方法,即使是Linux小白也能轻松上手。

守护进程是一种在后台运行的特殊进程,通常以“d”结尾(如sshd、httpd、crond)。它们在系统启动时自动运行,并持续监听或执行特定任务,直到系统关闭。在Ubuntu中,这些进程由初始化系统(init system)管理。
早期Ubuntu使用SysV init脚本(位于/etc/init.d/),但自Ubuntu 15.04起,默认采用更强大的systemd作为初始化系统。因此,现代Ubuntu的systemd服务管理已成为守护进程控制的核心方式。
systemd通过“单元文件”(Unit Files)来定义服务。每个守护进程对应一个.service文件。下面我们将创建一个简单的自定义守护进程并用systemd管理它。
假设我们要运行一个每5秒记录一次时间的日志服务:
#!/usr/bin/env python3import timeimport logging# 配置日志logging.basicConfig( filename='/var/log/mydaemon.log', level=logging.INFO, format='%(asctime)s - %(message)s')if __name__ == "__main__": while True: logging.info("守护进程正在运行...") time.sleep(5)将上述代码保存为 /opt/mydaemon.py,并赋予执行权限:
sudo mkdir -p /optsudo cp mydaemon.py /opt/sudo chmod +x /opt/mydaemon.py在/etc/systemd/system/目录下创建服务文件:
sudo nano /etc/systemd/system/mydaemon.service填入以下内容:
[Unit]Description=我的自定义守护进程After=network.target[Service]Type=simpleUser=nobodyExecStart=/usr/bin/python3 /opt/mydaemon.pyRestart=alwaysRestartSec=10StandardOutput=journalStandardError=journal[Install]WantedBy=multi-user.target说明:
Description:服务描述After:在网络服务启动后再启动本服务User:以nobody用户运行(提高安全性)Restart=always:崩溃后自动重启重新加载systemd配置,然后启用并启动服务:
sudo systemctl daemon-reloadsudo systemctl enable mydaemon.servicesudo systemctl start mydaemon.service使用以下命令检查服务是否正常运行:
sudo systemctl status mydaemon.service你也可以查看日志:
sudo journalctl -u mydaemon.service -f| 命令 | 作用 |
|---|---|
systemctl start <服务名> | 启动服务 |
systemctl stop <服务名> | 停止服务 |
systemctl restart <服务名> | 重启服务 |
systemctl enable <服务名> | 设置开机自启 |
systemctl disable <服务名> | 取消开机自启 |
systemctl status <服务名> | 查看服务状态 |
通过本教程,你已经掌握了如何在Ubuntu系统中使用systemd创建和管理自定义守护进程。无论是开发自己的后台服务,还是维护系统级的Linux后台服务,这些技能都至关重要。记住,良好的守护进程应具备自动重启、日志记录和安全运行(如非root用户)等特性。
现在,你可以自信地管理任何Ubuntu系统服务了!如果你遇到问题,可以随时使用journalctl查看详细日志进行排查。
注意:操作前请确保理解每条命令的作用,避免误操作影响系统稳定性。
本文由主机测评网于2025-12-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251211112.html