LINUX 进程管理

#### hostname
hostname [OPTION] [HOSTNAME]
默认选项:修改主机名为[HOSTNAME]
备注:临时生效如果想永久生效则需要修改文件/etc/sysconfig/network文件
选项
-I :取出本机上所有的非回环地址
示例
“`
[root@zhangxiao network-scripts]#hostname -I
172.20.110.6 172.10.87.1 172.20.110.229
“`
###  LINUX 进程及管理
内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能
进程:运行中的程序的一个副本:
      进程是有生命周期的
进程的创建:init|systemd 是由内核创建的
其下所有的进程都是它一级级按照父子进程关系进行创建的
对于linux而言,把进程划分优先级
0-139
      1-99 :实时优先级(数字越大优先级越高)
      进程处理,一般不人为干预
      100-139:静态优先级     数字越小,优先级越高
 nice值:-20,19  (其中-20对应于100,19对应于139)
 进程内存
“`
Page Frame :页筐,用来存储页面数据用来存储page 每个page frame大小是4K
同一主机上两个进程的通信
1、信号
2、使用共享内存
不同主机上的
1、RPC机制:远程过程调用
2、SOCKET:套接字
“`
LINUX内核模式:抢占式多任务
   进程的类型
“`
守护进程:daemon(在系统引导过程中启动的进程)
     前台进程:用户通过终端打开的进程
        我们也可以把从前台启动的进程送往后台,以守护模式运行
“`
进程的状态
“`
运行态:running
   就绪态:ready
   睡眠态:
         可中断的睡眠态
         不可中断的睡眠态
    停止态:暂停于内存中,但不会被调度,除非手动调度stoped
    僵死态:zombie
“`
进程的分类:
“`
CPU-bound:一般非交互型的进程多用cpu密集型
    IO-bound:交互式的一般用IO密集型
“`
Linux进程查看及管理工具
1、pstree:显示进程树
ps :process stat 进程状态查看
“`
ps :以快照形式把当前进程状态显示出来,并且退出
/proc/:LINUX系统中进程的相关信息都保存在这个文件中 目录中每一个编号映射着一个进程
常用组合:aux:以用户为中心显示主机上所有的进程
            u:以用户为中心组织状态信息显示
            x:与终端无关的进程
            a:所有与终端相关关的进程
详解
PID:进程编号
PPID:父进程编号
TTY:终端号
STAT:状态
         R:running
         S:可中断睡眠
         D:不可中断睡眠
         T:stoped
         Z: 僵尸态
         + :前台进程
         l :多线进程
         N :低优先级进程
         < : 高优先级进程
         s : 进程领导者
START:启动时间
TIME:占用CPU时长
CMD:哪个命令调用的此进程(加了中括号的是内核线程)
C:运行在哪块CPU上
USER:进程属主
CPU%:占用的CPU时间的百分比
MEM%: 占用MEM时间的百分比
VSZ : 虚拟内存大小(虚拟内存集)
RSS : 常驻内存集(不能放在交换分区中的)
“`
aux:以用户为中心显示主机上所有的进程
            u:以用户为中心组织状态信息显示
            x:与终端无关的进程
            a:所有与终端相关关的进进程
示例
“`
[root@zhangxiao ~]#ps aux |head -5
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19352  1560 ?        Ss   03:39   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    03:39   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    03:39   0:00 [migration/0]
root          4  0.0  0.0      0     0 ?        S    03:39   0:00 [ksoftirqd/0]
[root@zhangxiao ~]#^C
“`
-ef:显示所有进程的详细信息
        -e:所有进程
        -f:显示完整格式的进程信息
示例
“`
[root@zhangxiao ~]#ps -ef |head -5
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 03:39 ?        00:00:02 /sbin/init
root          2      0  0 03:39 ?        00:00:00 [kthreadd]
root          3      2  0 03:39 ?        00:00:00 [migration/0]
root          4      2  0 03:39 ?        00:00:00 [ksoftirqd/0]
[root@zhangxiao ~]#
“`
-eFH:完整格式以层级格式显示相关信息
        -F:显示完整格式的进程信息
        -H:以进程层级格式显示进程相关信息
示例
“`
[root@zhangxiao ~]#ps -eFH |head -5
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          2      0  0     0     0   2 03:39 ?        00:00:00 [kthreadd]
root          3      2  0     0     0   0 03:39 ?        00:00:00   [migration/0]
root          4      2  0     0     0   0 03:39 ?        00:00:00   [ksoftirqd/0]
root          5      2  0     0     0   0 03:39 ?        00:00:00   [stopper/0]
[root@zhangxiao ~]#
“`
o 表示制定显示哪些字段,o后边跟想要显示的字段 ,隔开
    可以用-eo 或者axo
                ni:nice值
                pri:优先级
                psr:哪颗CPU上
                rtprio:实时优先级
示例
“`
[root@zhangxiao ~]#ps -eo cmd,pid,user | head -5
CMD                            PID USER
/sbin/init                       1 root
[kthreadd]                       2 root
[migration/0]                    3 root
[ksoftirqd/0]                    4 root
[root@zhangxiao ~]#
“`
#### pgrep命令
pgrep [OPTION]   pattern
“`
-U:实际用户
    -u:有效用户
    -t terminal   :与terminal相关的
    -l :显示进程名字
    -a :完整格式显示进程名
    -P:显示其以此处进程为父进程的进程列表
“`
pidof 进程名字
     根据进程名字获取进程的ID号
### top命令
    实时显示本机中的终端信息
    默认占用CPU的大小进行排序(从大到小)
切换排序方式
            M:按照内存大小排序
            T:累计占用CPU时间排序
            P:占据的CPU百分比排序(此次刷新时间内)
定义显示内容
            l:命令    显示或隐藏此行信息
            第一行内容:当前系统时间;运行时长;用户数;平均负载值(过去一分钟、五分钟、15分钟的) 备注:用uptime
            命令可以单独显示此行
            t:命令  显示或隐藏第二三行信息
            第二行内容:进程数;运行状态进程数;睡眠状态的;停止状态的;僵尸状态的
            第三行内容:cpu信息
                       命令 :1 显示多颗cpu信息
                       us:用户空间程序占用的宝粉币
                       sy:系统空间
                       ni:nice值
                       id:空闲的比例
                       wi:等待IO完成时间
                       hi:CPU处理硬中断所占的百分比
                       si:处理软中断占得
                       st:偷走的时间
            m命令显示
            第四行内容:物理内存大小(KB为单位) 总体空间;已用空间;空闲空间
退出top 命令 q 命令
修改刷新时间 s 命令修改
终止制定内容 k 命令
选项
        -d:指明刷新时间间隔后加数字默认是3秒
        -b:以批次模式显示
        -n:通常和-b配合使用。后面加数字,显示几批
htop命令
“`
选项
       -d :制定延迟时间
       -u username:显示指定用户的进程
       -s:以指定字段进行排序
s :跟踪选定进程的系统调用
l :跟踪选定进程打开的文件列表
a :将选定的进程绑定值cpu核心
“`
vmstat命令:
“`
[root@zhangxiao ~]#vmstat
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 368472  59076 223112    0    0     5     1   32   56  0  0 99  0  0
[root@zhangxiao ~]#
“`
各个显示字段的意思
“`
procs:
    r:等待运行的进程的个数
    b:处于不可中断睡眠状态进程个数
memory
    swpd:交换内存的使用总量
    free:物理内存的空闲总量
    buffer:用于buffer的内存总量
    catch:用于catch的内存总量
swap  (从内存角度看)
    si:数据进入交换内存的速率(kb/s)
    so:数据离开交换内存的速率
io    (从系统角度看)
    bi:从块设备读入数据到系统的速率(kb/s)
    bo:从系统保存至块设备的速率
system
    in :中断速率
    cs :进程切换速率
cpu
    us:用户空间程序占用的宝粉币
    sy:系统空间
    id:空闲的比例
    wi:等待IO完成时间
    st:偷走的时间
“`
pmap :
“`
格式:一般pmap [option]  pid
    查看pid所代表的进程
    -x :显示详细格式信息
这个命令可以用cat/proc/pid/maps
查看
“`
glances
“`
常用选项
      -b :以字节为单位显示网卡数据速率
      -d:关闭磁盘IO模块
      -f /PATH/TO/SOMEFILE  :设定输出文件位置
      -o:{HTML|CVS}:输出模式
      -m:禁用mount模块
      -n:禁用网络模块
      -t # :延迟时间间隔
      -1:每个cpu相关数据单独显示
C/S 模式下运行glances 命令
     服务模式
            glances -s -B IPADDR
    客户端模式
            glances -c  IPADDR
“`
dstat 命令
“`
    -c:查看cup的信息(默认就带-c)
    -C 【0,1,2,total】:查看指定CPU的信息
    -d:显示磁盘的读写速率
    -D DISK[total]:显示DISK的读写数据
    -g:显示page相关统计数据
    -I:显示终端的统计数据
    -l:显示平均负载
    -m:显示内存相关数据
    -n:显示网络相关统计数据
    -p:显示进程统计数据
    -r:显示IO相关的统计数据
    -s:显示交换空间的统计数据
    –top-mem:占内存最大的
    –top-io:占IO最大的
    –top-cpu:占cpu最大的
  “`
kill命令
“`
向进程发送控制信号,实现对进程的管理
      -l :查看所有的信号
常用信号
        1、重读配置文件(不关闭进程)   SINGHUP
        2、终止信号(相当于ctrl+c)     SINGINT
        9、杀死正在运行的进程           SINGKILL
        15、终止正在运行的进程(让程序可以处理正在运行的数据)                               SINGTERM
        18、使停止的状态的程序继续运行  SINGCONT
        19、让其处于停止状态            SINGSTOP
“`
 指定信号的方法
“`
(1)使用信号的数字标识
            (2)信号的完整名
            (3)信号的简写名
“`
        向进程发送信号:
             kill  [-SIGNAL]  PID …
终止“名称”之下的所有程序
“`
killall -SIGNAL  PROGRAM
“`
LINUX的作业控制
“`
前台作业:运行时占据了命令行提示行的作业
    后台作业:可以通过前台启动,但启动后就转入后台运行
已经启动的进程转入后台模式
   ctrl+z
未启动的进程转入后台
   CMD &
“`
   此类作业虽然被送往后台运行,但是依然与终端相关,如果希望送往后台剥离与终端的关系则用
    nohup CMD &
()此时如果终端被杀掉,进程不收影响
jobs 命令查看所有作业
     作业控制
             fg [%JOB_NUM] 把(制定的)后台作也调回前台
             bg [%JOB_NUM] 让送往后台的作业继续在后台运
             kill [%JOB_NUM] 杀死送往后台的作业
进程优先级调整
      静态优先级:100-139
         nice -n # CMD nice:启动进程时按照#优先级运行
         renice -n # PID :调整运行的程序的优先级
查看ps axo pid,comm.ni
未涉及的命令:star,tstar,iostat,iftop

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97585

(0)
a.张笑a.张笑
上一篇 2018-05-06
下一篇 2018-05-06

相关推荐