linux暂停一个在运行中的进程

转载于:
http://www.cszhi.com/20120328/linux-stop-process.html

对于一个运行中的进程,我们可以使用kill -STOP pid命令将其暂停执行,使用kill -CONT pid命令恢复其运行。

下面用一个实例说明:

1、首先使用tar命令打包/usr目录:

[root@vps /]# tar zcf usr.tar.gz usr/

开启一个新窗口查看其进程状态:

[root@vps ~]# ps aux|grep tar
root 18900 2.7 0.4 2760 1068 pts/1 R+ 09:23 0:00 tar zcf usr.tar.gz usr/

进程处于运行状态(R)

2、使用kill -STOP 命令将该进程暂停:

[root@vps ~]# kill -STOP 18900

再观察其状态:

[root@vps ~]# ps aux|grep tar
root 18900 1.4 0.4 2816 1120 pts/1 T 09:23 0:00 tar zcf usr.tar.gz usr/

此刻进程处于暂停状态了(T)

3、使用kill -CONT恢复进程执行

[root@vps ~]# kill -CONT 18900
[root@vps ~]# ps aux|grep tar
root     18900  1.5  0.4   2816  1128 pts/1    R    09:39   0:00 tar zcf usr.tar.gz usr/

进程恢复运行状态(R)

附:

ps的用法:

常用参数
-A 显示所有进程(等价于-e)(utility)
-a 显示一个终端的所有进程,除了会话引线
-N 忽略选择。
-d 显示所有进程,但省略所有的会话引线(utility)
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-p pid 进程使用cpu的时间
-u uid or username 选择有效的用户id或者是用户名
-g gid or groupname 显示组的所有进程。
U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
-l 长格式(有F,wchan,C 等字段)
-j 操作格式
-o 用户自定义格式。
v 以虚拟存储器格式显示
s 以信号格式显示
-m 显示所有的线程
-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
h 不显示第一行

au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态:
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)

START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令

进程STAT状态:

D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行,在可中断队列中;
S 处于休眠状态,静止状态;
T 停止或被追踪,暂停执行;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程;
Z 僵尸进程不存在但暂时无法消除;
W: 没有足够的记忆体分页可分配
WCHAN 正在等待的进程资源;
<: 高优先级进程
N: 低优先序进程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存

s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;

kill 终止进程有十几种控制进程的方法,下面是一些常用的方法:

kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1
终止你拥有的全部进程。

SIGKILL 和 SIGSTOP 信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。

<think>我们被要求查看Linux系统中指定进程ID(PID)的运行状态和详细信息。根据引用内容,我们可以使用多种命令来实现。 主要方法包括: 1. 使用`ps`命令查看进程的基础信息。 2. 查看`/proc/<PID>`目录下的文件来获取详细信息。 3. 使用`top`或`htop`动态查看进程状态。 4. 使用`pstree`查看进程的父子关系。 5. 使用`lsof`查看进程打开的文件。 下面将详细说明每种方法的使用。</think>### 查看指定PID进程运行状态和详细信息 #### 一、基础状态查看 1. **实时进程状态** ```bash ps -p <PID> -o pid,ppid,user,%cpu,%mem,cmd,stat,time ``` **输出说明**: - `stat`:进程状态(R=运行, S=休眠, Z=僵尸, D=不可中断睡眠) - `%cpu/%mem`:CPU/内存占用率 - `time`:累计CPU时间[^1] 2. **动态监控** ```bash top -p <PID> # 实时刷新资源占用 htop -p <PID> # 增强版(需安装) ``` #### 二、详细信息获取 1. **/proc文件系统分析** ```bash cat /proc/<PID>/status # 进程基础状态(UID、内存、线程数等) cat /proc/<PID>/cmdline # 完整的启动命令及参数 cat /proc/<PID>/stack # 内核调用栈(需root) ls -l /proc/<PID>/exe # 查看进程对应的可执行文件路径 ``` **关键文件**: - `smaps`:详细内存映射(`sudo cat /proc/<PID>/smaps`) - `fd`:打开的文件描述符(`sudo ls -l /proc/<PID>/fd`)[^1] 2. **资源使用详情** ```bash pmap -x <PID> # 内存映射分布 lsof -p <PID> # 打开的文件/网络连接 strace -p <PID> # 实时系统调用跟踪(需root) ``` #### 三、高级诊断工具 1. **进程树关系** ```bash pstree -p <PID> # 显示父子进程关系 ``` **示例输出**: ``` bash(1234)───python(5678)───{python}(5679) ``` 2. **性能剖析** ```bash perf stat -p <PID> # CPU性能计数器 perf record -p <PID> # 采样分析(生成perf.data) gcore <PID> # 生成核心转储文件(需gdb) ``` #### 四、状态解析参考表 | 状态码 | 含义 | 常见原因 | |--------|-----------------------|----------------------------| | **R** | 运行中 | 正常执行任务 | | **S** | 可中断睡眠 | 等待I/O/信号 | | **D** | 不可中断睡眠 | 硬件操作(如磁盘I/O) | | **Z** | 僵尸进程 | 父进程未回收子进程 | | **T** | 暂停/跟踪状态 | 被调试器暂停 | | **X** | 死亡状态(不可见) | 内核回收前的瞬时状态 | > **注**:通过`cat /proc/<PID>/status | grep State`可精确获取状态描述[^1] #### 五、自动化监控脚本 ```bash #!/bin/bash PID=$1 watch -n 1 "ps -p $PID -o pid,stat,%cpu,%mem,cmd && echo '--- Open Files ---' && lsof -p $PID | head -10" ``` **使用**:`./monitor.sh <PID>` 每秒刷新进程状态和打开文件
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值