你更愿意要钱还是自由?

挂起进程的原理

Linux通过信号(Signal)控制进程状态:

  • SIGSTOP (19):强制暂停进程(不可被进程忽略)。
  • SIGCONT (18):恢复被暂停的进程。
  • SIGTSTP (20):终端发出的暂停信号(可被进程捕获处理)。

操作步骤

查找目标进程ID(PID)

使用 ps 或 pgrep 定位进程:

ps aux | grep "进程名"  # 示例:ps aux | grep nginxpgrep -f "进程名"      # 示例:pgrep -f python

输出示例:

ubuntu   12345  0.5  1.2 215000 9400 ?        Sl   10:00   0:01 nginx: worker process

此处 12345 即目标PID。

挂起进程

通过 kill 命令发送 SIGSTOP 信号:

kill -SIGSTOP 12345  # 将12345替换为实际PID

或使用信号编号:

kill -19 12345

验证进程状态

检查进程是否暂停:

ps -o pid,state,cmd -p 12345

输出中 STATE 列为 T(暂停)或 T+(前台暂停)即表示成功。

恢复进程

发送 SIGCONT 信号恢复运行:

kill -SIGCONT 12345  # 或 kill -18 12345

其他挂起方法

方法1:通过作业控制(适用于前台进程)

  1. 运行程序(如 ./my_script.sh)。
  2. 按 Ctrl+Z 发送 SIGTSTP 信号挂起。
  3. 输入 bg 切到后台运行,或 fg 恢复前台。

方法2:使用 pkill 或 killall(按进程名操作)

pkill -STOP "进程名"    # 挂起:pkill -19 "nginx"
killall -SIGCONT "进程名" # 恢复

注意事项

  1. 权限要求:

    • 普通用户只能挂起自己的进程。
    • 系统进程需 sudo 权限(如 sudo kill -19 PID)。
  2. 风险规避:

    • 关键服务(如数据库)挂起可能导致数据丢失,务必提前保存状态。
    • 避免挂起系统核心进程(如 systemd、init)。
  3. 状态确认:

    • 挂起后进程仍占用内存,但停止CPU占用。
    • 长期暂停可能触发系统监控告警(如 systemd 重启服务)。
  4. 信号选择:

    • SIGSTOP(19)确保立即暂停(推荐)。
    • SIGTSTP(20)允许进程清理后暂停(如保存临时文件)。

典型应用场景

  • 资源调控:暂停非紧急任务(如备份脚本),保障高优先级进程运行。
  • 调试程序:冻结进程状态以检查内存或文件句柄。
  • 批量管理:结合脚本暂停/恢复一组进程(如 pkill -STOP -f "pattern")。

挂起Linux进程的核心是 kill -19 PID(暂停) 和 kill -18 PID(恢复),操作前务必确认PID准确性,并评估对系统的影响,对于生产环境,建议在测试后操作,或使用进程管理工具(如 systemctl pause 服务)实现更安全的控制。

引用说明基于Linux内核信号处理机制(参见 man 7 signal)及GNU Coreutils工具集(kill、ps等)的官方文档,实践方法参考Linux系统管理员社区(如Server Fault)的通用操作规范。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9422.html

赞 (0)
酷番叔酷番叔
上一篇 2025年7月31日 11:17
下一篇 2025年7月31日 11:31

相关推荐

  • Linux系统启动的详细步骤是怎样的?

    Linux系统的启动是一个涉及硬件、固件和软件协同工作的复杂过程,从用户按下电源键到最终进入用户界面,经历了一系列精心设计的初始化阶段,理解这一流程不仅有助于系统管理,也能在出现启动故障时快速定位问题,以下从硬件加电开始,逐步拆解Linux系统的完整启动链路,电源开启与BIOS/UEFI初始化按下电源键后,计算……

    2025年9月22日
    25700
  • 如何定义函数?

    在Linux系统中,脚本(Script)是通过解释器执行的文本文件,用于自动化重复任务、管理系统或部署应用,以下是详细的脚本编写指南,遵循Linux最佳实践:脚本基础结构Shebang行(必需)首行指定解释器路径,告知系统用哪个程序执行脚本:#!/bin/bash # 使用Bash解释器#!/usr/bin/e……

    2025年6月24日
    26400
  • Linux下如何安装NVIDIA显卡驱动?

    在Linux系统上安装NVIDIA显卡驱动是提升图形性能、支持CUDA加速等应用的关键步骤,尤其对于需要GPU加速计算、游戏或专业图形设计的用户而言,本文将详细介绍在主流Linux发行版(如Ubuntu/Debian、RHEL/CentOS)上安装NVIDIA驱动的完整流程,包括准备工作、驱动获取、安装步骤、配……

    2025年9月21日
    69100
  • linux 虚拟机如何退出全屏显示

    Linux 虚拟机中,通常可以按 Ctrl + Alt + Enter

    2025年8月17日
    22400
  • Linux网卡驱程安装新手如何操作?步骤详解与常见问题解决

    在Linux系统中安装网卡驱动是解决网络连接问题的关键步骤,尤其是当默认内核未包含特定硬件的驱动时,本文将详细介绍完整的安装流程,从硬件识别到驱动配置,涵盖开源与闭源驱动的不同处理方式,帮助用户顺利完成网络适配器的驱动安装,识别网卡硬件信息在安装驱动前,首先需要准确识别网卡的型号和厂商信息,这是获取对应驱动的前……

    2025年9月17日
    24600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信