设为首页 收藏本站
查看: 3019|回复: 0

[经验分享] Linux自学笔记——linux进程及作业管理

[复制链接]

尚未签到

发表于 2018-5-17 09:26:46 | 显示全部楼层 |阅读模式
  

  

内核的功用主要有进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能这几个方面,本文主要讨论linux进程及作业管理。
进程管理
      进程,process,运行中程序的一个副本,且存在生命周期;
      进程分为CPU bound和I/Obound。
           CPU bound:CPU密集型(类似于高清视频)
           I/O bound:IO密集型(编辑器等频繁IO操作)
      Linux内核存储进程信息的固定格式为:task struct(结构体)
           多个任务的task struct组件的链表:task list
      进程创建:
           在centos6上,init为初始化进程,父进程。
           请求发出者(进程)都由父进程创建,然后为系统调用;
           进程:fork()   clone()
      IPC: Inter Process Communication
           同一主机上:
                 signal
                 shm: shared memory
                 semerphor
           不同主机上:
                 rpc: remote procecure call
                 socket:
      进程调度:保存现场,恢复现场
           进程运行程序,是程序的一部分
                 多任务:多进程同时运行
                            抢占式多任务
      进程优先级:
      0-139
           1-99:实时优先级,数字越大,优先级越高;
           100-139:静态优先级,数字越小,优先级越高;
           Nice值:-20,19   -20相当于100,19相当于139;
      每个进程运行时间不同,linux支持抢占式多任务,当一个低优先级的程序在运行,这时有一个高优先级的运行,过段时间后这个高优先级的提前运行。
      算法复杂度:Big 0 (衡量标准算法)
           o(1):恒定的,无论优先级,消耗时间相同(最佳的)
o(logn):每次调度,调度程序需要从树中找出优先级最高的进程
o(n):线性的
o(n^2):抛物线机制
o(2^n):随队列深度增长
      进程状态:
           运行态:running
           就绪态:ready
           睡眠态:
                 可中断:interruptable
                 不可中断:uninterruptable
           停止态:暂停于内存中,但不会被调度,除非手动启动之:stopped
           僵死态:zombie
Linux系统上的进程查看及管理工具:
     在linux系统中主要的进程管理工具有:pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,job,bg,fg,nohup,nice,renice,killall,…
1.     pstree命令:
pstree - display a tree of processes
DSC0000.png    
在centos6中父进程为init,而在centos7中,父进程为systemd
DSC0001.png
pstree –p:显示各进程的PID
DSC0002.png
其它用法选项可参照man手册。
2.     ps命令:process state
ps命令显示的是ps命令执行时系统上进程信息的快照,是静态的结果。
Linux运行中的内核的相关信息是通过/proc伪文件系统输出的;各进程都有一个其PID命名的子目录,每个子目录中许多文件存储了进程的相关信息。
进程文件:/proc/#
             #:PID
DSC0003.png
ps - report a snapshot of the current processes.
DSC0004.png
ps [options]
选项有三种风格:
1 UNIX options, which maybe grouped and must be preceded by a dash.
2 BSD options, which maybe grouped and must not be used with a dash.
3 GNU long options, which arepreceded by two dashes.
      启动进程的方式:
           系统启动过程中自动启动:与终端无关的进程;
           通过用户终端启动:与终端相关的进程;
      常用组合之一:aux
           a:所有与终端相关的进程;
           x:所有与终端无关的进程;
           u:以用户为中心组织进程状态信息显示;
            DSC0005.png
           VSZ:虚拟内存集;
           RSS:Resident Size,常驻内存集;
           STAT
                 R:running;
                 S:interruptable sleeping
                 D:uninterruptable sleeping
                 T:stopped
                 Z:zombie
              
                 +:前台进程;
                 1:多线程进程;
                 N:低优先级进程;
                 <:高优先级进程;
                 s:session leader;
      常用组合之二:-ef
           -e:显示所有进程;
           -f:显示完整格式的进程信息;
            DSC0006.png
      常用组合之三:-eFH
           -F:显示额外信息
                 C:cpu utilization   cpu利用率
                 PSR:运行在哪一颗cpu之上
           -H:以层级结构显示进程的相关信息;
                DSC0007.png
         常用组合之四:-eo,axo
           o field2,field2,…:自定义要显示的字段列表,以逗号分隔;
                 常用的field:pid,ni,pri,psr,pcpu,stat,comm,tty,ppid,rtprio
                      ni:nice值;
                      priority:优先级;
                      rtprio:realtime priority,实时优先级;
            DSC0008.png
3.     pgrep,pkill命令:
pgrep, pkill - look up or signalprocesses based on name and other attributes
pgrep [options] pattern
  -uuid:effectiveuser;
  -Uuid:readuser;
  -tTERMINAL:与指定的终端相关的进程;
  -l:显示进程名;
  -Ppid:显示此进程的子进程;
    DSC0009.png
pkill的用法与pgrep完全一样。
4.     pidof命令:根据进程名,取其id
pidof -- find the process ID of a running program.
pidof  [ program ]
DSC00010.png
5.     top命令:
top - display Linux tasks
DSC00011.png
排序:
  P:以占据cpu百分比排序;
   DSC00012.png
  M:已占据内存百分比排序;
   DSC00013.png
  T:累计占用CPU时间排序;
   DSC00014.png
首部信息:按以下命令可以显示或隐藏指定的信息;
  uptime信息:l命令
  tasks及cpu信息:t命令
  内存信息:m命令
退出命令:q
修改刷新时间间隔:s
DSC00015.png
终止指定的进程:k
DSC00016.png
选项:
  -d #:指定刷新时间间隔,默认为3秒;
       #top –d 1:指定刷新时间为1秒刷新一次;
   DSC00017.png
  -b:以批次方式显示;
  -n #:显示多少批次;
        #top –b –n 2:以批次显示显示两批,自动退出;
   DSC00018.png
6.     uptime命令:显示系统时间、运行时长及平均负载;
过去一分钟、五分钟和十五分钟的平均负载;
  等待运行的进程队列的长度;
uptime - Tell how long the system has been running.
#uptime
DSC00019.png
7.     htop命令:
centos6上没有htop的安装包,我们需要手动配置epel的yum源安装htop;
htop - interactive process viewer:交互式进程查看器
DSC00020.png
选项:
  -d #:指定延迟时间间隔;
  -u USERNAME:仅显示指定用户的进程;
       #htop –u rpc
   DSC00021.png
  -s COLUME:以指定字段进行排序;

子命令:
   DSC00022.png
  l:显示选定的进程打开的文件列表;
  s:跟踪选定的进程的系统调用;
  t:以层级关系显示各种进程状态;
  a:将选定的进程绑定至某指定的CPU核心;
8.     vmstat命令:
vmstat - Report virtual memory statistics  显示虚拟内存状态
vmstat  [options]  [delay [count]]
DSC00023.png
proc
  r:等待运行的进程运行的任务队列的长度;
  b;处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;
memory
  swpd:交换内存使用总量;
  free:空闲的物理内存总量;
  buffer:用于buffer的内存的总量;
  cache:用于cache的内存总量;
swap
  si:数据进入swap中的数据速率(kb/s)
  so:数据离开swap的速率(kb/s)
io
  bi:从块设备读入数据到系统的速度(kb/s)
           bo:保存数据至块设备的速率(kb/s)
      system
           in:interrupts,中断速率;
           cs:context switch,上下文切换的速率;
      cpu
           us:user space;
           sy:system;
           id:idle;
           wa:wait;
           st:stolen;
      选项:
           -s:显示内存统计数据;
            DSC00024.png
      #vmstat 2 6          每两秒显示一次,显示六次退出;
       DSC00025.png
9.     pmap命令:
pmap - report memory map of a process显示一个进程的内存映射
pmap [options] pid [...]
  -x:显示详细信息的格式;
DSC00026.png
另一种查看方式:cat /proc/PID/maps
DSC00027.png
10.glances命令:
glances - A cross-platform curses-based monitoring tool      一个跨平台的多视窗根基的监控工具
glances [-bdehmnrsvyz1]  [-B  bind] [-c  server]  [-C conffile] [-p port] [-P password]
       [--password] [-trefresh] [-f file] [-o output]
#glances
DSC00028.png
按“h”帮助选项:
DSC00029.png
常用选项:
  -b:以byte为单位显示网上数据速率;
  -d:关闭磁盘I/O模块;
  -m:关闭mount模块;
  -t #:刷新时间间隔;
  -1:每个CPU的相关数据单独显示;
  -o {HTML|CSV}:输出格式;
  -f /PATH/TO/SOMEWHERE:设定输出文件的位置;
C/S模式下运行glances命令:
  服务模式:
       glances –s -BIPADDR
       IPADDR:本机的某地址,用于监听;
   DSC00030.png
  客户端模式:
       glances –c IPADDR
       IPADDR:是远程某服务器的地址;
   DSC00031.png
11.dstat命令:
- versatile tool for generating system resource statistics    显示系统资源状态的通用工具
dstat [-afv] [options..] [delay [count]]
DSC00032.png
常用选项:
  -c, --cpu:显示cpu相关信息;
   DSC00033.png
       -C #,#,…,total
  -d,--disk:显示磁盘的相关信息;
   DSC00034.png
       -D sda,sdb,…,total
       DSC00035.png
  -g:显示page相关的速率数据;
  -m:memory的相关统计数据;
   DSC00036.png
  -n:interface的相关统计数据;
   DSC00037.png
  -p:显示process的相关统计数据;
   DSC00038.png
  -r:显示io请求的相关统计数据;
   DSC00039.png
  -s:显示swapped的相关统计数据;
   DSC00040.png
  -y:显示系统相关数据,包括中断和进程切换;
  
  --tcp:显示tcp的相关数据
  --udp:显示udp的相关数据
  --raw:显示raw的相关数据
  --socket:显示套接字的相关数据
  --ipc:显示进程通信相关的速率数据
   DSC00041.png
  --top-cpu:显示最占用cpu的进程;
   DSC00042.png
  --top-io:最占用io的进程;
  --top-mem:最占用内存的进程;
  --top-lantency:延迟最大的进程;
      用于向进程发送信号,以实现对进程的管理;
      显示当期系统可用信号:
12.kill 命令:
kill- terminate a process
用于向进程发送信号,以实现对进程的管理;
显示当期系统可用信号:
           kill –l [signal]
          DSC00043.png
            每个信号的标识有三种:
1)         信号的数字标识;
2)         信号的完整名称;
3)         信号的简写名称;
向进程发送信号:
  kill  [-s signal|-SIGNAL]  pid...
  常用信号:
1)         SIGHUP:无须关闭进程而让其重读配置文件;
2)         SIGINT:终止正在运行的进程,相当于ctrl+c;
9)         SIGKILL:杀死运行中的进程;
15)     SIGTERM:中止正在运行中的进程;
18)     SIGCONT:继续运行指定进程;
19)   SIGSTOP:暂停进程;
示例:启用httpd服务,对此进程进行管理;
1.     启用httpd服务,检查80端口是否处于监听状态。
DSC00044.png
2.     查看httpd进程;
DSC00045.png
3.     杀死运行中的pid为3099的进程,并查看结果;
#kill -9 3099
DSC00046.png
4.     默认信号为15,用下面的方法可以中止信号;
DSC00047.png
或者
DSC00048.png
13.kllall命令:
killall - kill processes by name
killall  [-SIGNAL]  program
示例:禁用httpd服务;
DSC00049.png
Linux系统作业控制:
job
前台作业(foregroud):通过终端启动后,且启动后会一直占据终端;
后台作业(backgroud):可以通过终端启动,但启动后即转入后台运行(释放终端)

如何让作业运行于后台?
1)运行中的作业
Ctrl+z
DSC00050.png
注意:送往后台后,作业会转为停止态;
2)尚未启动的作业
#COMMAND &
DSC00051.png
注意:此类作业虽然被送往后台,但其依然与终端相关;如果希望把送网后台的作业剥离与终端的关系;
      #nohup COMMAND &
查看所有作业:
#jobs
DSC00052.png
可实现作业控制的常用命令:
# fg [[%]JOB_NUM]:把指定的作业调回前台;
DSC00053.png
# bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行;但是此作业必须支持后台运行;
DSC00054.png
# kill %JOB_NUM:终止指定的作业,kill作业号的%不可以省略;
DSC00055.png
调整进程的优先级:
可通过nice值调整的优先级范围:100-139;
      分别对应于:-20,19
进程启动时,其nice值默认为0,其优先级是120;
nice命令:
      以指定的nice值启动并运行命令
            # nice  [OPTION] [COMMAND [ARGU]...]
            选项:
                  -n NICE
      注意:仅管理员可调低nice值;


renice命令:
            # renice  [-n] NICE  PID...
            
      查看Nice值和优先级:
            ps  axo  pid, ni, priority, comm  


  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461185-1-1.html 上篇帖子: linux思想 下篇帖子: linux tar 备份命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表