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

[经验分享] Linux进程及作业管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-28 10:54:38 | 显示全部楼层 |阅读模式
Linux进程管理:


Linux内核:抢占式多任务
进程类型:
      守护进程:daemon,跟终端无关,在系统引导中启动进程      
      用户进程(前台进程):通过终端启动的进程;
       注:也可把在前台启动的进程送往后台,以守护模式运行;
进程状态:
      运行态:running   
      就绪态:ready
      睡眠态:可中断:interruptable,不可中断:uninterruptable
      停止态:暂停于内存中,但不会被调度,除非手动启动
      僵死态:zombie
进程的分类:
      CPU-Bound
      IO-Bound
   /proc/:内核中的状态信息;
                   内核参数:可设置其值从而调整内核运行特性的参数;/proc/sys/
                   状态变量:其用于输出内核中统计信息或状态信息,仅用于查看;
                   参数:模拟成文件系统类型
         进程:/proc/#
                          #:PID
进程的所有信息和状态都存放在该文件中,所以有很多进程查看工具帮我们把进程的相关信息数据直观的抽取出来


Linux系统上的进程查看及管理工具   

ps命令

          ps [OPTIONS]:
          选型的风格:1、UNIX options
                                 2、BSD  options
                                 3、GNU  options
  启动进程的方式:
         系统启动过程中自动启动,与终端无关的进程;
         用户通过终端启动;
BSD风格选项
a所有与终端相关的进程
x所有与终端无关的进程
u以用户为中心组织进程状态信息
aux组合选项之一
与终端相关的进程; spacer.jpg
wKiom1Z_5QHjgflLAACz1bXRS-M373.jpg
spacer.jpg 显示结果各字段意义:
               VSZ:虚拟内存集
               RSS:常驻内存集
               STAT:进程状态
STAT含义
Rrunning
Sinterruptable sleeping
Duninterruptable sleeping
Tstoped
Zzombie
+前台进程
l多线程进程
n低优先级进程
<高优先级进程
ssession leader


UNIX风格选项
-e显示所有进程
-f显示完整格式的进程信息
-F显示更加完整格式的进程信息
-H以层级结构显示进程的
-ef组合选项之二
spacer.jpg wKioL1Z_5nzwi7SBAABF32Tuz3w692.jpg
-eFH组合选项之三
wKioL1Z_5rGhfOOEAACHpQHA810561.jpg
c表示cpu占用比,PSR表示运行于那颗cpu上


常用选项组合之四:-eo , axo
             o filed1,filed2,,,自定义要显示的字段列表,以逗号分隔;
             常用的filed:pid,ni,pri,psr,pcpu,stat,comm,tty,ppid,rtprio
                   pid:显示进程号
                   ni:显示Nice值
                   pri:显示优先级数字
                   psr:运行在那颗cpu上
                   pcpu:cpu占用比
                   stat:状态
                   comm:运行的命令
                   tty:运行的终端
                   ppid:父进程号
                   rtprio:实时优先级

pgrep,pkill命令:进程过滤专用工具

pgrep [options] PATTERN

选项
-u uid起作用的用户
-U uid显示指定用户的进程
-t  TERMINAL与指定的终端相关的进程
-l显示进程名
-a显示完整格式的进程名
-p  pid
显示此进程的子进程

pkill命令选项与pgrep选项相同,表示杀死匹配到的进程
pidof命令:根据进程名取其pid
pidof 后跟进程名
wKioL1Z_5zCDel3gAAAIpB73ZHs816.jpg



top命令:动态显示系统进程信息。
键入top命令,会出现动态显示的一个进程信息界面
wKioL1Z_51PSxOPYAACiTTGgxKk097.jpg

界面首部显示信息:

  • 第一行:top-显示当前时间,  up 显示运行时长 , user表示登录到当前系统上的用户数 ,load average表示过去1分钟,5分钟,15分钟内的平均负载(等待运行的进程队列长度)
  • 第二行:Tasks:进程任务
  • 第三行:%Cpu(s):us表示运行在用户空间的进程所占用的cpu百分比,sy表示运行在系统内核空间的进程所占用的百分比,ni表示用于nice值调整所占用的cpu百分比,id表示空闲cpu百分比,wa等待io完成所占用的cpu百分比,hi表示硬中断所占用的cpu百分比,si表示软中断所占用的cpu百分比,st表示被虚拟化程序偷走的cpu百分比。
  • 第四行:物理分区内存空间占用情况;
  • 第五行:交换分区内存空间占用情况;

wKiom1Z_52SiTJlvAAAauySBAno899.jpg

(注:uptime命令显示top命令显示的第一行的信息:)

wKioL1Z_56ej34ikAAALLnnF-qs020.jpg

内建交互式命令:
首部信息显示选项:
可键入l命令显示第一行uptime信息;
可键入t命令显示tasks和cpu的信息;
可键入m命令显示第四行和第五行的内存信息;

可键入1命令显示所有cpu的信息;
wKioL1Z_58iTsL2xAAAIdOp244o086.jpg
进程的状态信息默认以cpu占用比进行排序

wKiom1Z_58vynYFUAAAfKeYJTu4619.jpg
键入M表示以内存占用百分比进行排序:

wKioL1Z_6AnCMFePAAAoEq_mAgU073.jpg
键入T表示以运行时间进行排序

wKioL1Z_6CiwhVxqAAAqwDs-0WY923.jpg
键入P表示以cpu占用百分比进行排序;

wKioL1Z_6FCi2afOAAAnuqFqrYA961.jpg
键入s表示修改刷新时间间隔,输入刷新隔时间,以秒为单位:

wKioL1Z_6WXinVquAAAGx0po-D4590.jpg
键入k后面跟上进程号表示杀死该进程:

wKiom1Z_6WSQh63vAAAGKWwKoX4497.jpg

键入q表示退出命令;
top命令选项:
    -d#:设定刷新间隔
wKioL1Z_6ZeiMoeOAAADR4H1zok001.jpg

    -b:以批次方式显示
    -n#:显示多少批次(类似于ps命令)
wKioL1Z_6bWy3_JqAAADHKFE4Rk630.jpg

        

htop命令:
htop是top的升级版。
使用方法大同小异;
wKiom1Z_6cOSUaRIAADNVmYwYOI118.jpg

默认显示所有cpu的占用信息,并且支持鼠标操作。
相比htop改进之处:界面更优化,操作更简单,支持鼠标操作。
内部交互式命令:
可键入t或F5命令以层级关系显示进程关系
wKioL1Z_6gizh9oiAAAnMTT7Vmg349.jpg
可用上下按键或鼠标选定进程,键入l命令显示该进程所打开的所有文件:
wKiom1Z_6hejT48QAABLHhjjuRE928.jpg
选定进程后键入s命令,可以显示该进程的所有系统调用,而且能追踪新的系统调用:

wKioL1Z_6lDw8rRDAAByO50RIf8532.jpg 可键入a将选定的进程绑定至某指定的CPU核心
wKioL1Z_6mjgIanDAAADa6aURfI230.jpg
可键入F2键设置显示需要的信息和显示格式:

wKiom1Z_6n7z92-4AABoP1GxeXI025.jpg
htop命令选项:
        -d#:指定刷新间隔
        -u username :仅显示指定用户的进程
        -s COLUME:以指定字段进行排序



vmstat命令:报告虚拟内存的统计数据


vmstat [options][delay[count]]

delay:设置刷新时间
count:设置显示次数
wKiom1Z_6qWx3C9UAAAPpT01t-Y424.jpg
  • procs表示的含义:r:等待运行的进程个数,cpu上等待运行的任务的队列长度

                                       b:处于不可终端睡态的进程个数,被阻塞的任务队列的长度
  • memory:swpd:交换内存使用总量

                            free:空闲的物理内存总量
                         buffer:用于buffer(缓冲)的内存总量
                        cache:用于cache(缓存)的内存总量
  • swap:si:数据进入swap中的数据速率(kb/s),换进

                    so:数据离开swap的数据速率,换出
  • io: bi:从块设备读入数据到内存的速度(kb/s)

               bo:保存数据至块设备的速率
  • system:in:interrupts,中断速率,平均每秒

                       cs:context switch,上下文切换的速率
  • cpu:us:用户空间所占用的cpu百分比

                 sy:系统空间所占用的cpu百分比
                   id:空闲cpu
                  wa:等待IO完成的所占用的百分比
                  st:被虚拟化基础所偷走的cpu时间
    vmstat选项:
              -s:显示内存统计数据
wKiom1Z_6wGiNVuJAAA06E5nMfI971.jpg


pmap命令:指定显示进程内存映射表


pmap [options]pid...
wKiom1Z_6zHCimzOAABQhazs7zQ384.jpg

另一种查看方式: cat  /proc/PID/maps
wKioL1Z_63PTaoCVAACOwDn6KlY899.jpg


dstat命令


dstat [-afv][options..][delay[count]]
wKioL1Z_647Ss_SxAAAbvxzkeDg819.jpg
默认会刷新时间间隔为2秒,并会一直动态显示下去
可以设置delay时间间隔,和count次数
wKiom1Z_64zggoLDAAAaq3BjeuM972.jpg
选项
-c显示指定cpu相关信息,也可指定特定的cpu,-C# #,
wKiom1Z_6_DBi1pNAAAHk5Wk2p8858.jpg
-d显示磁盘的相关信息,也可指定特定磁盘,-D#,#
wKioL1Z_7B2yUMosAAAHZIDYK5E351.jpg
-g显示page相关的速率数据
wKioL1Z_7C7TH6yBAAAFxpw7nDI289.jpg
-mMemory的相关统计数据
wKiom1Z_7CbAsawWAAAJAbIb1a8892.jpg
-nInterface的相关统计数据
wKioL1Z_7H-jKzx6AAAIXNCF750348.jpg
-p显示Process相关统计数据
wKioL1Z_7JWi6kG7AAAHD61DnL4650.jpg
-r显示lo请求的相关统计数据
wKioL1Z_7KvS3dRwAAAG2egFqMM800.jpg
-i显示中断的信息
wKiom1Z_7KSBl8TYAAAGZFySR1U351.jpg

--tcp显示tcp协议的连接
wKioL1Z_7O_jeVjUAAAIF7P-XCE965.jpg
--udp显示udp协议的连接
wKiom1Z_7OvB95rzAAAHcoi7XA4199.jpg
--raw显示raw连接
wKiom1Z_7P3QMTQ0AAAFWIiq6V4679.jpg
--socket显示socket连接
wKioL1Z_7SuAj_XAAAAI2qrE7mc186.jpg
--top-cpu显示最占用cpu的进程
wKiom1Z_7SiT-JE8AAAInLBAwFo392.jpg
--top-io显示最占用io的进程
wKiom1Z_7UbSiI3wAAAL45bdt60366.jpg
--top-mem显示最占用内存的进程
wKiom1Z_7U-AYo--AAAJVYtRmV0590.jpg






kill命令:用于向进程发送信号,以实现对进程的管理


只有管理员有权限向进程发送信号
kill -l :显示当前系统的可用信号
wKioL1Z_7ZTy4yL8AAA0y7GJodE154.jpg
也可在-l后跟上信号名称显示指定信号
信号的表示方法:
  • 信号的数字标识
  • 信号的完整名称
  • 信号的简写名称

向进程发送信号:
         kill [-s signal | -signal]pid...
      常用信号:
  •        1)SIGHUP:无需关闭进程
  •        2)SIGINT:中止正在运行的进程,相当于Ctrl+c
  •        9)SIGKILL:杀死运行中的进程,强制杀死
  •      15)SIGTERM:终止运行
  •      18)SIGCONT:=fg:进行停止中的进程
  •      19)SIGSTOP:=Ctrl+z:停止进程并送往后台

killall[-SIGNAL]program


Linux系统作业控制:


job:
    前台作业(foregroud):通过终端启动,且启动后会一直占据终端
    后台作业(backgroud):可以通过终端启动,也可以不通过终端启动,但启动后即转入后台运行(释放终端)

如何让让作业运行于后台:
            (1)运行中的作业:Ctrl+z送往后台后,作业会转为停止态。
            (2)尚未启动的作业:#COMMAND&,此类作业虽被送完后台也依然与终端相关。
                     ( 此类作业虽被送完后台也依然与终端相关,使用#nohup COMMAND &命令可以把送往后台的作业剥离与终端的关系)
wKiom1Z_7aqgZ1QmAAAVC_3hADc540.jpg
查看所有作业:#jobs
wKiom1Z_7d2RIVyGAAAF3_zQsYs091.jpg
可实现作业控制的常用命令:
                        # fg  [[%]JOB_NUM]:把指定的作业调回前台;
                        # bg  [[%]JOB_NUM]:让送往后台的作业在后台继续运行;
                        # kill  %JOB_NUM:终止指定的作业;

wKioL1Z_7hbg_Hb-AAAA3bGPl9g362.jpg 作业号后的+号表示优先级,如果使用控制作业命令后不加作业号,默认执行有加号的作业,之后执行有减号的作业最后执行没有符号的作业。


调整进程优先级:
可通过nice值调整的优先级范围:100-139,分别对应nice值:-20,19
进程启动时:其nice值默认为0,优先级是120
nice命令:以指定的nice值启动并运行命令
        nice[options][command [ARGUEMENTS]..]
               选项:-n NICE
   注意:只有管理员可以调低nice值

renice命令:调整正在运行进程的优先级
        renice[-n]NICE PID....


总结

进程管理是Linux系统运维中机器重要的一部分,所以熟练使用各种工具查看噶管理进程在生产环环境中起到了重要作用,也是不可或缺的一环,在进程管理工具中top使用时间比较长,是前期Linux系统中最广泛的一款进程查看工具,如今而言,htop逐渐取代了他的地位,相比较而言,htop拥有更好看的界面和更快捷的操作,更是支持用鼠标操作,在未来的操作系统中将会占据主导地位,dstat工具是一个可以查看各种进程状态的工具,也是非常强大,甚至可以查看网络状态。


运维网声明 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.iyunv.com/thread-157363-1-1.html 上篇帖子: Linux命令之scp 下篇帖子: btrfs管理以及应用 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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