Linux进程及管理(1)
内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能
Process: 运行中的程序的一个副本;
存在生命周期Linux内核存储进程信息的固定格式:task struct
多个任务的的task struct组件的链表:task list
进程创建:
init
父子关系
进程:都由其父进程创建
fork(), clone()
进程优先级:
0-139:
1-99:实时优先级;
100-139:静态优先级;
数字越小,优先级越高;
Nice值:
-20,19
Big O
O(1), O(logn), O(n), O(n^2), O(2^n)
进程内存:
Page Frame: 页框,用存储页面数据
存储Page
MMU:Memory Management Unit
IPC: Inter Process Communication
同一主机上:
signal
shm: shared memory
semerphor
不同主机上:
rpc: remote procecure call
socket:
Linux内核:抢占式多任务
进程类型:
守护进程: 在系统引导过程中启动的进程,跟终端无关的进程;
前台进程:跟终端相关,通过终端启动的进程
注意:也可把在前台启动的进程送往后台,以守护模式运行;
进程状态:
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped
僵死态:zombie
进程的分类:
CPU-Bound
IO-Bound
Linux进程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
pstree命令:
pstree – display a tree of processes
例一:查看文件pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。
[root@localhost~`]# pstree
ps: process state
ps – report a snapshot of the current processes
Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中;
ps [OPTION]…
选项:支持两种风格
常用组合:aux
u: 以用户为中心组织进程状态信息显示
a: 与终端相关的进程;
x: 与终端无关的进程;
~]# ps aux
例一:显示所有进程
[root@localhost ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.7 128356 7064 ? Ss 02:42 0:09 /usr/lib/systemd/systemd --swit root 2 0.0 0.0 0 0 ? S 02:42 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 02:42 0:00 [ksoftirqd/0] root 7 0.0 0.0 0 0 ? S 02:42 0:00 [migration/0]
USER 进程属组 PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER 进程属组
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: 显示所有进程
-f: 显示完整格式程序信息
例一:显示所有进程进信息
[root@localhost ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 02:42 ? 00:00:09 /usr/lib/systemd/systemd --switched-root --syst root 2 0 0 02:42 ? 00:00:00 [kthreadd] root 3 2 0 02:42 ? 00:00:00 [ksoftirqd/0]
常用组合:-eFH
-F: 显示完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
例一:显示所有信息以层级格式显示
[root@localhost ~]# ps -eFH |head UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 2 0 0 0 0 0 02:42 ? 00:00:00 [kthreadd] root 3 2 0 0 0 0 02:42 ? 00:00:00 [ksoftirqd/0] root 7 2 0 0 0 0 02:42 ? 00:00:00 [migration/
常用组合:-eo, axo
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
o:指明要显示的字段
ni: nice值
pri: priority,优先级
psr: processor, CPU
rtprio: 实时优先级
例一:指明要显示的字段信息
[root@localhost ~]# ps -axo pid,psr,stat,comm | head PID PSR STAT COMMAND 1 0 Ss systemd 2 0 S kthreadd 3 0 S ksoftirqd/0 7 0 S migration/0 8 0 S rcu_bh 9 0 R rcu_sched 10 0 S watchdog/0 12 0 S< khelper 13 0 S kdevtmpfs
pgrep, pkill:过滤信息
pgrep [options] pattern
pkill [options] pattern
-u uid: effective user
-U uid: real user
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示其父进程为此处指定的进程的进程列表
例一:显示root进程号信息
[root@localhost ~]# pgrep -u root -l 1 systemd 2 kthreadd 3 ksoftirqd/0 7 migration/0 8 rcu_bh 9 rcu_sched
pidof:
根据进程名获取其PID;
例一:根据进程名获取PID
[root@localhost ~]# pidof sshd 9168 1560
top:top命令可以实时动态地查看系统的整体运行情况
有许多内置命令:
排序:
P:以占据的CPU百分比;
M:占据内存百分比;
T:累积占据CPU时长;
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
例一:修改刷新时间5秒
Change delay from 5.0 to
选项:
-d #: 指定刷新时间间隔,默认为3秒;
-b: 以批次方式;
-n #: 显示多少批次;
htop命令:交互式进程查看器,查看关键性能数据
例一:查看系统进程信息
[root@localhost ~]# htop
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程;
-s COLOMN: 以指定字段进行排序;
命令:
s: 跟踪选定进程的系统调用;
l: 显示选定进程打开的文件列表;
a:将选定的进程绑定至某指定CPU核心;
t: 显示进程树
注意:Fedora-EPEL源
进程查看工具:pstree, ps, pgrep, pidof, top, htop
原创文章,作者:kang,如若转载,请注明出处:http://www.178linux.com/77034