linux进程管理

Linux内核:抢占式多任务

进程类型:

1、守护进程:在系统引导过程中启动的进程,与终端无关的进程;

2、前台进程:跟终端相关,通过终端启动的进程,注意:也可把前台启动的进程送往后台,以守护模式运行;

 

进程状态:

运行态:running

就绪态:ready

睡眠态:a、可中断:interruptable;b、不可中断:uninterruptable

停止态:暂停于内存中,但不会被调度,除非手动启动之:stopped

僵死态:zombie

 

进程分类:

1、CPU-Bound:CPU密集型

2、IO-Bound:IO密集型

 

Linux进程查看及管理工具:pstree、ps、pgrep、pidof、top、htop、glance、pmap、vmstat、dstat、kill、pkill、job、bg、fg、nohup;

 

pstree – display a tree of processes;以树状显示进程

 

ps:显示进程状态

ps [options]…

选项:支持两种风格

常用组合:aux

u:以用户为中心组织进程状态信息显示

a:与终端相关的进程

x:与终端无关的进程

# ps uax
USER       PID      %CPU     %MEM     VSZ       RSS     TTY        STAT      START         TIME       COMMAND

VSZ:virtual memory size;虚拟内存集

RSS:resident size;常驻内存集,即不能被交换至交换分区的

STAT:进程状态

R:running

S:interruptable sleeping

D:uninterruptable sleeping

T:stopped

Z:zombie

+:前台进程

l:多线程进程

N:低优先级进程

<:高优先级进程

s:session leader

 

常用组合:-ef

-e:显示所有进程相当于ps ax;

-f:显示完整格式的进程信息;

常用组合:-eFH

-F:显示更完整格式的进程信息;

-H:以进程层级格式显示进程相关信息

常用组合:-eo,axo

-o:以自定义指定字段显示

-eo      pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
axo     stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

ni:nice值;

pri:优先级;

psr:运行于哪颗cpu;

rtprio:实时优先级;

ppid:父进程;

 

pgrep,pkill:

pgrep   [options]   pattern
pkill   [options]   pattern

-U uid:真实用户

-u uid:有效用户

-t terminal:与指定终端相关的进程

-l:显示进程名

-a:显示完整格式的进程名

-P pid:显示其父进程为此处指定进程的进程列表

 

pidof:根据进程名获取其pid

 

top:有许多内置命令:

排序:P:占据CPU时间百分比;

M:占据的内存百分比;

T:累计占据cpu时长;

首部信息显示:

l:uptime信息;

t:任务及cpu信息;

1:cpu分别显示;

m:内存信息;

q:退出命令;

s:修改刷新时间间隔;

k:kill,终止指定进程

其中cpu信息中各子项的意义:

us:用户空间

sy:内核空间

ni:nice值

id:空闲比例

wa:等待io完成

hi:处理硬件中断

si:处理软件中断

st:被虚拟化技术偷走的时间

 

htop命令:

s:跟踪选定进程的系统调用;

l:显示选定进程打开的文件列表;

a:将选定进程绑定至某指定cpu核心;

t:显示进程树;

 

vmstat:报告虚拟内存的使用信息

vmstat [options] [delay [count]]

procs     {r:等待运行的进程的个数;

b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度);}

memory   {swpd:交换内存的使用总量;

free:空闲物理内存总量;

buff:用于buff的内存总量;

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完成所消耗的时间比例

st:被虚拟化技术偷走的时间比例}

 

选项:

-s:显示内存的统计数据

 

pmap – report memory map of a process:显示指定进程ID号的内存映射关系

选项:

-x:显示详细格式的信息;

其真实文件保存在:/proc/PID/maps;

 

glances – A cross-platform curses-based system monitoring tool:跨平台的基于指针的系统监控工具

内建命令:h:获取帮助

C/S模式下运行glances命令:适合于内网监控。

服务端模式:glances -s -B IPADDR

客户端模式:glances -c IPADDR

 

dstat – versatile tool for generating system resource statistics:用于生成系统资源统计信息的万能工具

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

常用选项:

-c:cpu相关信息;

-C #,#,…,total

-d:硬盘相关信息;

-D total,sda,sdb,…

-g:显示page相关统计数据

-m:显示内存相关统计数据

-n:显示network相关统计数据

-p:显示process相关统计数据

-r:显示IO相关统计数据

-s:显示swapped相关统计数据

–tcp:显示tcp协议

–udp:显示udp协议

–raw:显示raw

–socket:显示tcp、udp、socket等等

–ipc:显示进程间通讯

–top-cpu:显示最占用cpu的进程

–top-io:显示最占用io的进程

–top-mem:显示最占用内存的进程

–top-latency:显示延迟最大的进程

 

kill命令:向进程发送控制信号,以实现对进程管理;

显示当前系统可用控制信号:1、kill -l;2、 man 7 signal

常用控制信号:

1) SIGHUP:无需关闭进程而让其重读配置文件;

2) SIGINT:中止正在运行的进程;相当于Ctrl+c;

9) SIGKILL:杀死正在运行的进程;

15) SIGTERM:终止正在运行的进程;

18) SIGCONT:让停止态的进程运行;

19) SIGSTOP:让进程处于停止态;

kill [-s signal|-SIGNAL] pid…

 

终止“名称”之下的所有进程;

killall [-s signal|-SIGNAL] pid…

 

Linux系统作业控制:

job:

前台作业(foregroud):通过终端启动,且启动后会一直占据终端;

后台作业(background):可以通过终端启动,但启动后即转入后台运行(释放终端);

如何让作业运行于后台?

(1)运行中的作业

Ctrl+Z   注意:送往后台后,作业会转为停止态;

(2)尚未启动的作业

# COMMAND &     注意:此类作业虽然被送往后台,但其依然跟终端相关;如何希望送往后台的作业剥离与终端的关系: # nohup COMMAND &

查看所有的作业列表:jobs

可实现作业控制的常用命令:

# fg [%] 作业号:把指定的作业调回前台;

# bg [%] 作业号:让送往后台的作业在后台继续运行;

# kill % 作业号:终止对应的作业;

 

调整进程优先级:

可通过nice值调整的优先级范围:100-139;分别对应于:-20,19

进程启动时,其nice值默认为0,其优先级为120;

nice命令:以指定的nice值启动并运行命令;

nice [OPTION] [COMMAND [ARG]…]

选项:-n NICE

注意:仅管理员可调低nice值;

 

renice [-n] NICE pid…:调整正在运行进程的nice值

查看NICE值和优先级:

# ps axo pid,ni,priority,comm

未涉及的命令:sar,tsar,

 

网络客户端工具:

ping、lftp、ftp、lftpget、wget等

ping [option] destination

-c #:发送的ping包个数;

-w #:ping命令超时时长

-W #:一次ping操作中,等待对方响应的超时时长;

-s #:指名ping包报文大小;

 

hping命令:

–fast

–faster

–flood

-i ux

 

traceroute命令:跟踪从源主机到目标主机之间经过的网关;

 

ftp命令:ftp服务命令行客户端工具;

 

lftp [-p port] [-u user[,pass]] [site]

get,mget

put,mput

rm,mrm

 

wget [option]… [URL]…

-b:在后台执行下载操作;

-q:静默模式,不显示下载进度;

-O file:下载文件的保存位置;

-c:续传;

–limit-rate=amount:以指定的速率传输文件;

 

bash编程:

顺序执行:

选择执行:if,case

循环执行:for,while,until

 

for循环格式:

for VARAIBLE in LIST;do

循环体

done

 

while循环格式:

进入循环条件:CONDITION测试为“真”;

退出循环条件:CONDITION测试为“假”;

while CONITION;do

循环体

循环控制变量修正表达式

done

 

until循环格式:

进入循环条件:CONDITION测试为“假”;

退出循环条件:CONDITION测试为“真”;

until CONITION;do

循环体

循环控制变量修正表达式

done

例子:打印九九乘法表

#!/bin/bash
#
for j in {1..9};do
for i in $(seq 1 $j);do
echo -n -e “${i}x${j}=$[${i}*${j}]\t”
done
echo
done

 

 

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91504

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code