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