[id-0004] Linux systemd和supervisor后台程序配置操作

本文介绍了在Linux系统中如何使用systemd和supervisor管理后台程序。对于systemd,详细阐述了创建服务单元文件以监控和自动重启程序的步骤;而对于supervisor,讲解了安装、配置以及使用命令来管理进程。这两种方法都提供了程序故障后的自动恢复功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[id-0004] Linux systemd和supervisor后台程序配置操作

1. 如何关闭/查看后台进程

查看正在运行的程序PID:netstat -nap
查看指定运行程序的PID:ps -aux |grep 程序名称
强制杀掉进程:kill -9 进程PID


2. 使用systemd(推荐)

systemd是Linux中的一个系统和服务管理器,可以通过systemd来管理和监控后台运行的程序。可以创建一个systemd服务单元来监控程序的运行状态,并在程序崩溃后自动重启程序。

步骤一:创建.service文并配置

(1) 编辑命令:vim /etc/systemd/system/自定义名称.service

(2) 然后输入一下内容:

[Unit]
Description=自定义描述
After=network.target

[Service]
Type=simple
ExecStart=自定义程序路径
Restart=always

[Install]
WantedBy=multi-user.target

步骤二:重加载配置文件

命令:sudo systemctl daemon-reload

步骤三:服务的启动/关闭操作

命令:sudo systemctl enable 自定义名称.service

命令:sudo systemctl start 自定义名称.service


3. 使用supervisor(方法二)

supervisor是一个进程监控器,可以用来监控和管理后台运行的程序。可以创建一个supervisor配置文件来监控程序的运行状态,并在程序崩溃后自动重启程序。

------supervisor的常用命令-----

(1) supervisor启动:sudo systemctl start supervisord

(2) supervisor关闭:sudo systemctl stop supervisord

(3) 查看supervisor状态:sudo systemctl status supervisord — 如果supervisor服务正在运行,则会显示 active (running) 状态。

(4) supervisor重启:sudo systemctl restart supervisord

(5) 重加载配置文件:sudo supervisorctl reread


-----supervisor的安装配置-----

步骤一:添加EPEL存储库

supervisor不包含在CentOS 7的默认存储库中,需要添加EPEL存储库。

命令:sudo yum install epel-release

步骤二:supervisor安装

安装supervisor进程监控器命令:sudo yum install supervisor

步骤三:supervisor配置

编辑命令:vim /etc/supervisord.conf

;"command"选项指定要运行的程序
;"autostart"选项将在supervisor启动时自动启动该程序
;"autorestart"选项将在程序崩溃后自动重启程序
;"user"选项指定要运行程序的用户

[program:自定义名称]
command=自定义程序路径
autostart=true		
autorestart=true	
user=用户名称(例如:root...)

步骤四:重加载配置文件

命令:sudo supervisorctl reread



<think>好的,用户之前问过如何在嵌入式Linux系统中同时运行两个程序,我给出了几种方法,包括使用&符号后台运行。现在用户的新问题是关于如何管理通过&运行的多个程序。需要详细说明管理这些后台任务的方法。 首先,用户可能是在使用&运行程序后,遇到了如何跟踪或控制这些进程的问题。他们可能需要知道如何查看正在运行的后台任务,如何将任务切换到前台,或者如何终止特定的进程。 接下来,我需要回顾之前的回答,确保这次的内容不重复但补充管理部分。之前提到了jobs -l,但可能不够详细。需要详细解释jobs命令的使用,包括查看任务列表、带回前台、终止任务等。 另外,用户可能不知道除了jobs之外的其他方法,比如直接使用pskill命令管理进程,或者更高级的工具如htop。这些内容需要涵盖,以提供全面的管理方法。 还要考虑用户的实际使用场景。嵌入式系统资源有限,可能没有安装所有工具,所以需要优先推荐内置命令,如jobs、ps、kill,然后提到可能需要安装的工具如htop、supervisor。 用户可能遇到的问题包括:断开终端后进程终止,如何避免这种情况?需要提到nohupdisown命令。此外,如何监控资源使用情况,比如内存CPU,可能需要介绍top或htop。 需要分步骤解释,结构清晰。可能分为基本管理命令、进程查看、前后台切换、终止进程、脱离终端运行、资源监控、自动化工具等部分。每个部分给出具体命令示例,确保用户能跟着操作。 还要注意用户可能的错误操作,比如直接关闭终端导致进程结束,提示他们使用nohup或disown。同时,提醒他们kill命令的不同信号,比如SIGTERMSIGKILL的区别。 最后,总结推荐的方法,根据用户场景建议合适的工具,比如临时测试用jobs,长期运行用nohup或systemd,复杂管理用supervisor。确保回答实用且全面,覆盖用户可能的需求。</think>在Linux中通过`&`运行多个后台程序后,可以通过以下方法进行有效管理: --- ### **一、基本管理命令** #### 1. 查看后台任务列表 ```bash jobs -l # 显示当前会话中的后台任务(带进程ID) ``` 输出示例: ```text [1] + 1234 running ./program1 [2] - 1235 stopped ./program2 ``` #### 2. 前后台切换 | 操作 | 命令 | 说明 | |------|------|------| | 挂起当前前台任务 | `Ctrl + Z` | 将运行中的程序挂起到后台(状态变为`stopped`)| | 恢复后台任务到前台 | `fg %n` | 将任务号为n的任务调到前台(如`fg %1`)| | 恢复后台任务继续后台运行 | `bg %n` | 将stopped状态的任务转为后台运行(如`bg %2`)| --- ### **二、进程查看与终止** #### 1. 查看所有进程 ```bash ps aux | grep "program_name" # 查看特定进程 ps -efj # 查看完整进程树 top # 动态监控(按q退出) ``` #### 2. 终止进程 ```bash kill %n # 通过作业号终止(如 kill %1) kill -9 1234 # 强制终止指定PID的进程 pkill -f "program_name" # 按名称终止进程 ``` --- ### **三、脱离终端持久运行** #### 1. 防止终端关闭导致进程终止 ```bash nohup ./program1 > output.log 2>&1 & # 脱离终端运行,输出重定向 disown -h %1 # 将已有后台任务与终端解绑 ``` #### 2. 查看脱离终端的进程 ```bash ps -ef | grep "program_name" # 查看所有用户进程 lsof -p <PID> # 查看进程打开的文件 ``` --- ### **四、高级管理工具** #### 1. 资源监控 ```bash htop # 交互式进程监控(需安装) iotop -o # 监控磁盘I/O iftop # 监控网络流量 ``` #### 2. 自动化管理(推荐生产环境) ```bash # 使用systemd(需创建服务单元) systemctl status program1.service # 使用supervisor(需安装) supervisorctl restart program2 ``` --- ### **五、实用技巧** 1. **批量操作**: ```bash kill $(pgrep -f "program_pattern") # 终止匹配模式的所有进程 ``` 2. **优先级控制**: ```bash nice -n 10 ./program1 & # 启动时设置低优先级 renice 15 -p 1234 # 修改运行中进程的优先级 ``` 3. **信号管理**: ```bash kill -SIGSTOP 1234 # 暂停进程(类似Ctrl+Z) kill -SIGCONT 1234 # 恢复暂停的进程 ``` --- ### **六、管理流程图** ```text 启动程序 → ./program & │ ├─ 查看状态 → jobs -l / ps │ ├─ 前台操作 → fg %n → (Ctrl+C终止 / Ctrl+Z挂起) │ ├─ 后台恢复 → bg %n │ └─ 终止进程 → kill %n / kill -9 PID ``` --- ### **注意事项** 1. 终端关闭后,普通`&`启动的进程会随会话结束 2. 建议关键服务使用`systemd`或`supervisor`托管 3. 嵌入式设备注意`OOM Killer`可能自动终止高内存进程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天鹅打架了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值