你更愿意要钱还是自由?

挂起进程的原理

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

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

操作步骤

查找目标进程ID(PID)

使用 pspgrep 定位进程:

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:使用 pkillkillall(按进程名操作)

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

注意事项

  1. 权限要求

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

    • 关键服务(如数据库)挂起可能导致数据丢失,务必提前保存状态。
    • 避免挂起系统核心进程(如 systemdinit)。
  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工具集(killps等)的官方文档,实践方法参考Linux系统管理员社区(如Server Fault)的通用操作规范。

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

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

相关推荐

  • 电脑无法启动?bootx64.efi丢失该选哪个?

    基本原理Linux通过以下机制识别U盘:设备文件:插入U盘后,系统自动创建设备文件(如/dev/sdb),分区标识:启动U盘通常包含特殊分区标志(如EFI系统分区)或特定文件(如/efi/boot/bootx64.efi),文件系统:启动盘常用FAT32(用于UEFI)或ISO9660(光盘镜像格式),命令行识……

    2025年6月21日
    16700
  • 如何将Linux系统烧录到芯片的具体方法?

    将Linux系统烧录到芯片是嵌入式开发、物联网设备部署或定制化硬件开发中的核心环节,涉及硬件准备、软件环境搭建、镜像制作、烧录执行及后续调试等多个步骤,整个过程需根据芯片架构、存储介质类型及目标设备特性进行调整,以下从基础到进阶详细说明操作流程,硬件准备:明确目标与连接基础烧录Linux前,需确认硬件环境是否就……

    2025年9月27日
    12300
  • Linux如何查看磁盘接口类型?

    在Linux系统中,磁盘接口类型的识别对于硬件维护、性能优化及驱动配置至关重要,常见的磁盘接口类型包括SATA、NVMe、SCSI、SAS及USB等,不同接口在传输速率、协议规范和物理形态上存在差异,以下将详细介绍多种查看磁盘接口类型的方法,涵盖基础命令到专业工具,并通过表格对比各工具的适用场景,使用lsblk……

    2025年9月10日
    13500
  • linux如何输出目录信息

    Linux中,可使用ls命令输出目录信息,如ls -l显示

    2025年8月16日
    17700
  • linux终端如何输出

    Linux 终端中,可使用 echo 命令输出文本,如 `echo “Hello, Linux!

    2025年8月10日
    14700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信