linux 进程管理

Posted suffergtf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 进程管理相关的知识,希望对你有一定的参考价值。

一、工作管理

  • 将命令放到后台执行 “&”
[[email protected] ~]# for n in `seq 10000`;do echo $n>>/tmp/test.txt;done &  ###在命令的后面接 & 将命令放到后台执行
[1] 1446      ######[1] job number;1146  PID值
[[email protected] ~]# pwd    
/root
[1]+  Done                    for n in `seq 10000`;      #####[1]+ Done表示已经完成
  do
    echo $n >> /tmp/test.txt;
done
  • 将命令放到后台暂停: [ctrl] +z
[[email protected] ~]# echo ‘for n in `seq 100000`;do echo $n>>/tmp/test.txt;sleep 1;done‘ >/tmp/test.sh    ####写一个简单的打印序列的脚本
[[email protected] ~]# echo ‘for n in `seq 100000`;do echo $n>>/tmp/test.txt;sleep 1;done‘ >/tmp/test1.sh
[[email protected] ~]# echo ‘for n in `seq 100000`;do echo $n>>/tmp/test.txt;sleep 1;done‘ >/tmp/test2.sh  
[[email protected] ~]# /bin/sh /tmp/test.sh     ####### ctrl+z组合键将脚本放到后台暂停
^Z
[1]+  Stopped                 /bin/sh /tmp/test.sh
[[email protected] ~]# /bin/sh /tmp/test1.sh
^Z
[2]+  Stopped                 /bin/sh /tmp/test1.sh
[[email protected] ~]# /bin/sh /tmp/test2.sh
^Z
[3]+  Stopped                 /bin/sh /tmp/test2.sh
[[email protected] ~]# jobs -l        ######jobs查看后台暂停、运行的程序
[1]   4956 停止                  /bin/sh /tmp/test.sh
[2]-  4966 停止                  /bin/sh /tmp/test1.sh
[3]+  4977 停止                  /bin/sh /tmp/test2.sh
####### +表示最近的一次放到后台的程序,-表示最近倒数第二次放到后台的程序
  • 将后台运行的工作拿到前台 fg
[[email protected] ~]# fg %1    ####  %1  表示job number为1的放到前端处理,%可以省略
/bin/sh /tmp/test.sh
^Z
[1]+  Stopped                 /bin/sh /tmp/test.sh
[[email protected] ~]# jobs -l
[1]+  4956 停止                  /bin/sh /tmp/test.sh      #####重新将/tmp/test.sh放到后台暂停,可以看到job number后面右面有个+号,因为他是最近一次放到后台的程序
[2]   4966 停止                  /bin/sh /tmp/test1.sh
[3]-  4977 停止                  /bin/sh /tmp/test2.sh
[[email protected] ~]# fg       ########不带参数,表示直接将带有+号标志的程序,放到前端执行
/bin/sh /tmp/test.sh
  • 让程序在后台运行 bg
[[email protected] ~]# jobs -l
[1]   4956 停止                  /bin/sh /tmp/test.sh
[2]-  5888 停止                  /bin/sh /tmp/test1.sh
[3]+  5898 停止                  /bin/sh /tmp/test2.sh
[[email protected] ~]# bg %1
[1] /bin/sh /tmp/test.sh &    #####先将job number为1的任务调到前端,然后使用&放到后台执行
[[email protected] ~]# jobs -l
[1]   4956 Running                 /bin/sh /tmp/test.sh &
[2]-  5888 停止                  /bin/sh /tmp/test1.sh
[3]+  5898 停止                  /bin/sh /tmp/test2.sh

二、程序管理

  • 查看正在运行的进程

    1、PS,静态查询

[[email protected] ~]# ps aux      ######查看系统所有的程序数据,静态(某一时间的状态)
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  19232  1508 ?        Ss   12:00   0:01 /sbin/init
root          2  0.0  0.0      0     0 ?        S    12:00   0:00 [kthreadd]
........省略.......
####################注释######################
  • USER:该process属于那个使用者
  • PID:该process的程序识别码
  • %CPU:该process占用CPU的百分比
  • %MEM:该process占用的实体内存的百分比
  • VSZ:该process使用掉的虚拟内存量
  • RSS:该process占用的固定的内存量
  • TTY:该process在那个终端上运行
  • STAT:该process目前的状态,,(与PS -L的S旗帜相同)
  • START:该process被触发启动的时间
  • TIME:该process实际使用CPU运行的时间
  • COMMAND:该process的实际命令
-----------------------------------split-------------------------------------------
[[email protected] ~]# ps -l      ####查看当前shell,运行的相关程序数据
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1576   1574  0  80   0 - 29568 wait   pts/1    00:00:07 bash
0 S     0   4956   1576  0  80   0 - 29013 wait   pts/1    00:00:00 sh
0 T     0   5888   1576  0  80   0 - 29013 signal pts/1    00:00:00 sh
######################注释################
  • F:代表这个程序的标识(process flags),若为4,标识此程序的权限为root,1标识此子程序只进行复制(fork)而没有实际运行
  • S:表示这个程序的状态。R(Running):该程序正在运行;S(Sleep):该程序正在睡眠状态(idle);D:不可被唤醒的睡眠状态,通常因为该程序在等待I/O;T:停止状态,可能为后台暂停或排错(traced)状态;Z(Zombie)僵尸进程,程序已经种终止,但是无法移除到内存外
  • UID/PID/PPID:运行该程序的用户的UID,改程序的PID号,该程序的父进程PPTD
  • C:代表CPU的使用率
  • PRI/NI:Priority/Nice的缩写,代表此程序被CPU运行的优先顺序,数值一笑代表越快被CPU运行
  • ADDR/SZ/WCHAN:与内存相关,ADDR是kernel function,止除该程序在内存的那个部分,如果是个running的程序,一般会显示[-];SZ代表此程序用掉多少内存;WCHAN表示目前是否在运行,-表示运行
  • TTY:登陆方式
  • TIME:使用掉的cpu时间,指程序实际花费CPU运行的时间
  • CMD:command的缩写,造成此程序的触发程序的命令

    2、top,动态查询

[[email protected] ~]# top 
top - 17:07:12 up  5:06,  1 user,  load average: 0.02, 0.01, 0.00
Tasks:  82 total,   1 running,  77 sleeping,   4 stopped,   0 zombie
Cpu(s):  0.2%us,  0.2%sy,  0.0%ni, 99.4%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1534840k total,   420116k used,  1114724k free,    51580k buffers
Swap:  1048568k total,        0k used,  1048568k free,   215324k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                             
     1 root      20   0 19232 1508 1220 S  0.0  0.1   0:01.19 init                                                 
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                             
...............省略.......................

 

 

 

 

 

 

 

































以上是关于linux 进程管理的主要内容,如果未能解决你的问题,请参考以下文章

linux c 退出进程的代码

Linux进程管理

Linux系统管理10——进程和计划任务管理

Linux中的进程管理

Linux进程和计划任务管理

Linux进程和任务管理