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:显示详细格式的信息

另一种查看方式:

[root@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

如:

[root@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服务命令行客户端工具

如下:

[root@zyl ~]# ftp ftp@192.168.21.128

-----------------------------------------------------------------

lftp命令

Sophisticated(精致的) file transfer program

用来取代ftp命令:

口令:

[root@zyl ~]# lftp -u ftp 192.168.21.128

口令: 

lftp ftp@192.168.21.128:~> help

不用口令:

[root@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 以指定的速率下载

=================================================================