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

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

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-1 08:51:29 | 显示全部楼层 |阅读模式
Linux进程和作业管理
=================================================================
内核的功能:进程管理(进程调用,保存现场,恢复现场)、文件系统、网络功能、驱动功能、安全功能
process:运行中的程序的一个副本:
        存在生命周期
                linux内核存储进程信息的固定格式:task struct(任务结构)
                多个任务的task struct组件的链表:task list(任务列表)
进程创建:
        init进程是由内核创建,其余的进程都有父进程创建。
        进程优先级:
                0-139:
                        1-99:实时优先级
                        100-139:静态优先级
                         **数字越小,优先级越高**
                        nice值:-20,19
        进程类型:
                守护进程:daemon:在系统引导过程中启动进程,跟终端无关的进程
                交互式进程(前台进程):跟终端有关,通过终端启动的进程
                        **注意:也可以把前台启动的进程送往后台,以守护模式运行
        进程状态:
                运行态:runing
                就绪态:ready
                睡眠态:
                        可中断:interruptable
                        不可中断:uninterruptable
                停止态:暂停于内存中,但不会被调度,除非手动启动之:stopped
                僵死态:zombie
        进程的分类:
                cpu-bound
                IO-bound
                推荐书籍:《Linux内核设计与实现》、《深入理解Linux内核》
        启动进程的方式:
                系统自启动,与终端无关;用户通过终端启动,与终端相关的进程。
=================================================================               
进程管理***
Linux系统上的进程查看及管理工具:pstree、ps、pldof、pgrep、top、htop、glances、pmap、vmstat、dstat、kill、job、bg、jg、nohup、nice、renice、killall...
-----------------------------------------------------------------
pstree命令:
        display a tree of processes
        centos6所有进程的父进程是init。centos7所有进程的父进程是syetemd。
        pstree -p  查看进程树并显示pid
        pstree -u  查看进程树并显示用户
-----------------------------------------------------------------
ps命令:
        report a snapshot of the current processes.当前进程的快照
        ###/proc/:内核中的状态信息:
                内核参数:
                        可设置其值从而调整内核运行特性的参数:/proc/sys/
                        状态变量:其用于输出内核中统计信息或状态信息,仅用于查看###
         ps [options]
                选项三种风格:
                1   UNIX options, which may be grouped and must be
           preceded by a dash.
        2   BSD options, which may be grouped and must not be
           used with a dash.
        3   GNU long options, which are preceded by two dashes.
        选项:
                a:所有与终端相关的进程
                x:所有不与终端相关的进程
                        [kthreadd]==>>[]表示内核进程。pstree是看不到[]
                u:以用户为中心
                                user   进程用户
                                pid    进程的标识号
                                %CPU   cpu使用率
                                %MEM   内存的使用率
                                VSZ    虚拟内存使用量。虚拟内存集
                                RSS    物理内存使用量。常驻内存集
                                TTY    控制台
                                STAT   进程状态:
                                                r 运行,S:可中断睡眠,D:不可中断睡眠,T:停止,z:僵死,+:前台进程,l:多线程,N:低优先级进程,<:高优先进程,s:会话引导
                                START  开启进程的时间
                                TIME   占用cpu的时间
                                COMMAND 终端上进程的名称
                -e:显示所有进程
                -f:
                        常用组合三:-ef组合:        C   cpu占用百分比
                                                STIME   启动时间   
                                                TIME    累积使用时间
                                                CMD      启动此进程的命令
                -F: 显示完整格式的进程信息。
                        PSR        :运行在那颗cpu之上
                -H:以层级结构显示进程信息
               
                常用组合:-eFH,-eo axo **o一定写在后面!
                        o file file...自定义显示的字级列,以逗号分隔
                        常用的file:pid ni pri  pcpu stat comm tty ppid rtprio
                                ni:nice值
                                pri:priority(进程)优先级
                                rtprio:real time priority,实时优先级
-----------------------------------------------------------------                       
pgrep pkill命令
        look  up  or signal processes based on name and other
     attributes=查找或基于名称和其他的信号处理属性       
                -u  uid:
                -U   显示指定用户的进程
                -t   显示指定的终端的进程
                -l   显示进程名
                -a  显示完整格式的进行名
                -P   显示此进程的子进程
-----------------------------------------------------------------
pidof 命令
        根据进程名,取其pid       
        ex:
        # pidof 进程名称
-----------------------------------------------------------------               
top命令
        uptime:显示系统时间,运行时长及平均负载==就是top命令输出的第一行
        平均负载:过去的1分钟,5分钟,15分钟的平均负载
       
        显示的cpu信息解释:
        Cpu(s):  0.3%us,  0.3%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.3%s
        Cpu(s):  cpu占用百分比
        0.3%us,  用户进程所占用cpu的百分比
        0.3%sy,  内核空间的内核所占用cpu百分比
        0.0%ni,  nice调整以后所占用的u百分比
        99.0%id,  空闲百分比
        0.0%wa,  等待io完成所消耗的百分比
        0.0%hi,  处理硬件中断所占据的百分比
        0.3%si, 处理软件件中断所占据的百分比
        0.0%st, 被虚拟化程序所分走的百分比
       
        排序:
        P 以占据cpu的百分比排序
        M  以占据内存百分比排序
        T  累积占用cpu时间排序
        ************
       
top在执行过程中可以使用的按键命令
? 显示可以输入的命令
P   按照cpu使用率排序
M  按照内存使用率排序
N   按照pid来排序
T    按照cpu时间积累排序
k   杀死指定pid对应的进程
r    给予某个pid重新制定一个nice值
r  pid   nice值
q 退出
>  翻页
<  翻页
        ************
       
        首部信息:uptime信息:l命令,tasks命令及cpu信息:t命令,内存信息:m命令
       
    退出命令:q,修改刷新时间:s,终止指定的进程:k
       
        -d #:指定刷新时间间隔,默认是3秒
        -b:以批次方式显示
        -n#:显示多少批次
        top -u root     //指定某人发起的所有进程
        top -p 1       //查看pid为1所对应的进程状态
-----------------------------------------------------------------
htop命令
    此命令要单独安装。  ***扩展:安装软件的中良好途径:epel***
        -d #:指定延迟书剑
        -u  userName :仅显示指定用户的进程
        -s colume:以指定字段进行排序
                子命令:
                l:显示选定
        s:跟踪选定的进程的系统调用
                t:以层级关系显示各进程状态
                a:将选定的进程绑定至某指定的cpu核心
-----------------------------------------------------------------
vmstat命令
        Report virtual memory statistics(报告虚拟内存统计)
        vmstat [options][delay [ count]]
                术语解释:
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 1394972  76056 312680   0   0     3      6   13   11  0  0 100  0  0
                procs:
                        r:等待运行的进程个数;cpu上等待运行的任务的对列长度。
                        b:处于不可中断睡眠态的进程个数;被阻塞任务队列的长度。
                memory:
                        swpd:交换内存使用总量
                        free:空闲的物理内存容量
                        buff:用于buff的内存总量(缓冲)
                        cache:用于cache的内存总量(缓存)
                swap
                        si (swapin) 数据进入swap中的速率(kb/s)
                        so (swapout)数据离开swap的速率(kb/s)
                io
                        bi (blockin) 从块设备读入数据到系统的速率(kb/s)
                        bo (blockout) 保存块设备数据的速率(kb/s)
                system
                         in (interrupts)中断速率
                         cs (context switch)上下文切换的速率
                cpu
                        us user space
                        sy system
                        id idle
                        wa wait
                        st stolen
                选项:-s
-----------------------------------------------------------------
pmap命令
        report memory map of a process(报告内存映射表)
        pmap [ -x | -d ] [ -q ] pids...
                -x:显示详细格式的信息
        另一种查看方式:
                [iyunv@zyl htop-1.0.2]# cat /proc/1/maps
-----------------------------------------------------------------
glances命令
     -An eye on your system
        具体安装过程可见博文glances安装。
        可以监控本机也可以通过客户端服务器模式监控其他机器。
        glances [OPTIONS]
        常用选项:
        -b:以byte为单位显示网上数据速率
        -d:关闭磁盘i/o
    -m:关闭mount模块
        -n:关闭network模块
        -t #:刷新时间间隔
        -l:每个cpu的相关数据单独显示
        -o:{HTML|CSV}:输出格式
        -f:/PATH/TO/SOMEDIR:设定输出文件的位置
       
        c/s模式下运行glances命令:
                服务模式:
                        glances -s -B IPADDR(本机的某地址,用于监听)
                                -s service。-B IP地址
                客户端模式:
                        lances -c  IPADDR
                                -c client
-----------------------------------------------------------------
dstat命令
        versatile tool for generati systeresourcestatistics(用于生成系统资源的多功能工具统计)
        常用参数:
        -c 只显示cpu信息
                -C 1 2 ..
        -d --disk 显示磁盘相关的信息
                -D  sda  sdb ..
        -g         显示page相关的速率信息
        -m  显示内存的信息
        -n  interface相关的信息
        -p         显示process的相关统计数据
        -r 心事io需求的相关统计数据
        -s 显示swapped的相关统计数据
       
        --tcp   --udp  --raw  --socket  --ipc
        --top-cpu显示最占用cpu的进程
        --top-io最占用io的进程
        --top-mem最占用内存的进程
        --top-lantency 延迟最大的进程
-----------------------------------------------------------------       
kill        命令
         terminate a process(终止一个进程):用于向进程发送信号,以实现进程的管理:
         显示系统当前的信号:kill -l   signal
                每种信号的标识方法有三种:
                        1.信号的数字标识
                        2.信号的完整名称
                        3.信号的简写名称
        向进程发送信号:
                kill [-s signal|-p] [--] pid...
                常用的信号:
          1) SIGHUP :无需关闭进程而让其重置配置文件
          2) SIGINT  :终止正在运行的进程,相当于ctrl +c
          9) SIGKILL : 杀死运行中的进程,强制杀死
          15) SIGTER: 终止正在运行的进程,正常杀死
          18) SIGCONT :进程继续
          19) SIGSTOP: 进程停止 相当于ctrl + z,jb
-----------------------------------------------------------------
killall 命令
        kill processes by name
   常用用法:
    killall [-signal ] program(程序)
=================================================================       
作业管理***
job:
                前台作业(foregroup):通过终端启动,且启动后一直占据终端
                后台作业(backgroup):通过终端启动,但启动后即转入后台运行(释放终端)
        如何让作业运行在后台?
                1.运行中的作业
                        ctrl+Z
                        注意:送往后台,作业会转为停止态
               
                2.尚未启动的作业
                  COMMAND &
           注意:此类作业虽然被送往后台,但是其依然与终端有相关,如果终端停止,此类作业也停止。如果希望把送往后台的作业且脱离终端的关系(用下面的命令):
                  nohup COMMAND & :运行于后台且脱离终端模式
-----------------------------------------------------------------
查看所有的作业:
                jobs
                如:
                [iyunv@zyl /]# jobs
[1]+  Stopped                 vim a.txt     [1]:作业号
-----------------------------------------------------------------
可实现作业控制的常用命令:
        fg [%jobnumber]  :指定的作业掉回前台
        bg  [%jobnumber] :让送往后台的作业继续运行
        kill  [%jobnumber]  ==%不能取消。:终止指定的作业
-----------------------------------------------------------------
调整进程的优先级:
        可通过nice值调整的优先级:100~139
                分别对应于:-20,19
        进程启动时,其nice值默认为0,其优先级120
-----------------------------------------------------------------
nice命令
                以指定的nice值并运行命令(开启进程的时候指定的nice值)
                nice [OPTION] [COMMAND [ARG]...]
                        -n nice
                        注意:只有管理员可调低nice值
-----------------------------------------------------------------
renice命令
                修改进程的nice
                renice {-n} nice pid
                ex:
                renice 10 13054  将nice修改为10
                renice -10 16604  将nice修改为-10       
-----------------------------------------------------------------
查看nice值和优先级
   ps   axo pid,ni,common,prioritiy
-----------------------------------------------------------------
为涉及的命令:sar ...
-----------------------------------------------------------------
总结命令:htop dsata top ps
=================================================================
网络客户端工具:
        ping ftp lftp get hping  traceroute lftp
       
ping命令: send ICMP ECHO_REQUEST to network hosts
                icmp:互联网消息控制协议:internet control message protocol
                -c (count)ping包个数
                -w  ping命令的超时时长
                -W 一次ping操作中, 等待对方响应的时长
                -s  指明ping包的大小。默认是64byte
-----------------------------------------------------------------
hping命令    系统默认不安装
        --fast
        --fasts
        --flood
-----------------------------------------------------------------
traceroute命令
     跟踪从当前主机到目标主机之间经过的网关(路由设备)
-----------------------------------------------------------------
ftp命令
                文件传输协议
                基于ftp协议访问ftp服务命令行客户端工具
                如下:
                [iyunv@zyl ~]# ftp ftp@192.168.21.128
-----------------------------------------------------------------
lftp命令
        Sophisticated(精致的) file transfer program
        用来取代ftp命令:
                口令:
                        [iyunv@zyl ~]# lftp -u ftp 192.168.21.128
                        口令:
                                lftp ftp@192.168.21.128:~> help
                不用口令:
                        [iyunv@zyl ~]# lftp -u ftp,ftp 192.168.21.128
                        lftp ftp@192.168.21.128:~>help
               
                ***支持tab自动补全***
-----------------------------------------------------------------
lftpget命令
        get a file with lftp(1)  直接下载
                        -c:继续此前的下载
-----------------------------------------------------------------
wget命令
                下载工具
                wget [option]... [URL]...
                -b 在后台执行下载操作
                -d  静默模式,不显示进度
                -o 下载的文件的保存路径
                --limit-rate=amount 以指定的速率下载
=================================================================








运维网声明 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-251623-1-1.html 上篇帖子: linux下的用户及组的创建 下篇帖子: linux文件系统索引节点浅析 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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