当前位置: 首页 > news >正文

linux c守护进程

在 Linux 中,守护进程(Daemon)是指在后台运行、不与用户交互的进程。它们通常通过 systemdinit(如 SysVinit)或 supervisord 等系统服务管理。

下面我将从 原理、创建方式、管理方式 和 常用工具 四个方面来解释 Linux 中的守护进程。

一、守护进程的原理

守护进程是在系统启动时自动运行的进程,通常:

不与用户交互 通过标准输入/输出(stdin/stdout/stderr)与系统通信 通常使用 fork() 创建子进程,以避免阻塞主线程 通常会监听某个端口或使用 socket 与外界通信

二、守护进程的创建方式

1. 使用 nohup 启动守护进程

nohup python my_script.py > output.log 2>&1 &
nohup:让进程在后台运行,即使用户退出终端也不会终止 > output.log:将标准输出重定向到文件 2>&1:将标准错误输出也重定向到标准输出 &:将进程放到后台运行

2. 使用 systemd 创建服务(推荐)

[Unit]
Description=My Daemon Service[Service]
ExecStart=/usr/bin/python3 /path/to/my_script.py
WorkingDirectory=/path/to/
StandardOutput=syslog
StandardError=syslog
Restart=on-failure[Install]
WantedBy=multi-user.target

然后执行:

sudo systemctl enable my_daemon.service
sudo systemctl start my_daemon.service

3. 使用 init.d(SysVinit)创建服务

sudo nano /etc/init.d/my_daemon
#!/bin/bash
case  + #引号 + $1 + #引号 +  instart)echo  + #引号 + Starting my daemon... + #引号 + sudo systemctl start my_daemon;;stop)echo  + #引号 + Stopping my daemon... + #引号 + sudo systemctl stop my_daemon;;restart)sudo systemctl restart my_daemon;;*)echo  + #引号 + Usage: $0 {start|stop|restart} + #引号 + exit 1
esac
exit 0

然后启用并启动服务:

sudo update-rc.d my_daemon defaults
sudo systemctl enable my_daemon
sudo systemctl start my_daemon

三、守护进程的管理方式

1. 使用 systemctl(推荐)

sudo systemctl status my_daemon
sudo systemctl restart my_daemon
sudo systemctl stop my_daemon
sudo systemctl enable my_daemon

2. 使用 ps 查看进程

ps aux | grep my_daemon

3. 使用 tophtop 管理进程

top -p <pid>

四、常用守护进程工具

工具 描述systemd 系统和服务管理工具,推荐用于现代 Linux 发行版supervisord 用于管理多个进程的守护进程nohup 用于在后台运行进程,即使用户退出终端也不终止init 旧式 SysVinit 系统的守护进程管理工具

五、示例:使用 supervisord 管理守护进程

1. 安装 supervisord

sudo apt install supervisor  # Debian/Ubuntu
sudo yum install supervisor  # CentOS/RHEL

2. 创建 supervisord 配置文件

[supervisord]
; 系统服务管理
; 启动所有服务
; 管理多个进程[program:my_daemon]
; 进程名称
command=/usr/bin/python3 /path/to/my_script.py
; 工作目录
directory=/path/to/
; 日志文件
stdout=log_file.txt
stdout.flushInterval=10
; 重试策略
stdout_logfile_maxsize=1024
; 重启策略
autostart=true
autorestart=true
starttimeout=5
stopsignals=INT

3. 启动 supervisord

sudo supervisord

总结

类型 描述 常用工具守护进程 在后台运行的进程 systemd, supervisord, nohup, init.d管理方式 通过命令行或服务管理 systemctl, ps, top工具推荐 systemd 是现代 Linux 的首选 systemd, supervisord

如需进一步了解某个工具或具体实现,欢迎继续提问!

文章转自:[明日方舟 ] (https://www.52mwyd.com/news/19423.html)

作者:游戏攻略,转载请注明原文链接:https://www.52mwyd.com/

http://www.gsyq.cn/news/53748.html

相关文章:

  • linux c启动进程
  • 2025年知名的小型滤油机TOP品牌厂家排行榜
  • midwayjs 动态加载组件的一种方法
  • 2025年湖南长沙矩阵运营/GEO运营/抖音短视频代运营/IP打造/引流获客/推广服务公司权威推荐榜单:专业机构综合评测
  • 2025年口碑好的真空干燥机厂家最新实力排行
  • linux c函数 chm
  • linux c共享内存
  • 2025年热门的山东吨包机厂家最新权威实力榜
  • AI论文生成器推荐:6款高效工具助力毕业论文轻松完成(2025最新测评)
  • 2025年评价高的木浆棉复合百洁布优质厂家推荐榜单
  • 2025年靠谱的木浆棉品牌厂家排行榜
  • linux cvs安装
  • [引]阿里 无影 Agent 开发套件 AgentBay
  • 读社会工程:安全体系中的人性漏洞(第2版)06MAPP
  • jpeg结构分析工具 vivo的特殊的照片jpg文件格式 2
  • linux cpu内存使用情况
  • linux cpu 使用率过高
  • linux cp 并创建目录
  • linux count
  • linux cluster
  • linux centos 版本查看
  • Linux c 面试
  • 香港中文大学(深圳) CSC3001 - Discrete Mathematics 笔记
  • linux c 调用shell
  • Universal 3-Button Flip Remote Key for VW Type – KEYDIY KD B34-3 (5pcs/Lot)
  • KEYDIY KD B31-4 4-Button Universal Garage Remote Key (5pcs/Lot) for European/American Vehicles
  • 为什么一定能是三级缓存?
  • KEYDIY KD B25-3 3-Button Universal Flip Remote Key for Hyundai - 5pcs/lot
  • linux c 编程 入门
  • linux c 目录 存在