Quantcast
Channel: CodeSection,代码区,Linux操作系统:Ubuntu_Centos_Debian - CodeSec
Viewing all articles
Browse latest Browse all 11063

Linux进程及作业控制

$
0
0
inux进程 进程的概念 当一个系统启动时,刚开机是第一个运行的是内核代码!先把内核放到cpu上运行,等内核控制和掌管了一切,有内核启动进程!然后创建第一个进程 init进程 内核空间 用户空间也都已被创建成功!后期的一切管理工作都由init来负责
init不能代表系统完成一些内核特权的执行!但由他负责向内核提交
他是总的由用户管理的总进程,它会照自己样子创建一个子进程,除了init以外,所有的进程都是由其父进程创建! init是由 上帝(kernel)创造出来的
父进程如何创建子进程,是 fork 自身而来!父进程在创建子进程时是使用同一段内存空间!

内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能

Process: 运行中的程序的一个副本,是被载入内存的一个指令集合

进程ID(Process ID,PID)号码被用来标记各个进程

UID、GID、和SElinux语境决定对文件系统的存取和访问权限,

通常从执行进程的用户来继承

存在生命周期

Linux内核存储进程信息的固定格式:task struct

多个任务的的task struct组件的链表:task list

进程创建: init:第一个进程
父子关系
进程:都由其父进程创建
fork(), clone() 进程优先级: 系统优先级:数字越小,优先级越高
0-139(CentOS4,5)
各有140个运行队列和过期队列
0-98,99(CenOS6)
实时优先级: 99-0:值最大优先级最高
Nice值:-20,19对应系统优先级100-139或99
Nice值:
-20,19 Big O:时间复杂度,用时和规模的关系 O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n) 进程内存:

Page Frame: 页框,用存储页面数据,存储Page 4k

LRU: Least Recently Used 近期最少使用算法,释放内存物理地址空间和线性地址空间

MMU:Memory Management Unit负责转换线性和物理地址

事实上应用程序是不可能访问硬件(包括内存),内核就是为了完成资源分配的,会把内存切割成固定大小的片段分配给各个应用使用大小为 4K!
内核分配多个不连续的内存,并把它们假装成连续的(用一个中间层!使应用假装跑在连续的内存中) IPC: Inter Process Communication 进程之间的通信

同一主机上:

signal 发信号
shm: shared memory 使用共享内存,读其他进程的内存空间
semerphor 发一个短小的信号!

不同主机上:

rpc: remote procecure call 远程过程调用
socket: 基于套接字通信!
首先创建一个 socket 文件 :一端保存着自己的端口,还保存有对方的通信端口 进程关闭了就把这个关闭 Linux内核:抢占式多任务 进程类型:

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

前台进程:跟终端相关,通过终端启动的进程

注意:也可把在前台启动的进程送往后台,以守护模式运行;

进程状态:

运行态:running

就绪态:ready

睡眠态:

可中断:interruptable

不可中断:uninterruptable

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

僵死态:zombie

进程的分类: CPU-Bound:CPU密集型,非交互
IO-Bound:IO密集型,交互 系统进程管理工具

Linux系统状态的查看及管理工具: pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

pstree命令

pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

显示当前所有进程的进程号和进程id

pstree -p

[root@qzx /etc/yum.repos.d ]# pstree -p
systemd(1)─┬─ModemManager(789)─┬─{ModemManager}(807)
│ └─{ModemManager}(818)
├─NetworkManager(44463)─┬─dhclient(47671)
│ ├─dhclient(47742)
│ ├─{NetworkManager}(44464)
│ └─{NetworkManager}(44467)
├─abrt-watch-log(828)

显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。

pstree -a

ps 列举进程

适用ps来查看进程信息

语法 ps [OPTION]… 支持三种选项:

UNIX选项 如-A -e

BSD选项 如a

GUN选项 如―help

默认显示当前终端中的进程

a 选项包括所有终端中的进程

x 选项包括不链接终端的进程

u 选项显示进程所有者的信息

f 选项显示进程的父进程

o 属性… 选项显示定制的信息:

pid、comm、%cpu、%mem、state、tty、euser、ruser

常用组合之一:aux VSZ:虚拟内存集;
RSS:Resident Size,常驻内存集;
STAT:
R:running
S:interruptable sleeping
D:uninterruptable sleeping
T:Stopped
Z:zombie
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader 常用组合之二:-ef

-e:显示所有进程

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

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

C: cpu utilization

PSR:运行于哪颗CPU之上

-H:以层级结构显示进程的相关信息;

常用组合之三:-eFH 常用组合之四:-eo, axo o field1, field2,...:自定义要显示的字段列表,以逗号分隔;
常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
ni:nice值;
priority:priority, 优先级;
rtprio:real time priority,实时优先级; 搜索进程 最灵活:ps 选项 | 其它命令 按预定义的模式:pgrep pgrep [options] pattern

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
按确切的程序名称:/sbin/pidof
$pidof bash uptime [root@LinServ-1 ~]# uptime
15:31:30 up 127 days, 3:00, 1 user, load average: 0.00, 0.00, 0.00
15:31:30 //系统当前时间
up 127 days, 3:00 //主机已运行时间,时间越大,说明你的机器越稳定。
1 user //用户连接数,是总连接数而不是用户数
load average: 0.00, 0.00, 0.00 // 系统平均负载,统计最近1,5,15分钟的系统平均负载 显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1) 系统平均负载:

指在特定时间间隔内运行队列中的平均进程数。

如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。

如果linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

top: 排序:

P:以占据的CPU百分比,%CPU

M:占据内存百分比,%MEM

T:累积占据CPU时长,TIME+

首部信息显示:

uptime信息:l命令

tasks及cpu信息:t命令

cpu分别显示:1 (数字)

memory信息:m命令

选项: -d #:指定刷新时间间隔,默认为3秒;

-b:以批次方式显示;

-n #:显示多少批次;

退出命令:q 修改刷新时间间隔:s 终止指定进程:k 保存文件:W %Cpu(s):对应的那一横栏:
Linux进程及作业控制

us:用户空间

sy:内核空间

ni:调整nice时间

id:空闲

wa:等待IO时间

hi:硬中断

si:软中断(模式切换)

st:虚拟机偷走的时间

黑底的栏位信息简介 PID (Process Id ) : 任务的进程ID
PPID (Parent Process Pid) : 父任务的进程ID
RUSER (Real User Name) : 任务的所有者真实名称
UID (User Id) : 任务所有者ID
USER (User Name) : 任务所有者名称
GROUP (Group Name) : 任务所有者群组名
TTY (Controlling Tty) : 终端
PR (Priority):优先级
%CPU (CPU usage) : CPU使用率
%MEM (Memory usage (RES)) : 内存使用率
S (Process Status) : 进程状态
TIME+ (CPU Time, hundredths) : CPU时间,精确到秒 htop命令:需从Fedora-EPEL源安装

http://172.16.0.1/fedora-epel/7/x86_64

选项:

-d #: 指定延迟时间;

-u UserName: 仅显示指定用户的进程;

-s COLUME: 以指定字段进行排序;

子命令:

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

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


Viewing all articles
Browse latest Browse all 11063

Trending Articles