centos7.3关于进程

ps查看进程

 

 

       静态查看进程某个时刻的状态,信息主要包括进程的用户、pid、stat状态、command命令等信息。

whatis   ps    显示ps命令的功能描述
man   ps   查看ps帮助手册(man是manual手册的缩写)

查看当前终端号:tty
       tty终端:即当前的命令窗口界面。当前终端号用tty命令查。
       pts/0~n:是伪终端,通常是指远程登录到此linux服务器的命令界面。

ps选项:(注,选项使用-的显示结果可能有差异)
    a    显示其他终端的进程。例:ps  a
    u    以user、pid这种格式显示进程信息。例:ps  u
    x    显示系统中属于系统自己的所有进程,通常是开机启动系统时产生的进程(tty终端为?表示没有终端)例:ps  x
    e    显示进程中命令的的环境信息。例:ps  e
    f    以\_显示进程间的父子关系。例:ps  f
    -C   显示指定命令(command)的进程。例:ps   ef   -C   sshd
    l     或-l,以BSD长格式显示进程信息。例:ps   l
    -o   按自定义格式显示。例 ps  -f -o  user,pid,tname,time,cmd

ps aux   显示所有的进程

ps   u   以user、pid这种格式显示进程信息
USER   进程的用户
PID      进程的标识号
%CPU  CPU的使用率
%MEM 内存的使用率
VSZ     虚拟内存使用量
RSS     真实物理内存使用量
TTY     控制台(虚拟终端号)
STAT   进程状态   
START 开启进程的时间 
TIME    占用cpu的时间
COMMAND 终端上进程的名字

PID
    1  1号进程(init或systemd也称为初始化进程)  1号进程是其他进程的父进程   其他的进程是1号进程的子进程

STAT状态(红字母为必须知道的状态)
说明:以下状态在man  ps的579行的位置(用/CODE查)
    R(running)  运行状态 (正在进行cpu处理的)
    S(sleeping) 睡眠状态 休眠状态 (暂时没正在运行,后台挂着,通常是系统服务或网络服务)
    Z(zombie)  僵尸状态 僵尸状态 看到僵尸状态的进程就是没有正常退出的 杀死
    T(stopped)  暂停状态 挂起状态(不会占用cpu)。例ping  127.0.0.1回车后按ctrl+z即可暂停运行ping命令,用ps  u查。
    
     X    死掉的进程。
     <     高优先级。例:ps   aux | more
     N    低优先级
     s    包含子进程(sub)。例:ps  uf
     +     位于后台的进程组。
     l     

孤儿进程:父进程死了,但子进程还活着在。通常是程序的进程异常时才会出现。

pstree命令    
    pstree           查看进程树
    pstree  -u      查看进程树并其用户
    pstree  -p      显示进程的pid
    pstree  -a      显示参数
 
pstree | grep   sshd   过滤关键字,查看sshd的进程树
ps  -f  -C sshd    显示sshd命令的进程
  
ps   l 
ps  elf     以长格式输出进程信息
ps  -elf  | more   以长格式输出进程信息,解释如下
    F       文件的描述符
    S        STAT进程的状态 
    UID    进程的用户  
    PID    进程的标识号
    PPID  父进程
    C       cpu的使用率
    PRI     进程的优先级(priority)  被cpu所执行的优先级,数值越小越优先  数值越高优先级越低(注:PRI=20+NI)
    NI      好心值(nice谦让值为-20~19)  数值越高优先值越低
    ADDR SZ WCHAN  都与内存相关
    STIME  开启程序的时间
    TTY    在哪个终端上运行
    TIME  占用cpu的时间
    CMD  终端上进程的名字

 

 

文件描述符(了解):内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIX、Linux这样的操作系统。

 

 

动态观察进程的变化

      top    类似于windows中的任务管理器,可以对进程显示状态、调优先级、强制结束等操作。

 

 

top命令在执行过程当中可以使用如下的按键命令,q键退出
q   退出
?    显示可以输入的按键命令及帮助信息
W   保存top程序的当前设置到/root/.toprc文件中
d    修改刷新间隔时间(delay)
z    彩色显示信息
b    高亮显示R运行状态的进程
x    高亮显示排序字段(列)
c    显示完整命令
f    设置显示字段、排序字段
R    切换升序、降序
P    按cpu使用率排序
M   按照内存的使用率排序
N    以pid来排序
T    由cpu时间累积排序(TIME+)
r    给某个pid重新指定一个nice谦让值(-20~19 调优先级) ,nice值越小优先级越高(注:PRI=20+NI)
            r  -->PID to renice: 3804(进程的pid)-->  Renice PID 3804 to value: -5(nice值)
k    控制进程(结束进程)
            k -->PID to kill: 5383(进程的pid)-->Kill PID 5383 with signal [15]: 15(正常退出信号)
>   向左翻页
<   向右翻页

说明:PR优先级=20  +  nice值 

top动态查看进程状态:(按q键退出)
查看pid为0,1,2,3,4,5的进程:top  -p   0,1,2,3,4,5
说明:-p是指定要查看的进程pid,0为最后运行的进程

top的选项
top -d 2  //指定2秒更新  默认是3秒
top -b -n 5 > /tmp/top.txt  //将top信息进行5次存到/tmp/top.txt文件中
top -p 13589  //查看pid为13589所对应进程的状态
top -u  postfix   查看postfix用户的进程

杀(结束)进程的命令
     kill     pkill    killall    xkill    


注意:
   1、kill的实质作用是给进程发送信号,信号可以是强制结束9、暂停19、继续18、正常退出15、重新加载程序1、强制中断2等。
   2、kill操作进程时必须先查出程序进程的pid进程号。

查看进程PID
pidof   程序名    例:pidof   sshd
ps  -C   关键字   //精确查找   例:ps  ef  -C   sshd
pgrep -l 关键字 //模糊查找    例:pgrep  -l   ssh

 

 

杀进程kill 

 

用法:kill   信号   pid
    查看信号列表
        kill -l 
            1     重新加载程序     HUP
            2     即ctrl+c 强制中断  INT
            15   正常退出    TERM
            9     强制杀死  KILL
            19   暂停进程 STOP
            18   激活进程 CONT
        
    杀死进程
        kill -signal pid
        kill  -15  3804
                    -15默认的可以不写
        kill -9 3804 强制杀死
        
    暂停进程
        kill -19 3804 
        kill -stop 3804   //可是使用单词代替
        
    激活进程
        kill -18 3804   
        kill -cont 3804      

 

pkill

 

    按照进程的名称控制进程,慎用,因为会结束掉所有相同命令的进程
       pkill -信号  进程的名称
       pkill -9  ping
    
    按用户控制进程
       pkill -信号 -u 用户名
       pkill -9 -u jim
    
    按终端控制进程,用ps  u或who、w查已开启了哪些终端
       pkill -信号 -t 终端名
       pkill -9 -t pts/4
    
    查看终端名
       tty

 

killall       

    杀死所有和关键字相关的进程   ssh服务
      killall -9 关键字   

xkill  强制关闭卡住了窗口

 

 

     xkill 回车后用鼠标点关闭的窗口
    
练习:查看kill信号列表,体验kill命令的常用信号选项。开A、B两个远程连接窗口测试。
kill  -l    查看信号列表
    1      重新加载程序   HUP
    2      即ctrl c 强制中断  INT
    15    正常退出  TERM
    9      强制杀死  KILL
    19    暂停进程 STOP
    18    激活进程 CONT
        
说明:A窗口执行并查看状态,B窗口执行kill命令对A窗口的命令进程发信号。
A窗口:ping   127.0.0.10

B窗口:ps  ef  -C   ping      或pidof   ping     查看ping命令进程的pid值
             kill   -19   pid值       执行后请到A窗口看ping命令的状态变化
             ps    u     验证ping  127.0.0.10的进程状态是否为T
             kill   -18   pid值       同上
             kill   -15   pid值       同上
             kill   -2     pid值       同上
             kill   -9     pid值       同上

进程前后台操作(类似于win7中窗口的最小化、最大化)
    符号和命令:&在后台运行   nohup     jobs    fg   bg   ctrl+z    ctrl+d


程序的操作模式:
非交互式:执行命令后无需人为操作。不会占用命令终端。如ls、date、pwd、cat等。
交互式:执行后需要人为操作,会占用命令终端,可能需要切换到后台。如vim、vi、fdisk、firefox、gedit、word、脚本程序等软件。

进程运行在终端的前台     前台缺点:前台的进程会占用shell命令提示  
# firefox
强制终止前台进程:ctrl+c

进程运行在终端的后台&        后台优点:后台进程不占用shell命令提示
# firefox  &     //用此命令执行,关闭终端会关闭进程   
用ctrl d 关闭终端窗口,firefox进程不会关闭 

# nohup firefox &   //用此命令执行,关闭终端不会关闭进程 进程不依赖终端运行

把运行在前台的进程放到后台
#firefox    在前台运行firefox程序
#ctrl z  将firefox进程切到后台,进程将暂停

显示后台工作任务
# jobs
[1]+  Stopped                 firefox
[1] 工作号  工作号越大 表示最新开启的
+  当前的进程
-   表示当前进程的上一个进程

将后台进程重新放回前台(类似于窗口最大化)
# fg   %工作号
例:fg   %1    或  fg  1

将进程切换到后,状态会变成已停止
# ctrl+z

激活后台任务
# bg  %工作号      通常用于ctrl+z切换到后台并暂停的进程

杀死后台进程
  kill  - 9   % 工作号
例:kill   -9   %1

综合实例:
pkill  -9   top
top  &
top  &
jobs
kill  -9   %1
kill  -9   %2

前台进程可以用ctrl c 结束进程

1.信号9和15的区别
强制杀死
正常杀死

2.开启进程firefox放到后台
firefox &
nohup firefox &

3.前台开启进程,将前台进程放到后台
firefox
ctrl z

进程前后台切换的练习:
firefox  &     在后以运行firefox
firefox  &     同上
jobs           查后台工作任务
fg  1          将后台任务1切换到前台
ctrl+z        将当前任务切换到后台,并暂停运行
bg  1         激活后台任务1
ps   ef  -C  firefox   查firefox的进程状态信息
kill   -19   %1      让后台任务1暂停
kill   -18   %1      让后台任务1继续执行(激活)
pkill  -9  firefox   强制强束所有的firefox进程

 

 

修改进程的优先级

   renice  nice值  pid   //调整某个进程的nice(取值为-20~19)

1.在后台运行多个ping命令
ping   127.0.0.1   &>  /dev/null   &        #在后台运行ping命令
ping   127.0.0.2   &>  /dev/null   &
ping   127.0.0.8   &>  /dev/null   &

2.ps elf   -C  ping    进程信息如下
4 S root       2786   2747  0  80   0 - 31978 skb_re 11:35 pts/0    00:00:00 ping 127.0.0.1
4 S root       2787   2747  0  80   0 - 31978 skb_re 11:35 pts/0    00:00:00 ping 127.0.0.2
4 S root       2789   2747  0  80   0 - 31978 skb_re 11:35 pts/0    00:00:00 ping 127.0.0.8
0 R root       2796   2747  0  80   0 - 28166 -      11:35 pts/0    00:00:00 grep --color=auto ping

在另一窗口执行:top  -p  2786,2787,2789
注:以上的2786、2787、2789是用ps  elf  -C  ping查到的进程pid号

3.renice  -5  2786    将pid为2786的nice值调为-5,PRI=20+NI
2786 (进程 ID) 旧优先级为 0,新优先级为 -5

4.ps  elf  -C  ping
4 S root       2786   2747  0  70 -5 - 31978 skb_re 11:35 pts/0    00:00:00 ping 127.0.0.1
4 S root       2787   2747  0  80   0 - 31978 skb_re 11:35 pts/0    00:00:00 ping 127.0.0.2
4 S root       2789   2747  0  80   0 - 31978 skb_re 11:35 pts/0    00:00:00 ping 127.0.0.8
0 R root       2820   2747  0  80   0 - 28166 -      11:37 pts/0    00:00:00 grep --color=auto ping

在程序开启的时候指定其nice值
    nice  -nice值  进程的名字 
    nice  --15  vim  a.txt   &     将nice指定为-15
    ps elf  -C  vim   在另一窗口执行

 

你可能感兴趣的:(centos,虚拟机,Linux基础)