Linux 第18天: (09月06日) Linux进程管理
本章内容进程相关概念进程及系统相关工具计划任务
进程概念内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等Process: 运行中的程序的一个副本,是被载入内存的一个指令集合进程ID(Process ID,PID)号码被用来标记各个进程UID、GID、和SELinux语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承存在生命周期task struct:Linux内核存储进程信息的数据结构格式task list:多个任务的的task struct组成的链表进程创建:init:第一个进程父子关系进程:都由其父进程创建,COWfork(), clone()
进程优先级进程优先级:系统优先级:数字越小,优先级越高0-139(CentOS4,5)各有140个运行队列和过期队列0-98,99(CenOS6)实时优先级:99-0:值最大优先级最高Nice值:-20,19对应系统优先级100-139或99Big O:时间复杂度,用时和规模的关系O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)
进程相关概念进程内存:Page Frame: 页框,用存储页面数据,存储Page 4kLRU:Least Recently Used 近期最少使用算法,释放内存物理地址空间和线性地址空间MMU:Memory Management Unit负责转换线性和物理地址IPC: Inter Process Communication同一主机上signalshm: shared memorysemophore信号量,一种计数器不同主机上:rpc: remote procedure callsocket: IP和端口号
进程状态Linux内核:抢占式多任务进程类型:守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程前台进程:跟终端相关,通过终端启动的进程注意:两者可相互转化进程状态:运行态:running就绪态:ready睡眠态:可中断:interruptable不可中断:uninterruptable停止态:stopped,暂停于内存中,但不会被调度,除非手动启动僵死态:zombie,结束进程,父进程结束前,子进程不关闭
系统管理工具进程的分类:CPU-Bound:CPU密集型,非交互IO-Bound:IO密集型,交互Linux系统状态的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohuppstree命令:pstree-display a tree of processesps: process stateps-report a snapshot of the current processesLinux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
列举进程ps适用ps来查看进程信息ps[OPTION]...支持三种选项:UNIX选项如-A -eBSD选项如aGUN选项如--help默认显示当前终端中的进程a选项包括所有终端中的进程x选项包括不链接终端的进程u选项显示进程所有者的信息f选项显示进程的父进程o属性… 选项显示定制的信息:pid、comm、%cpu、%mem、state、tty、euser、ruser
进程管理工具VSZ: Virtual memory SiZe,虚拟内存集,线性内存RSS: ReSidentSize, 常驻内存集STAT:进程状态R:runningS: interruptablesleepingD: uninterruptable sleepingT: stoppedZ: zombie+: 前台进程l: 多线程进程N:低优先级进程<: 高优先级进程s: session leader,会话(子进程)发起者
进程管理工具常用组合:-ef-e: 显示所有进程-f: 显示完整格式程序信息常用组合:-eFH-F: 显示更完整格式的进程信息-H: 以进程层级格式显示进程相关信息常用组合:自定义-eopid,tid,class,rtprio,ni,pri,psr,pcpu,stat,commaxostat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
进程管理工具ni: nice值pri: priority,优先级psr: processor, CPU编号rtprio: 实时优先级
搜索进程最灵活:ps选项| 其它命令按预定义的模式:pgreppgrep[options] pattern-u uid: effective user,生效者-U uid: real user,真正发起运行命令者-t terminal: 与指定终端相关的进程-l: 显示进程名-a: 显示完整格式的进程名-P pid: 显示指定进程的子进程按确切的程序名称:/sbin/pidof$pidof bash
系统工具uptime显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)系统平均负载:指在特定时间间隔内运行队列中的平均进程数。如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。如果linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。
进程管理工具top:有许多内置命令:排序:P:以占据的CPU百分比,%CPUM:占据内存百分比,%MEMT:累积占据CPU时长,TIME+首部信息显示:uptime信息:l命令tasks及cpu信息:t命令cpu分别显示:1 (数字)memory信息:m命令退出命令:q修改刷新时间间隔:s终止指定进程:k保存文件:W
top命令栏位信息简介us:用户空间sy:内核空间ni:调整nice时间id:空闲wa:等待IO时间hi:硬中断si:软中断(模式切换)st:虚拟机偷走的时间
进程管理工具栏位信息简介PID (Process Id):任务的进程IDPPID (Parent Process Pid):父任务的进程IDRUSER (Real User Name):任务的所有者真实名称UID (User Id):任务所有者IDUSER (User Name):任务所有者名称GROUP (Group Name):任务所有者群组名TTY (Controlling Tty):终端PR (Priority):优先级%CPU (CPU usage):CPU使用率%MEM (Memory usage (RES)):内存使用率S (Process Status):进程状态TIME+ (CPU Time, hundredths):CPU时间,精确到秒选项:-d #: 指定刷新时间间隔,默认为3秒-b: 以批次方式-n #: 显示多少批次htop命令:需从Fedora-EPEL源安装
选项:-d #: 指定延迟时间;-u UserName: 仅显示指定用户的进程;-s COLUME: 以指定字段进行排序;子命令:s: 跟踪选定进程的系统调用;l: 显示选定进程打开的文件列表;a:将选定的进程绑定至某指定CPU核心;t: 显示进程树
内存工具vmstat命令:虚拟内存信息vmstat[options] [delay [count]]vmstat2 5procs:r:等待运行的进程的个数,和核心数有关b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)memory:swpd: 交换内存的使用总量free:空闲物理内存总量buffer:用于buffer的内存总量cache:用于cache的内存总量swap:si:从磁盘交换进内存的数据速率(kb/s)so:从内存交换至磁盘的数据速率(kb/s)
内存工具io:bi:从块设备读入数据到系统的速率(kb/s)bo: 保存数据至块设备的速率system:in: interrupts, 中断速率,包括时钟cs: context switch, 进程切换速率cpu:us:Timespent running non-kernel codesy: Time spent running kernel codeid: Time spent idle. Linux 2.5.41前,包括IO-wait time.wa: Time spent waiting for IO. 2.5.41前,包括in idle.st: Time stolen from a virtual machine. 2.6.11前, unknown.选项:-s: 显示内存的统计数据
内存工具pmap命令:进程对应的内存映射pmap[options] pid[...]-x: 显示详细格式的信息;#pmap1另外一种实现:# cat /proc/PID/maps
系统监控工具glances命令:EPEL源glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]内建命令:a Sort processes automatically l Show/hide logsc Sort processes by CPU% b Bytes or bits for network I/Om Sort processes by MEM% w Delete warning logsp Sort processes by name x Delete warning and critical logsiSort processes by I/O rate 1 Global CPU or per-CPU statsd Show/hide disk I/O stats h Show/hide this help screenf Show/hide file system stats t View network I/O as combinationn Show/hide network stats u View cumulative network I/Os Show/hide sensors stats q Quit (Esc and Ctrl-C also work)y Show/hide hddtempstats常用选项:-b: 以Byte为单位显示网卡数据速率-d: 关闭磁盘I/O模块-f /path/to/somefile: 设定输入文件位置-o {HTML|CSV}:输出格式-m: 禁用mount模块-n: 禁用网络模块-t #: 延迟时间间隔-1:每个CPU的相关数据单独显示
C/S模式下运行glances命令服务模式:glances -s -B IPADDRIPADDR: 指明监听的本机哪个地址客户端模式:glances -c IPADDRIPADDR:要连入的服务器端地址
系统监控工具dstat命令:系统资源统计dstat[-afv] [options..] [delay [count]]-c: 显示cpu相关信息-C #,#,...,total-d: 显示disk相关信息-D total,sda,sdb,...-g:显示page相关统计数据-m: 显示memory相关统计数据-n: 显示network相关统计数据-p: 显示process相关统计数据-r: 显示io请求相关的统计数据-s: 显示swapped相关的统计数据--tcp--udp--unix--raw--socket--ipc--top-cpu:显示最占用CPU的进程--top-io: 显示最占用io的进程--top-mem: 显示最占用内存的进程--top-latency: 显示延迟最大的进程
进程管理工具kill命令:向进程发送控制信号,以实现对进程管理显示当前系统可用信号:kill -l常用信号:man 7 signal1) SIGHUP: 无须关闭进程而让其重读配置文件2) SIGINT: 中止正在运行的进程;相当于Ctrl+c9) SIGKILL: 杀死正在运行的进程15) SIGTERM:终止正在运行的进程18) SIGCONT:继续运行19) SIGSTOP:后台休眠指定信号的方法:(1) 信号的数字标识;1, 2, 9(2) 信号完整名称;SIGHUP(3) 信号的简写名称;HUP按PID:kill [-SIGNAL] pid…按名称:killall[-SIGNAL] comm…按模式:pkill[options] pattern-SIGNAL-u uid: effective user,生效者-U uid: real user,真正发起运行命令者-t terminal: 与指定终端相关的进程-l: 显示进程名-a: 显示完整格式的进程名-P pid: 显示父进程为此处指定的进程的进程列表
作业管理Linux的作业控制前台作业:通过终端启动,且启动后一直占据终端;后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)如何让作业运行于后台?(1) 运行中的作业:Ctrl+z(2) 尚未启动的作业:# COMMAND &后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端的关系# nohupCOMMAND & #screen;COMMAND查看所有作业:# jobs作业控制:# fg[[%]JOB_NUM]:把指定的后台作业调回前台;# bg[[%]JOB_NUM]:让送往后台的作业在后台继续运行;# kill [%JOB_NUM]:终止指定的作业;
并行运行同时运行多个进程,提高效率vi all.shf1.sh&f2.sh&f3.sh&(f1.sh&);(f2.sh&);(f3.sh&){ f1.sh& f2.sh& f3.sh& }
进程优先级进程优先级调整:静态优先级:100-139进程默认启动时的nice值为0,优先级为120只有根用户才能降低nice值(提高优先性)nice命令:nice [OPTION] [COMMAND [ARG]...]renice命令:renice[-n] priority pid...查看:psaxopid,comm,ni