Linux 第20天自习 进程作业管理
时间: 20180807
目录
进程间通信
进程类型
进程状态
进程的管理命令
ps, pgrep, pidof, top, htop, vmstat, glances, dstat, kill, killall
作业管理
bg, fg, jobs, nohup
调整进程优先级
nice, renice
Linux 进程作业管理
进程间通信
IPC (Inter Process Communication)
同一台机器
signal
shm(shared memory)
semerphor 旗语
不同机器
rpc(remote procedure call远程过程调用)
socket(套接子)
进程类型
根据进程与系统终端的关系可分为
守护进程: 在系统引导过程中启动,与终端无关
前台进程: 跟终端相关,通过终端启动的进程
根据进程占用资源的多少可以分为
CPU密集型: 对cpu占用率高的进程
I/O密集型: 等待I/O时间长的进程
进程的状态
running 进程正在运行中
ready 就绪状态
sleeping 睡眠态
interruptible 可中断睡眠
uninterruptible 不可中断睡眠 通常是指被I/O阻塞的进程,等等I/O满足之前
无法继续运行
zombie 僵死态 终止的但还未被父进程回收的进程
stopped 停死态 不可被调度并运行
进程的管理
进程管理工具有 top, pstree, ps, pidof, pgrep, pkill, htop, glances,
pmap, vmstat, dstat, iostat, sar, kill, job, bg, fg等
ps 抓取进程的状态
-A 所有process均显示出来,与-e具有同样的效用
-a 不与terminal有关的所有process
-u 与用户相关的process
x 通常与a这个参数一起使用,可列出较完整的process信息
输出格式规划
l 较长、较详细的将该PID的信息列出
j 工作的格式(jobs format)
-f 做一个更为完整的process输出
常用的组合方式
ps -ef 以完整的信息显示所有进程信息
ps aux
ps axo 后边加自定义显示列表
ps显示的进程状态各字母的含义
R running
S interruptible Sleeping
D uninterrutible sleeping
T stopped by job control signal
t stopped by debugger during the tracing
Z defunct ("zombie") process, terminated but not reaped by its
parent
BSD风格的进程stat之后可能还跟着如下字母
s session leader
l multi-threaded (using CLON_THREAD, like NPTL pthreads do)
+ foreground process group
< high-priority (not nice to other users)
N low-priority (nice to other users)
L pages locked into memory (for real-time and custom IO)
自定义显示ps axo 如只显示pid,command,psr,pri,ni信息
psr 当前进程运行的cpu编号
pri 进程优先级
ni 当前进程的nice值
ps axo pid,command,psr,pri,ni
pgrep 可以显示指定的进程信息
-U UID 只显示指定用户的进程
-G GID 只显示指定用户的进程
-l 显示PID和进程名
-f pattern 以扩展的正则匹配进程名并显示其状态
pidof 显示指定命令所启动的进程
pidof PROGRAM or command
pidof sshd
top 实时显示系统进程状态
几个字段的解释
UPTIME and LOAD Averages
program or window name, depending on display mode
current time and length of time since last boot
total number of users
system load avg over the last 1, 5 and 15 minutes
%Cpu(s)
us, user : time running un-niced user processes
sy, system : time running kernel processes
ni, nice : time running niced user processes
id, idle : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor
RES -- Resident Memory Size (KiB)
The non-swapped physical memory a task is using.
VIRT -- Virtual Memory Size (KiB)
The total amount of virtual memory used by the task.
It includes all code, data and shared libraries plus
pages that have been swapped out and pages that have
been mapped but not used.
SHR -- Shared Memory Size (KiB)
The amount of shared memory available to a task,
not all of which is typically resident. It simply
reflects memory that could be potentially shared with
other processes.
htop 一个top命令的升级版显示的界面为彩色
vmstat 上边的命令都是显示进程的状态,这个命令是用来查看系统资源状态
-s 以行显示memory,cpu,swap状态
-S unit 指定以所给定的单位显示k, K, m, M
-d 输出磁盘信息
glances 系统监控工具,并且支持c/s架构即可以远程查看目标主机性能状态
-s 以服务器端模式运行glances
-b 显示网络速度以byte per second 默认是bps
--password 设定c/s架构访问密码
-t 设定显示刷新时间
-c server_ip:port 连接服务端glances,并查看其状态
需要安装python的pysnmp模块
-B 绑定监听本地哪块网卡的IP地址
-P 设置监听的端口
dstat 监控系统资源状态的命令
结合了vmstat, iostat, ifstat, netstat以及更多的特性
dstat [-afv] [options..] [delay [count]]
常用选项
-c 显示cpu信息
-d 显示disk读取和写入信息
-g 显示内存页的换进换出
-i 查看中断信息
-l 查看负载平均每1,5,15分钟信息
-m 查看内存状态
-n 查看网络状态
-p 查看进程状态
-r 查看IO请求状态
-s 查看swap状态
-y 查看sys中断和上下文切换状态
--top-cpu 显示占用cpu时间最长的进程
--top-bio 显示最消耗block io的进程
--top-io 显示最占用IO的进程
--top-mem 显示占用内存最多的进程
--ipc 查看进程间通信状态
--raw enable raw stats (raw sockets)
--tcp 查看tcp连接状态
--udp 查看udp连接状态
--unix 查看unix连接状态
--socket 查看socket状态
-a = -cdngy 显示其多个资源的状态
kill 向指定进程发送信号指令
kill [-s signal|-p] [-q sigval] [-a] [--] pid...
-l 显示当前系统可用的信息 man 7 signal有详细的信息解释
常用的信号
1 SIGHUP 通知进程重读配置文件以让新的配置生效,无需重新启动进程
2 SIGINT 打断正在运行中的进程,相当于键盘组合键Ctrl+c
9 SIGKILL 强行中止正在运行中的进程
15 SIGTERM 安全中止正在运行中的进程
19 SIGSTOP 暂停进程
18 SIGCONT 继续运行指定进程
killall 是kill的升级版这个支持直接指定进程名称便可结束某个进程
-i 交互式,在结束之前提示一个是否确定执行
-I 进程名称忽略大小写
作业管理job control
后台作业bg background
即在后台运行命令与终端无关
前台作业fg foreground
前台作业通过终端启动,并且在停止之前也会一直占据终端
前台作业转至后台
已经运行中的作业: 使用Ctrl+z
尚未启动的作业: command &即可转至后台
注意: 此种方式相关作业,仍然与终端相关,如果终端终止,会导致此终端相关的
作业被终止
让作业运行与终端无关
nohup COMMAND &
此命令来将对应的作业任务放在后台运行,终端退出不影响作业运行
作业查看
jobs
此命令可以查看有多少作业在后台
作业控制命令 fg, bg, kill
fg [[%]job_num] 把指定的作业调回前台
bg [[%]job_num] 把调往后台的作业启动起来,让其后台默默运行;但此作业
必须支持运行与后台才可以。
kill [[%]job_num] 终止指定的作业
调整进程优先级
调整nice值
nice值是有正负之分,当给定的值为负数时,那么新的进程优先级就越小,进程
就会被优先处理了。nice值可调整范围为-20~19; 普通用户只能调整自己进程的
nice值,且范围为0~19,即普通用户只能减小自己的进程优先级,而不能增大优
先级,主要为了避免用户抢占资源。如果当前普通用户进程的nice值为5,那此用
户所能调整的nice值的范围只能是5~19而不能小于5的值.
调整方式
对于尚未启动的程序
nice -n N COMMAND
N表示nice值, 范围是-20~19
对于已启动的进程
renice -n N PID
注意: 修改进程的nice值,那么他的子进程的nice值也会继承其新的nice值
即nice值可以在父进程向子进程传递.
转载于:https://blog.51cto.com/winthcloud/2156775