初识linux的进程管理与作业控制(第十二天)

     进程:linux中,运行每一个二制进程序或触发每一个事件,系统都会将它定义为一个进程,并给一个进程号,称为PID。同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。

          如,执行base后,系统就会给base一个PID号,下面的15106就是base的进程号。

blob.png

进程创建 

内核创建第一个进程init,其他所有的进程都是由init(systemd)创建,是init(systemd)的子进程,init(systemd)的进程号是1
init (centos7的是systemd)
父子关系
  进程:都是父进程创建,所有的进程都init或systemd的子、孙、孙孙进程
  父进程使用的空间,子进程也使用父进程的空间。一旦子进程需要修改进程的数据时,系统会复制一份父进程的空间,给预子进程专门使用

blob.pngblob.png

    进程优先级:

优先级范围0-139
   0-99:实时优先级,数字越大,优先级越高
   100-139:静态优先级,数字越小,优先级越高。
   调整优先级的Nice值:
     -20到19,其中-20对应100,19对应139,以此类推
    备注:root用户的nice值范围是-20至19,普通使用的1-19,且普通用户只能把nice的值调大,不能调小。如原来nice值是5,那么普通用户调整的nice只能大于5

进程的状态

进程状态:
  运行状态:running
  就绪状态:ready
  睡眠状态:
    可中断:interruptable
    不可中断:uniterruptable
  停止状态:sotp  暂停于内存中,但不会被调试,除非手动启动之

  查看系统进程树命令 pstree

常用选项有:
-p 同时显示每个进程的PID号

blob.png


静态进程查看器命令 PS

    PS命令是在执行的那一瞬时,对系统上所有的进程进行一个快照,并显示出来的。

ps [option..]
常用option有:
 -l 显示较详细的PID信息
 u:以用户为中心组织进程状态信息显示
 a:以终端相关的进程
 x:与终端无关的进程
 -f 显示完整的信息
 -e 相当于 ax
常用的组合有:aux(没有-) -ef

      ps -l 说明

blob.png

划画的选项说明:
F 代表进程的权限标志:F的值常见有4与1,4代表的权限是root,1代表此子进程仅可以复制(fork)而无法实际执行(exec)
S 代表运行状态:S 表示处于睡眠但可唤醒、R 表示处于运行状态、D表示处于睡眠但不可唤醒、T表示停止状态、Z是僵死状态
PID 是进程的PID号
PPID 是进程的父进程PID号。在执行ps -l后,我又执行了bash命令,可通过PPID的值,确定此bash的父进程号是3367
C 表示CPU的使用率,以百分比显示
PR是priority,表示优先级
NI是nice的缩写,表示nice值
ADDR 是指此进程在内存中的哪个部分,一般显示"-"
SZ 表示此进程使用的内存
WCHAN 表示进程是否正在运行,可结合S位置的状态查看 
TTY 是终端位置
TIME 使用的CPU时间
CMD 全称是commadn,表示由此进程是由哪个命令执行的

        查看系统上所有的进程  px aux

blob.png

aux运行结果说明:USER  进程的属主
PID 进程的ID号
%CPU 占据CPU的时间集百分比
%MEM 占据内存的时间集百分比
VSZ Virtual memory SiZe,虚拟内存集
RSS RSS: ReSident Size, 常驻内存集,不能被交换到交换分区的数据
TTY 哪个终端启动的信息,问号?表示与终端无关
STAT 进程的状态信息
    R:running
    S:interruptable sleeping 可中断的睡眠状态
    D:uniterruptable sleeping 不可中断的睡眠状态
    T:stop 停止状态
    Z:zombie假死状态
    +:前台进程 
    l:多线程进程
    <:高优先级进程 
    N:低优先级进程
    s:session leader 一个进程启动时,有时会同时引导其他多个进程启动,如果此进程被停止,那其他进程也将被停止
START:启动的时间
TIME:运行的累计时时间
COMMAND :由哪个命令启动的

 基于命令名称或进程PID显示相关属性命令 pgrep 

pgrep 常用选项有:
-o:仅显示找到的最小(起始)进程号 
-n:仅显示找到的最大(结束)进程号 
-l:显示进程名称
-P:指定父进程号 
-g:指定进程组
-t:指定开启进程的终端 
-u:指定进程的有效用户ID

blob.png

动态查看进程情况top命令

常用选项:
-d 设定刷新的时间,默认是5s。top -d 1即每1秒刷新一次
-b 以批次的方式执行top 
-n 与-b结合使用,意思是需要执行多少批次的top 
-p 查看指定PID的信息  
内置功能键:
p:以占据CPU的百分比 
M:占据内存的百分比 
T:累积占据CPU时长 
? 显示在top可以输入的命令 
N 以PID值排列 
K 给指定的PID发送一个signal信号 
r 调整指定的PID的nice值  
q 离开  
1 数字1,显示多个CPU的情况

    top运行说明  

blob.png

PID 是进程ID
USER 是属主
PR 是优先级
NI 是Nice值
VIRT 虚拟内存值
RES 常信内存值
SHR 共享内存大小值
S 进程运行的当前状态
%CPU 占据CPU百分比
%MEM 占据内存百分比
TIME+ 累计运行时长
COMMAND 启动进程命令

   修改指定进程的优先级

blob.png

blob.png

blob.png

修改完成,并发sshd PID15102的优先级从20调整成了25,而nice值为5

      终止进程

按k键,可指进程根据发送的信号执行相应的动作。
可发送的信号:
[root@mfc ~]# kill -l
 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1
11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM
16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP
21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ
26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR
31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3
38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8
43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+13
48) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-12
53) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7
58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2
63) SIGRTMAX-164) SIGRTMAX
 
常用信号说明,
1)SIGHUP  通知进程在不关闭进程的情况下重读配置文件 
2)SIGINT 中止正在运行的进程,相当于ctrl+c
9)SIGKILL 强制关闭进程 
15)SIGTERM 正常终止正在运行的进程。
18)SIGCONT:让处于停止状态的进程启动
19)SIGSTOP:让进程转入到停止状态

blob.png

blob.png

blob.png

    运行top后,屏幕显示有限,无法查看全部的进程信息,可以通过输出重定向,把top进行的批次信息保存到指定文件中,如果有需要,可以指定某个时间段运行,以保存指定时间的系统运行情况

blob.png

    

    动态查看进程变化命令top的变种命令 htop

    功能比top强大,可以直接通过鼠标操作,显示画面详细而易懂。

blob.png

blob.png

虚拟内存查看命令 vmstat    

    vmstat [options] [delay [count]]

blob.png

说明:
procs:
    r:等待运行的进程个数。如果是单个CPU,有超过3个等运行的进程数,则表示CPU性能不足。
    b:处于不可中断睡眠状态的进程个数(被阻塞的队列个数)
memory:
    swdp:虚拟内存的使用总量
    free:物理内存的空闲总量
    buffer:用于buffer的内存总量
    cache:用于cache的内存问题
swap:
    si:数据进入swap中的数据速率(kb/s)
    so:数据离开swap的数据速率(kb/s)
io:
    bi:从块设备读入数据到系统的速率(kb/s)
    bo:保存数据到块设备的速率(kb/s)
system:
    in:中断速率
    cs:进程切换速率
cpu:
    us 使用的比率
    sy 内核使用比率
id 空闲比率
wa 等待IO完成所需要的时间比率,wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)
st 被虚拟化技术使用的比率

        显示汇总信息vmstat -s

blob.png

    dstat  可以实时的监控cpu、磁盘、网络、IO、内存等使用情况,且彩色、默认每1秒刷新一次的动态显示

    dstat [-afv] [options..] [delay [count]]

    dstat 默认使用选项-cdngy

常用选项
-c 显示cpu的内核、用户、空闲、写入等待、硬中断、软中断等信息,默认自带此项
-C #,#....total 显示单个或汇总
-d 显示磁盘的读写速率
-D #,#....total 显示单个或汇总
-g 显示page(内存页面)换进换出的统计信息
-m 显示memory相关统计数据
-n 显示网络相关统计数据
-p 显示进程相关统计数据 
-r 显示I/O读写请求相关的统计数据 
-t 显示系统时间
-y 显示系统信息
-f 显示文件系统的打开文件的相关信息
--ipc 显示进程间通信的相关统计信息
--top-cpu 显示最耗CPU资源的进程信息
--top-io 显示最点用IO性能的进程信息
--top-mem 显示最耗内存的进程信息
--top-latency 显示延迟最大的进程信息
--tcp 显示TCP信息
--udp 显示UDP信息
--socket 用来显示tcp udp端口状态
--raw 显示
--unix 
说明:
cpu:hiq、siq分别为硬中断和软中断次数。 
system:int、csw分别为系统的中断次数(interrupt)和上下文切换(context switch)。

blob.png

glances命令   可以监视 CPU,平均负载,内存,网络流量,磁盘 I/O,其他处理器 和 文件系统 空间的利用情况。

glances  [-bdehmnrsvyz1]  [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--pass‐word] [-t refresh] [-f file] [-o output]
glances内置命令如下:
  a  Sort processes automatically     l  Show/hide logs
  c  Sort processes by CPU%           b  Bytes or bits for network I/O
  m  Sort processes by MEM%           w  Delete warning logs
  p  Sort processes by name           x  Delete warning and critical logs
  i  Sort processes by I/O rate       1  Global CPU or per-CPU stats
  d  Show/hide disk I/O stats         h  Show/hide this help screen
  f  Show/hide file system stats      t  View network I/O as combination
  n  Show/hide network stats          u  View cumulative network I/O
  s  Show/hide sensors stats          z  Show/hide processes list
  y  Show/hide hddtemp stats          q  Quit (Esc and Ctrl-C also work)
常用选项:
-b:以byte为单位显示网卡数据速率 
-d:关闭磁盘IO模块
-f /filne_name/file_name设定输入文件位置及格式
-o {HTML|CSV} 输出格式
-m 禁用mount模块
-n 禁用网络模块
-t # :延迟时间时隔
-1:每个CPU的相关数据信息单独显示
     
C/S模式下运行的glances命令
    服务模式:
        glances -s -B ip_address #指定网卡的IP地址
    客户端模式:
        glances -c server_ipaddress #连接服务器的IP地址,链接成功后可查看服务器的glances的信息

blob.png

        开启服务器模式

blob.png


 kill命令用来删除执行中的程序或工作。

    kill可将指定的信息送至程序。默认发送的信号是SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信号尝试强制删除程序。

选项如下:
-a:当处理当前进程时,不限制命令名和进程号的对应关系; 
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称; 
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号; 
-s <信息名称或编号>:指定要送出的信息; -u:指定用户

blob.png

作业管理jobs命令    

作业分类:
    前台作业:在终端中显示、让用户操作的作业称为前台作业
    后台作业:可以自动运行、无法通过ctrl+c 取消的作业,可以通过fg命令调用。
        后台作业有三种状态:运行状态(running)和 停止状态(stop)、完成状态(done)。后台作业处于运行状态的进程,必须不是交互的。

          把命令从前台转到后台 ,在执行命令的后面加“&”

blob.png

        交互式转到后台ctrl+z

blob.png

blob.png

        调用fg、终止作业kill、

blob.png

通过kill,终于处于后台的作业 kill -s -s 9 %作业号 (作业号前加%,否则会误以为对进程PID发送信息)

blob.png

通过bg命令,把处于 stop状态的作业,转换为running(运行)状态。

blob.png

原创文章,作者:Net20-deamon,如若转载,请注明出处:http://www.178linux.com/17292

(0)
Net20-deamonNet20-deamon
上一篇 2016-06-01
下一篇 2016-06-01

相关推荐

  • rpm软件包管理

    软件包管理 软件运行环境 API   应用程序开发接口 ABI   二进制接口 Rpm包命名方式 Name-version-release-arch-rpm 例如 zziplib-devel-0.13.162-5.el7.i686.rpm zziplib :主包名 dewel:次包名 0.13.162: 主版…

    Linux干货 2016-08-24
  • 细说CP使用

    cp详细用法和常用选项

    Linux干货 2017-11-26
  • 简单shell脚本习题

    习题 作业 简单shell脚本习题 习题1 答案 习题2 答案 习题3 答案 习题4 答案 习题5 答案 习题6 答案 习题1 编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存大小,硬盘大小。 答案 #!/bin/bash IPADDR=$(…

    Linux干货 2017-04-10
  • 用户权限过滤练习(w4)

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 [root@keyou ~]# cp -r /etc/skel/ /home/tuser1 | chmod -R g-rwx,o-rw…

    系统运维 2016-11-20
  • 抓包获取QQ好友IP地址

    作者:网海过客 原文连接:https://www.chinasa.net/archives/326.html 原理:通过抓包软件,抓取QQ进程,向QQ好向发送UDP数据包,获取QQ好友IP地址 抓包软件:科来网络分析系统 步骤: 1、打开抓包软件,选择网卡,本地进程分析。 2、向QQ好友发起语音通话 3、在抓包软件里,找到QQ进程,数据包,过滤UDP协议,在…

    Linux干货 2017-06-30
  • shell脚本编程基础之二(if、case、for、while、until、continue、break语句使用)

    在shell脚本编程中,我们可以根据命令的状态结果,判断要不要执行下一步,但是有时候要判断的问题不止一个,甚至对问题本身都要做判断;同时问题的结果有时也不止一个,这时要借助简单的逻辑与和逻辑或,就显得很无力;要完成复杂的任务,需要借助一定的流程控制:顺序执行、选择执行、循环执行、同时在脚本执行过程中,有用户交互输入的需; if语句 case语句 for语句 …

    Linux干货 2016-08-21

评论列表(1条)

  • stanley
    stanley 2016-06-01 15:34

    已置顶,欢迎加入免检家庭