本章Blog相关Linux知识点


    进程(process):进程是程序的执行实例,即运行中的程序,也是程序的副本;程序放置于磁盘中,而进程放置于内存中;进程的启动及调度均是由内核发起的。init是所有进程的父进程,而子进程是由fork()进程生成。

    线程(Thread):一个进程至少包括一个线程,通常将该线程称为主线程,所以线程是比进程更小的单位,是系统分配处理器时间资源的基本单元。一个进程要想同时在多颗CPU上运行,必须得分成互不影响的多个执行流,而后每组单独在各自所分配的CPU上运行,这种分化后的执行流且有着比进程更小资源分配单位称之为线程。

    程序(Program):程序只是一个普通文件,是一个机器代码指令和数据的集合,这些指令和数据存储在磁盘上的一个可执行映象(Executable Image)中,所以,程序是一个静态的实体。

进程优先级0-139 :

    实时优先级:0-99 ,数字越大,优先级越高

    静态优先级:100-139,数字越小,优先级越高

进程nice值:

    指静态优先级,降低优先级
    取值范围:-20—19;-20对用100,19对用139

进程类型:守护进程、用户进程

    守护进程:系统启动时运行的进程,类似windows上的开机进程(开机任务),跟终端无关

    用户进程:用户通过终端启动的进程,也可以叫前台进程,需要注意的是,也可以把前台进程送往后台,以守护模式运行。

进程状态:

    运行态:running ,正在运行的进程就是当前进程(由current所指向的进程),而准备运行的进程只要得到CPU就可以立即投入运行,CPU是这些进程唯一等待的系统资源。系统中有一个运行队列(run_queue),用来容纳所有处于可运行状态的进程,调度程序执行时,从中选择一个进程投入运行。

    等待态:waiting,处于该状态的进程正在等待某个事件(event)或某个资源,它肯定位于系统中的某个等待队列(wait_queue)中。Linux中处于等待状态的进程分为两种:可中断的等待状态和不可中断的等待状态。处于可中断等待态的进程可以被信号唤醒,如果收到信号,该进程就从等待状态进入可运行状态,并且加入到运行队列中,等待被调度;而处于不可中断等待态的进程是因为硬件环境不能满足而等待。

    睡眠态:sleeping,可中断睡眠(interruptable)、不可中断睡眠(uninterruptable)

    停止态:stop ,不会被调度 stopped ,此时的进程暂时停止运行来接受某种特殊处理。通常当进程接收到SIGSTOP、SIGTSTP、SIGTTIN或 SIGTTOU信号后就处于这种状态。例如,正接受调试的进程就处于这种状态。

    僵死态:zombie,系统调用,终止进程的信息也还没有回收。顾名思义,处于该状态的进程就是死进程,这种进程实际上是系统中的垃圾,必须进行相应处理以释放其占用的资源。

linux运行终端:通过命令 #tty 查看

    串行终端,串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备,通常使用/dev/ttys/#表示

    物理终端,如/dev/console

    虚拟终端,Linux中提供的虚拟终端默认有6个,其中第1个是图形界面,第2到6个则是字符界面。可以通过Ctrl+Alt+F(1~6)组合键在不同的虚拟终端之间进行切换,Ctrl+Alt+F7启动图形界面(先启动图形功能#startx)  ,如/dev/tty/#    

    伪终端(模拟终端),我们通常都是通过网络远程对Linux服务器进行管理,这种通过远程登录方式所打开的终端称为伪终端(pts)。比如我们通过Xshell远程登录到Linux系统,如:/dev/pts/1
特殊命令组合功能:

    Ctrl +c 取消当前程序

    Shift +Pageup/Pagedown  翻屏查看命令界面之前的数


进程管理命令:pstree,ps,pgrep,top,htop,vmstat,dstat


# pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-Z] [-A|-G|-U] [pid|user]   查看进程树命令

   pstree -V

    -a  显示进程详细信息

    -p 显示进程及进程号

[root@PXE ~]# pstree -a
init
  ├─crond
  ├─dbus-daemon --system
  ├─dhcpd -user dhcpd -group dhcpd
  ├─hald
  │   ├─hald-runner
  │   │   ├─hald-addon-acpi
  │   │   └─hald-addon-inpu
  │   └─{hald}
  ├─ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
  ├─sshd
  │   ├─sshd 
  │   │   └─bash
  │   └─sshd 
  │       └─bash
  │           └─pstree -a
  ├─udevd -d
  │   ├─udevd -d
  │   └─udevd -d
  └─xinetd -stayalive -pidfile /var/run/xinetd.pid

[root@PXE ~]# pstree -p
init(1)─┬─crond(1212)
        ├─dbus-daemon(1064)
        ├─dhcpd(1202)
        ├─hald(1096)─┬─hald-runner(1097)─┬─hald-addon-acpi(1141)
        │            │                   └─hald-addon-inpu(1129)
        │            └─{hald}(1098)
        ├─ntpd(1186)
        ├─sshd(1165)─┬─sshd(1249)───bash(1254)
        │            └─sshd(5379)───bash(5384)───pstree(5508)
        ├─udevd(415)─┬─udevd(1247)
        │            └─udevd(1248)
        └─xinetd(1177)

# ps [options] :显示当前进程状态

    a 显示所有与终端相关的进程

    x 显示所有与终端无关的进程

    u 显示所有的用户

    -H:显示进程的层次信息

    -F:显示额外信息

    -o :要显示的字段,自定义显示格式  例# ps -axo PID,COMMAND

常用选项

    aux  显示所有进程的所有信息

    -ef   显示所有进程的所有信息

    -eHF  显示所有进程的额外信息及进程层次关系

[root@PXE ~]# ps au
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       1232  0.0  0.0   4064   544 tty1     Ss+  18:53   0:00 /sbin/mingetty /dev/tty1
root       1234  0.0  0.0   4064   544 tty2     Ss+  18:53   0:00 /sbin/mingetty /dev/tty2

[root@PXE ~]# ps aux 
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  19364  1560 ?        Ss   18:52   0:01 /sbin/init
root       5566  0.0  0.0 110252  1136 pts/1    R+   22:22   0:00 ps aux

#各选项涵义:
    USER:显示运行此进程的用户
    PID: 进程ID号
    %CPU:当前进程运行时长占据总CPU时长的百分比
    %MEM:当前进程使用内存占据总内存的百分比
    VSZ: 虚拟内存集,即当前进程使用的内存加上共享库大小
    RSS: 常驻内存集,当前进程常驻内存的大小,即不能被交换出去的空间大小
    TTY: 当前进程所关联的终端
    STAT:进程状态
        S:睡眠
        D:不可中断睡眠(crond守护进程)
        R:运行
        T:停止
        Z:僵死
        s:session leader(会话领导者)
        l:多线程进程
        +:前台进程
         N:低优先级进程
         <:高优先级进程
    START:进程启动时间
    TIME: 当前进程真正占据CPU的时间,而不是挂表时钟
    COMMAND:当前进程是由哪个命令发起的
   
[root@PXE ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 18:52 ?        00:00:01 /sbin/init
root          2      0  0 18:52 ?        00:00:00 [kthreadd]
root          3      2  0 18:52 ?        00:00:00 [migration/0]

[root@PXE ~]# ps -eHF
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
4 S root          1      0  0  80   0 -  4841 poll_s  1560   1 18:52 ?        00:00:01 /sbin/init
1 S root          2      0  0  80   0 -     0 kthrea     0   0 18:52 ?        00:00:00 [kthreadd]
1 S root          3      2  0 -40   - -     0 migrat     0   0 18:52 ?        00:00:00 [migration/0]

[root@PXE ~]# ps axo user,pid,command    # 显示指定的字段 user,pid,command
USER        PID COMMAND
root          1 /sbin/init
root          2 [kthreadd]
root          3 [migration/0]

#各选项涵义:
    F:当前进程的标志位(flags),4为管理员
    S:当前进程的状态
    PID:当前进程ID号
    PPID:父进程ID号
    C:使用时间占据CPU百分比
    PRI:当前优先级
    NI:当前进程的nice值
    ADDR:kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
    SZ:使用掉内存大小
    WCHAN:当前程序是否在运行中,"-"表示running
    RSS:常驻内存集
    PSR:当前进程被分配给哪个处理器
    STIME:当前进程启动时间
    TTY:当前进程所关联的终端
    TIME:累计在CPU上运行的时间
    COMMAND:当前进程是由哪个命令发起的


# pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,...] [-g pgrp,...]      只显示符合条件的进程号  例: # pgrep bash 显示bash进程的进程号

            [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...]
            [-t term,...] [pattern]

    -f:仅显示与进程匹配的名字

    -o:仅显示找到的最小(起始)进程号

    -n:仅显示找到的最大(结束)进程号

    -l:显示进程名称与进程pid

    -P:指定父进程号

    -g:指定进程组

    -t:指定开启进程的终端

    -u:指定进程的有效用户ID

[root@PXE ~]# pgrep bash   # 显示bash进程的进程号
1254
5384

[root@PXE ~]# pgrep named   # 显示named进程的进程号
1297

[root@PXE ~]# pgrep -u named   # 显示用户为named的进程号
1297 

[root@PXE ~]# pgrep -l ntpd  # 显示进程名称与进程pid
2230 ntpd


# pidof [-s] [-c] [-x] [-o omitpid] [-o omitpid..]  program [program..]   显示运行程序的进程ID

[root@PXE ~]# pidof sshd   # 查找sshd进程的id号
1371 1244 1166

[root@PXE ~]# pidof -s sshd    # 查找sshd进程的id号,但只显示一个
1371


# top -hv | -abcHimMsS -d delay -n iterations -p pid [, pid ...]   查看系统进程

    -d #:指定延迟时长,单位是秒
    -b:以批处理模式操作
    -n #:在批模式下,共显示多少批

    -p pid:显示进程号为pid的进程

top  命令下交互命令,下列按键代表不同的功能:

    M:按内存占用百分比排序

    P :按cpu占用百分比排序

    T :按照累积占用cpu时间长度排序

     

    1键   是否显示各个cpu信息,输入1键关闭多个cpu显示,在输入1键又打开多个cpu显示,如此循环

    m键  是否显示内存信息,输入m键关闭内存信息显示,在输入m键又打开内存信息显示,如此循环

    t键  是否显示cpu和进程的统计信息,输入t键关闭cpu和进程的统计信息,在输入t键又打开cpu和进程的统计信息,如此循环

    l键  是否显示负载信息,输入l键关闭负载信息,在输入l键又打开负载信息,如此循环

    s键 输入时间,调整top刷新时间间隔

    k键 输入进程id,中止某一个进程

    q键  退出top命令界面

[root@PXE ~]# top -d 10 -p 1   #显示pid为1的进程且10s刷新一次
top - 23:02:22 up  4:09,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.7%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1941304k total,   506252k used,  1435052k free,    40000k buffers
Swap:  4194300k total,        0k used,  4194300k free,   300940k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                              
     1 root      20   0 19364 1560 1248 S  0.0  0.1   0:01.41 init                                                                                  

[root@PXE ~]# top -b -d 3 -n 2   #3秒刷新一次,批次显示,显示2批次后退出top
top - 23:27:46 up  4:34,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.7%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1941304k total,   506540k used,  1434764k free,    40036k buffers
Swap:  4194300k total,        0k used,  4194300k free,   300948k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                               
     1 root      20   0 19364 1560 1248 S  0.0  0.1   0:01.41 init                                                                                  
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                                              
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/0                                                                           
     4 root      20   0     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd/0   

#各选项涵义:
top - 23:27:06(当前时间) up  4:34(系统运行时长),  1 users(用户数),  load average: 0.00, 0.00, 0.00 (等待运行的队列长度,平均负载,1分钟,5分钟和15分钟)
Tasks: 106 total(总进程数),   1 running(运行), 105 sleeping(睡眠),   0 stopped(停止),   0 zombie(僵死)
Cpu(s): 0.0%us(userspace用户空间占用百分比),  0.0%sy(system),  0.0%ni(被nice值调整的),  99.7%id(idle空闲 ),  0.0%wa(wait等待),  0.0%hi(hardware 硬中断占据时间),  0.0%si(软中断),  0.0%st (被偷走的)
Mem:   1941304k total(总内存大小),   506540k used(使用内存),  1434764k free(空闲内存),    40036k buffers(buffer内存)
Swap:  4194300k total(总swap内存大小),   0k used,  4194300k free,   300948k cached (缓存大小)
    PID:进程id号
    USER:进程所有者的用户名
    PR:进程优先级
    NI:nice值
    VIRT:进程使用的虚拟内存总量 
    RES:进程使用的、未被换出的物理内存大小
    SHR:共享内存大小
    S:进程状态,包括R运行,S睡眠,T停止,D不可中断进程,Z僵死进程
    %CPU:上次更新到现在的CPU时间占用百分比
    %MEM:进程使用的物理内存百分比
    TIME+:进程使用的CPU时间总计


 # htop [-dChusv]   查看系统进程,为top功能的升级版

    -d:设置刷新时间,单位为秒;

    -C:设置界面为无颜色;

    -u:显示指定用户的进程;

    -s:对指定列进行排序显示;


F1:显示帮助信息;

    U:取消所有选中的进程;

    s:显示光标所在进程执行的系统调用;

    l:显示光标所在进程的文件列表;

    a:绑定进程到指定的CPU;

    u:显示指定用户的进程;

    M:按照内存使用百分比排序,对应MEM%列;

    P:按照CPU使用百分比排序,对应CPU%列;

    T:按照进程运行的时间排序,对应TIME+列;

    K:隐藏内核线程;

    H:隐藏用户线程;

    #:快速定位光标到PID所指定的进程上。

 

# vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]      显示虚拟内存信息

   vmstat [-s] [-n] [-S unit]

   vmstat [-m] [-n] [delay [ count]]

   vmstat [-d] [-n] [delay [ count]]

   vmstat [-p disk partition] [-n] [delay [ count]]

   vmstat [-f]vmstat [-V]   

例:#vmastat  1  3    每个1秒钟并显示3次

    -s 显示内存统计信息

    -d 显示磁盘统计信息

[root@PXE ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1465856  41000 306400    0    0     6     2    7    9  0  0 100  0  0    

[root@PXE ~]# vmstat -d   #显示硬盘统计信息
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
sda    14325   4702  680386   75203   3061  30380  267544   44943      0     69
dm-0   12436      0  374954  119300  18277      0  146216  235270      0     50
dm-1    1352      0   15826   16179     54      0     432      94      0      1
dm-2    3929      0  278258   20775  15101      0  120808 3140282      0     17
dm-3     197      0    1570     656      3      0      24       2      0      0

[root@PXE ~]# vmstat -s     #显示内存统计信息
      1941304  total memory
       475448  used memory
       217052  active memory
       143012  inactive memory


#各选项涵义:
FIELD DESCRIPTION FOR VM MODE
   Procs
       r: The number of processes waiting for run time.
       b: The number of processes in uninterruptible sleep.

   Memory
       swpd: the amount of virtual memory used.
       free: the amount of idle memory.
       buff: the amount of memory used as buffers.
       cache: the amount of memory used as cache.
       inact: the amount of inactive memory. (-a option)
       active: the amount of active memory. (-a option)

   Swap
       si: Amount of memory swapped in from disk (/s).
       so: Amount of memory swapped to disk (/s).

   IO
       bi: Blocks received from a block device (blocks/s).
       bo: Blocks sent to a block device (blocks/s).

   System
       in: The number of interrupts per second, including the clock.
       cs: The number of context switches per second.

   CPU
       These are percentages of total CPU time.
       us: Time spent running non-kernel code. (user time, including nice time)
       sy: Time spent running kernel code. (system time)
       id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
       wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
       st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

FIELD DESCRIPTION FOR DISK MODE
   Reads
       total: Total reads completed successfully
       merged: grouped reads (resulting in one I/O)
       sectors: Sectors read successfully
       ms: milliseconds spent reading

   Writes
       total: Total writes completed successfully
       merged: grouped writes (resulting in one I/O)
       sectors: Sectors written successfully
       ms: milliseconds spent writing

   IO
       cur: I/O in progress
       s: seconds spent for I/O


#  dstat [-afv] [options..] [delay [count]]   dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能工具,是一个全能系统信息统计工具

    -a :相当于-cdngy

    -l :显示负载统计量

    -m :显示内存使用率(包括used,buffer,cache,free值)

    -r :显示I/O统计

    -s :显示交换分区使用情况

    -t :将当前时间显示在第一行

    –fs :显示文件系统统计数据(包括文件总数量和inodes值)

    –nocolor :不显示颜色(有时候有用)

    –socket :显示网络统计数据

    -–tcp :显示常用的TCP统计

    -–udp :显示监听的UDP接口及其当前用量的一些动态数据

    -–disk-util :显示某一时间磁盘的忙碌状况

    -–freespace :显示当前磁盘空间使用率

    -–proc-count :显示正在运行的程序数量

    -–top-bio :指出块I/O最大的进程

    -–top-cpu :图形化显示CPU占用最大的进程

    -–top-io :显示正常I/O最大的进程

    -–top-mem :显示占用最多内存的进程


# kill [-s signal|-p] [--] pid...    用于实现向其他进程发送信息

   kill -l 显示可用的信号

常用格式:

    # kill -n  进程id  , 例:#kill -9 36901 

    # kill -SIG[name]  进程id , 例: # kill -SIGKILL 36901

    # kill -[name]  进程id , 例:# kill -KILL 36901


#注:
    1信号SIGHUP:通知程序重读配置文件,而不用重启程序,相当于reload
    2信号SIGINT:相当于Ctrl+c功能,结束运行的任务
    9信号SIGKILL:杀死进程
    15信号SIGTERM:终止进程 ,默认信号为15

[root@PXE ~]# ps aux | grep ntpd
ntp        5904  0.0  0.1  30744  2152 ?        Ss   08:37   0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root       7161  0.0  0.0 103276   848 pts/1    S+   14:52   0:00 grep ntpd

[root@PXE ~]# kill -9 5904   # 通过数字信号强制终止ntp 进程 

[root@PXE ~]# ps aux | grep dhcpd
dhcpd      1202  0.0  0.2  48208  4084 ?        Ss   02:21   0:00 /usr/sbin/dhcpd -user dhcpd -group dhcpd
root       7165  0.0  0.0 103272   840 pts/1    S+   14:59   0:00 grep dhcpd

[root@PXE ~]# kill -KILL 1202   # 通过信号名称强制终止ntp 进程 

[root@PXE ~]# ps aux | grep xinetd
root       1177  0.0  0.0  21716   988 ?        Ss   02:21   0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root       7183  0.0  0.0 103272   840 pts/1    S+   15:02   0:00 grep xinetd

[root@PXE ~]# kill -SIGKILL 1177    # 通过信号全名强制终止ntp 进程


# pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g pgrp,...]   # 基于名称或其它属性来查找进程,性能与killall类似

            [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...]
            [-t term,...] [pattern]
# killall [-Z,--context pattern] [-e,--exact] [-g,--process-group] [-i,--interactive] [-q,--quiet] [-r,--regexp]    通过名字杀死某些进程
    [-s,--signal signal] [-u,--user user] [-v,--verbose] [-w,--wait] [-I,--ignore-case] [-V,--version] [--] name ...
   killall -l
# killall -SIGNAL name  杀死name应用

[root@PXE ~]# ps aux | grep named 
named      1308  0.0  0.7 216872 15280 ?        Ssl  17:07   0:00 named -u named
root       1696  0.0  0.0 103276   844 pts/0    S+   18:03   0:00 grep named

[root@PXE ~]# pkill named      #结束named进程

[root@PXE ~]# ps aux | grep named
root       1700  0.0  0.0 103272   844 pts/0    S+   18:03   0:00 grep named

[root@PXE ~]# ps aux | grep dhcpd
dhcpd      1203  0.0  0.1  48208  3588 ?        Ss   16:53   0:00 /usr/sbin/dhcpd -user dhcpd -group dhcpd
root       1707  0.0  0.0 103276   848 pts/0    S+   18:05   0:00 grep dhcpd

[root@PXE ~]# killall dhcpd     #结束dhcpd程序进程

[root@PXE ~]# ps aux | grep dhcpd
root       1710  0.0  0.0 103272   844 pts/0    S+   18:07   0:00 grep dhcpd


Linux的作业控制及nice值调整


Linux作业控制:   

    前台作业:占据着一个终端

    后台作业:作业执行时不占据终端,作业启动后就释放终端、

非守护进程类的程序,启动以后都在前台工作

    如果已经启动:前台-->后台。ctrl+z把前台作业送往后台,作业被”停止“

    如果尚未启动:# COMMAND &

退出当前会话,作业也会终止,因为作业与当前终端相关,如果把作业送往后台后,不期望作业随终止结束而停止
    # nohup COMMAND &

如何让送往后台的作业继续执行:

    # fg [%]作业号码:将作业调回前台继续进行

    # bg [%]作业号码:让作业在调整为优先启动

终止作业:默认的为最后一个进入后台的任务

    # kill  %作业号码:终止作业      

查看作业号:
    # jobs

[root@PXE ~]# top &    #把作业送往后台
[1] 1907

[root@PXE ~]# vi /etc/init.d/xinetd   # 使用 crtl +z 把进程由前台转为后台
^Z
[2]+  Stopped      vim /etc/init.d/xinetd

[root@PXE ~]# find /var  -print
^Z

[root@PXE ~]# jobs
[1]   Stopped                 top
[2]-  Stopped                 vim /etc/init.d/xinetd
[3]+  Stopped                 find /var -print

[root@PXE ~]# bg %2    #把2号后台任务调为优先启动
[2] vim /etc/init.d/xinetd &

[root@PXE ~]# jobs
[1]-  Stopped                 top
[2]+  Stopped                 vim /etc/init.d/xinetd
[3]   Stopped                 find /var -print

[root@www ~]# fg      # 默认取出那个 + 的工作,亦即 [2]。

[root@PXE ~]# fg %1
top
top - 20:08:11 up  3:15,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 100 total,   1 running,  98 sleeping,   1 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.8%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1941304k total,   313784k used,  1627520k free,    60920k buffers
Swap:  4194300k total,        0k used,  4194300k free,   145412k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       
     1 root      20   0 19364 1556 1248 S  0.0  0.1   0:01.08 init                                                                           
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                                       
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.09 migration/0                                                                    
     4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                                                                    
     5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                                      
     6 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 watchdog/0                                                                     
     7 root      RT   0     0    0    0 S  0.0  0.0   0:00.31 migration/1    

[root@www ~]# jobs     #查看作业号
[3]+  Stopped                 find /var -print

[root@PXE ~]# kill %3       #终止3号作业

[3]+  Stopped                 find /var -print

[root@PXE ~]# jobs
[3]+  Terminated              find /var -print

[root@PXE ~]# jobs     # 3号作业已终止

[root@PXE ~]# nohup top &    #把进程调入后台执行
[1] 2426


# renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  调整运行中进程的优先级

   renice -h | -v

# nice [OPTION] [COMMAND [ARG]...]   以预先定义的nice优先级启动进程

[root@PXE ~]# ps axo ni,pid,command | grep bash    # 只显示pid,nice值以及command 
  0   1967 -bash
  0   2041 -bash
  0   2091 grep bash

[root@PXE ~]# renice -5 2041       # 调整nice值为-10
2041: old priority 0, new priority -5

[root@PXE ~]# ps axo ni,pid,command | grep bash   # 2041进程nice值变为了-5
  0   1967 -bash
 -5   2041 -bash
 -5   2096 grep bash

[root@PXE ~]# nice -n 1 ntpd   #对于未启用的ntp进程调整nice值,增加1

[root@PXE ~]# ntpd          

[root@PXE ~]# ps axo pid,ni,command | grep ntpd   #查看ntp进程nice值 ,变为-4
  2230  -4 ntpd
  2247  -5 grep ntpd


本章blog知识点汇总


# pstree [-a|-p]  查看进程树命令

# ps aux  查看当前进程状态

# ps ef  显示所有进程的所有信息

# ps axo pid,ni,command   只显示进程的pid,nice值,command

# pgrep pattern  只显示符合pattern的进程

# pidof pattern  显示运行程序的进程ID

# top    查看系统进程

# top  -d delay -n iterations -p pid [, pid ...]   查看系统进程

# htop   查看系统进程,为top功能的升级版  

# vmstat  [delay [ count]]      显示虚拟内存信息      

# dstat  [delay [count]]   dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能工具,是一个全能系统信息统计工具

# kill [-s signal|-p] [--] pid...    用于实现向其他进程发送信息

# pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g pgrp,...]   # 基于名称或其它属性来查找进程,性能与killall类似

# killall -SIGNAL name   杀死name应用

# COMMAND &   把作业送往后台

# fg [%]作业号码:将作业调回前台继续进行

# bg [%]作业号码:让作业在后台调整为优先执行

# kill  %作业号码:终止作业  

# jobs  查看作业号

# renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  调整运行中进程的优先级

# nice [OPTION] [COMMAND [ARG]...]  #以预先的优先级启动进程