Linux 后台进程管理实战:nohup  与 jobs/fg/bg/kill 的 4 种组合用法
Linux 后台进程管理实战nohup 与 jobs/fg/bg/kill 的 4 种组合用法在 Linux 系统中后台进程管理是每个开发者必须掌握的技能。无论是运行长时间任务还是处理突发需求灵活运用 nohup 结合 jobs、fg、bg、kill 等命令能显著提升工作效率。本文将深入探讨 4 种典型场景下的实战组合用法帮助您从会用进阶到精通。1. 基础环境准备与进程启动在开始之前我们需要明确几个核心概念。nohupno hang up命令用于在用户注销或终端关闭后仍保持进程运行而 符号则用于将进程放入后台执行。两者常结合使用nohup python data_processing.py output.log 21 这个命令做了以下几件事使用 nohup 确保进程不受终端关闭影响将标准输出重定向到 output.log 文件将标准错误也重定向到标准输出21最后的 使进程在后台运行重要参数对比参数组合终端关闭影响CtrlC 影响输出位置command进程终止进程终止终端command 进程终止无影响终端nohup command无影响进程终止nohup.outnohup command 无影响无影响nohup.out提示在生产环境中建议始终使用完整的重定向格式 file 21避免日志文件无限增长占用磁盘空间。2. 进程状态监控与切换技巧启动后台进程只是第一步真正的功夫在于如何有效管理这些进程。jobs 命令家族是我们的得力助手# 查看当前终端关联的后台任务 jobs -l典型输出示例[1] 12345 running nohup python train_model.py [2] - 12346 suspended nohup data_import.sh [3] 12347 running nohup monitor_service.py状态标识解读running进程正在运行suspended进程被暂停通常由 CtrlZ 触发done进程已完成terminated进程被终止进程状态转换操作挂起当前前台进程# 按下 CtrlZ恢复挂起的进程fg %1 # 恢复到前台运行 bg %1 # 恢复到后台运行在前后台之间切换fg %2 # 将2号任务调到前台 # 然后 CtrlZ 挂起 bg %2 # 让其在后台继续运行注意jobs 命令只能查看当前终端启动的进程。若需要查看所有进程应使用ps aux | grep 进程名。3. 精准定位与终止进程当需要终止进程时精准定位是关键。以下是几种实用的进程定位方法方法一通过 jobs 定位jobs -l # 获取任务编号和PID kill %1 # 终止1号后台任务 kill -9 %2 # 强制终止2号任务方法二通过 ps 命令查找# 精确查找Python进程 ps aux | grep python train_model | grep -v grep # 提取PID并终止 kill $(ps aux | grep python train_model | grep -v grep | awk {print $2})方法三通过端口号查找# 查找占用8080端口的进程 lsof -i :8080 # 或者使用netstat netstat -tulnp | grep 8080kill 信号对照表信号编号信号名作用描述1SIGHUP挂起通常用于重新加载配置2SIGINT中断等同CtrlC9SIGKILL强制终止15SIGTERM优雅终止默认信号18SIGCONT继续运行被暂停的进程19SIGSTOP暂停进程最佳实践是先用 SIGTERM默认尝试正常终止若无效再使用 SIGKILLkill -15 12345 # 先尝试正常终止 sleep 5 # 等待5秒 kill -9 12345 # 强制终止4. 高级应用场景与疑难解决场景一长时间运行的数据处理nohup spark-submit --master yarn \ --deploy-mode client \ --executor-memory 8G \ data_processing.py spark.log 21 场景二避免 nohup.out 无限增长# 使用logrotate定期轮转日志 nohup ./service.sh /var/log/service/service.log 21 配置 logrotate/etc/logrotate.d/service/var/log/service/service.log { daily rotate 30 compress missingok notifempty copytruncate }常见问题解决方案进程意外终止检查系统日志/var/log/messages或journalctl -xe使用dmesg | grep -i kill查看是否被OOM killer终止资源监控# 实时监控进程资源使用 top -p $(pgrep -d, -f python train_model)进程树管理# 查看进程树关系 pstree -p 12345 # 终止整个进程组 kill -- -$(ps -o pgid 12345)nohup 输出延迟# 使用stdbuf禁用输出缓冲 nohup stdbuf -oL -eL python script.py output.log 21 5. 自动化管理与最佳实践对于需要长期运行的服务建议采用系统级管理方式使用 systemd 服务推荐# /etc/systemd/system/my_service.service [Unit] DescriptionMy Python Service [Service] ExecStart/usr/bin/python /path/to/service.py WorkingDirectory/path/to/ Userservice_user Restartalways StandardOutputsyslog StandardErrorsyslog [Install] WantedBymulti-user.target管理命令sudo systemctl daemon-reload sudo systemctl start my_service sudo systemctl enable my_servicecrontab 中的 nohup 使用# 错误示范可能导致任务堆积 * * * * * nohup python script.py # 正确做法确保单实例运行 * * * * * flock -n /tmp/script.lock -c nohup python script.py /dev/null 21性能监控脚本示例#!/bin/bash PID$(pgrep -f python train_model) if [[ -z $PID ]]; then echo Process not found! exit 1 fi while true; do CPU$(ps -p $PID -o %cpu | tail -n 1) MEM$(ps -p $PID -o %mem | tail -n 1) echo $(date): CPU ${CPU}%, MEM ${MEM}% # 超过阈值报警 if (( $(echo $CPU 90 | bc -l) )); then echo High CPU usage detected! | mail -s Alert adminexample.com fi sleep 60 done在实际项目中我曾遇到一个典型问题某数据处理任务频繁被意外终止。通过结合使用 nohup 和 screen 最终解决了问题核心命令如下screen -S data_task nohup python process_data.py $(date %Y%m%d).log 21 # 按CtrlA然后D脱离会话这种组合方式既保证了进程不会因终端关闭而终止又方便随时重新连接查看进度。

相关新闻

OpenCV 自定义 LUT 实现伪彩色:从256x3数组到多光谱图像合成实战

OpenCV 自定义 LUT 实现伪彩色:从256x3数组到多光谱图像合成实战

OpenCV 自定义 LUT 实现伪彩色:从256x3数组到多光谱图像合成实战第一次看到NASA发布的蟹状星云图像时,我被那些绚丽的色彩震撼了。但后来才知道,这些看似真实的宇宙色彩,实际上是通过X射线、红外线和可见光等多光谱数据合成的伪彩…

2026/7/6 12:06:46 阅读更多 →
glibc 2.31 源码升级风险规避:3个关键备份与回滚策略(附CentOS 7实测)

glibc 2.31 源码升级风险规避:3个关键备份与回滚策略(附CentOS 7实测)

glibc 2.31 源码升级风险规避:3个关键备份与回滚策略(附CentOS 7实测)在Linux系统中,glibc作为核心C库,其升级操作堪称"心脏手术"——任何失误都可能导致系统瘫痪。当Python模块报错GLIBC_2.25 not found时&…

2026/7/6 12:02:44 阅读更多 →
MacBook Pro M3 系列外接 4K 显示器 5 个关键设置:从 HiDPI 到色彩匹配

MacBook Pro M3 系列外接 4K 显示器 5 个关键设置:从 HiDPI 到色彩匹配

MacBook Pro M3 系列外接 4K 显示器的专业调校指南 对于设计师、视频剪辑师和程序员等专业用户来说,MacBook Pro M3 系列搭配高分辨率显示器可以大幅提升工作效率和视觉体验。但要让这套组合发挥最大潜力,仅完成基础连接是远远不够的。本文将深入解析五…

2026/7/6 12:02:44 阅读更多 →

最新新闻

OpenCV 4.8 频域滤波实战:3步消除图像边缘效应与指纹环带分析

OpenCV 4.8 频域滤波实战:3步消除图像边缘效应与指纹环带分析

OpenCV频域滤波实战:消除边缘效应与指纹环带分析的三步法则频域滤波的核心挑战与解决方案当我们把图像从空间域转换到频域进行分析时,总会遇到两个典型问题:图像边缘突变导致的频谱干扰和特定纹理(如指纹)的环状频域特…

2026/7/6 12:51:36 阅读更多 →
OpenCV 4.8 图像频域分析实战:5种经典纹理频谱特征提取与可视化

OpenCV 4.8 图像频域分析实战:5种经典纹理频谱特征提取与可视化

OpenCV 4.8 图像频域分析实战:5种经典纹理频谱特征提取与可视化在数字图像处理领域,频域分析为我们打开了观察图像的全新视角。通过傅里叶变换,我们能够将图像从空间域转换到频率域,揭示隐藏在像素背后的周期性结构和纹理特征。本…

2026/7/6 12:51:36 阅读更多 →
DBNet 文本检测实战:基于PaddleOCR 2.7 从训练到部署的5个关键步骤

DBNet 文本检测实战:基于PaddleOCR 2.7 从训练到部署的5个关键步骤

DBNet文本检测实战:基于PaddleOCR 2.7的工业级落地指南当OCR技术遇上复杂多变的现实场景,传统文本检测方法往往在弯曲文本、密集排列或低对比度环境下表现乏力。DBNet(Differentiable Binarization)通过将二值化过程融入神经网络架…

2026/7/6 12:51:36 阅读更多 →
KMS_VL_ALL_AIO:3分钟搞定Windows和Office激活的智能工具箱

KMS_VL_ALL_AIO:3分钟搞定Windows和Office激活的智能工具箱

KMS_VL_ALL_AIO:3分钟搞定Windows和Office激活的智能工具箱 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office激活烦恼吗?面对复杂的命令行工具不知所…

2026/7/6 12:51:36 阅读更多 →
AIC/BIC 模型选择实战:Python 3步实现线性回归与Lasso变量筛选

AIC/BIC 模型选择实战:Python 3步实现线性回归与Lasso变量筛选

AIC/BIC 模型选择实战:Python 3步实现线性回归与Lasso变量筛选在数据科学和机器学习领域,模型选择是一个永恒的话题。面对同一个数据集,我们往往可以构建无数个不同的模型,但如何从中选出最优的那个?这就是AIC&#xf…

2026/7/6 12:49:33 阅读更多 →
AI视频生成实战:扣子SKILL一键制作产品宣传片

AI视频生成实战:扣子SKILL一键制作产品宣传片

1. AI视频生成实战:用扣子SKILL一键制作产品宣传片 最近在帮客户制作产品宣传片时,发现了一个效率神器——扣子平台的Seedance 2.0视频生成功能。这个工具最吸引我的地方在于,它把原本需要专业团队协作数天的工作流程,简化成了几个…

2026/7/6 12:49:33 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻