Linux 第20天自习 进程作业管理

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值可以在父进程向子进程传递.


猜你喜欢

转载自blog.51cto.com/winthcloud/2156775