Linux基础
提示:个人学习总结,仅供参考。
一、Linux系统部署
二、服务器初始化
三、文件和用户管理
四、用户的权限
五、进程及进程管理
提示:文档陆续更新整理
进程及进程管理
- Linux基础
- 一、进程简介
- (一)进程三问
- 1. 什么是进程?(了解)
- 2. 进程的生命周期(了解)
- 3.进程状态(了解)
- 二、进程管理process
- (一)目标
- (二)静态查看进程ps
- 1. 静态查看进程ps
- 2. 进程排序
- 3. 进程的父子关系
- 4. 自定义显示字段(了解)
- (三)动态查看进程top
- 1. 上半部分
- 2. 下半部分
- 3. top技巧
- (四)使用信号控制进程
- 1. 信号种类
- 2. 信号9,15
- (五)进程优先级nice
- 1. 简介
- 2. 优先级范围和特性
- 3. 查看进程的nice级别
- 4. 启动具有不通nice级别的进程
- 5. 更改现有进程的nice级别
- 三、作业控制jobs(了解)
- (一)简介
- (二)后台程序控制示例
- 四、虚拟文件系统proc(了解)
- (一)简介
- (二)CPU
- (三)内存
- (四)内核
提示:以下是本篇文章正文内容
一、进程简介
(一)进程三问
1. 什么是进程?(了解)
进程是已启动的可执行程序的运行示例,进程有以下组成部分:
· 已分配内存的地址空间;
· 安全属性,包括所有权凭据和特权;
· 程序代码的一个或多个副本(也叫执行线程);
· 进程状态;
程序:二进制文件,静态 /usr/
进程:是程序运行的过程,动态,有生命周期及运行状态。
2. 进程的生命周期(了解)
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
每个新进程分配一个饿,唯一的进程ID(PID),满足跟踪安全性之需。
任何进程都可以创建子进程。
所有进程都是第一个系统进程的后代:
centos5/6系统进程:init
centos7系统进程:systemd
3.进程状态(了解)
R:running运行
T:stopped暂停、停止
S:sleeping休眠
Z:zombie僵死
二、进程管理process
(一)目标
了解进程的相关信息:
- PID,PPID(重点)
- 当前的进程状态(重点)
- 内存的分配情况
- CPU和已花费的实际时间
- 用户UID,他决定进程的特权
- 进程名称(重点)
(二)静态查看进程ps
1. 静态查看进程ps
//静态查看进程ps
[root@localhost ~]#ps aux | head - 2
//显示前一行进程
一个进程为例
root@qianfeng ~]# ps aux l head -2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 128096 6708 ? Ss 16:20 0.01 /usr/lib/systemd/systemd
命令参数说明
ps a 显示现行终端机下的所有程序
ps u 以用户为主的格式来显示程序状况
ps x 不以终端机来区分
ps aux 输出的字段含义
USER:运行进程的用户
PID:进程ID
%CPU:CPU占用率
%MEM:内存占用率
VSZ:占用虚拟内存
RSS:占用实际内存
TTY:进程运行状态
STAT:进程状态
man ps(STATE)
START:进程的启动时间
TIME:进程占用CPU的总时间
COMMAND:进程文件,进程名
2. 进程排序
语法:ps aux --sort %cpu
示例
以CPU占用率降序排列(减号是降序)
3. 进程的父子关系
语法:ps -ef
示例
查看进程的父子关系。请观看PID和PPID
4. 自定义显示字段(了解)
语法:ps axo
示例
[root@localhost ~]#ps axo user,pid,ppid,%cpu,%mem,command | head -3
(三)动态查看进程top
1. 上半部分
top - 11:45:08 up 18:54, 4 users, load average: 0.05,0.05, 0.05 Tasks:
176 total,1 running, 175 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0
us, 0.3 sy, 0.0 ni, 99.7 id. 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem :
3865520 total, 1100000 free 580268 used, 2185252 buff/cache KiB Swap:
4063228 total4063228 free,0 used.2917828 avail Mem
说明:
第一行
top - 11:45:08 up 18:54, 4 users, load average: 0.05,0.05, 0.05 程序名-系统时间 运行时间 登录用户数 CPU负载 5分钟10分钟15分钟
第二行
Tasks: 176 total, 1 running, 175 sleeping, 0 stopped, 0 zombie 总进程数 运行数1 睡眠数175 停止数0 僵死数0
第三行
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id. 0.0 wa, 0.0 hi, 0.0 si, 0.0 st CPU占用率 us用户 sy系统 ni优先级 id空闲 wa等待 hi硬件 si软件
st虚拟机
第四行
KiB Mem : 3865520 total, 1100000 free,580268 used, 2185252 buff/cache 物理内存K total(总共4G)free空闲1G used使用500M cache缓存硬盘内容2G
第五行
KiB Swap: 4063228 total,4063228 free,0 used.2917828 avail Mem 交换内存 total总共4G free空闲4G used使用0
2. 下半部分
字段介绍(了解)
PID,USER,%CPU,%MEM略
VIRT:vitual memory usage 虚拟内存
需要这些内存,但没有占满。
RES:resident memory usage 常驻内存
用了多少内存
SHR:shared memory 共享内存
1. 除了自身进程的共享内存,也包括其他进程的共享内存
2. 共享内存大小公式:RES-SHR top常用内部指令
h|? 帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
< 向前翻页
> 向后翻页
z 彩色,Z设置彩色,使用数字调制
3. top技巧
动态查看进程 top,像windows任务管理器 top //回车,立即刷新,按z彩色显示,按F,通过光标设置 top -d 1
//每1秒刷新 top -d 1 -p 10126 //查看指定进程的动态信息 top -d 1 -p 10126,1
//查看10126和1号进程 q //退出查看
(四)使用信号控制进程
1. 信号种类
给信号发送信号
kill -l //列出所有支持的信号编号,信号名
1)SIGHUP 重新加载配置
2)SIGINT 键盘中断Ctrl+C
3)SIGQUIT 键盘退出Ctrl+\,类似SIGINT
9)SIGKILL 强制终止,无条件
15)SIGTERM 终止(正常结束),缺省信号
18)SIGCONT 继续
19)SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
2. 信号9,15
1. 创建2个文件,查看终端号。
[root@localhost ~]#touch test1 test2
[root@localhost ~]#tty
/dev/pts/0
2. 通过一个终端,打开一个vim
[root@localhost ~]#vim test1
3. 通过另外一个终端,打开一个vim
[root@localhost ~]#vim tes2
4. 通过另外一个终端,查看两个进程
[root@localhost ~]#ps aux | grep vim
root 9305 0.0 0.2 11104 2888 pts/1 S+ 23:02 0:00 vim test1
root 9372 0.1 0.2 11068 2948 ts/2 S+ 23:02 0:00 vim test2
5. 发送信号15 和信号9,观察两个终端状态
[root@localhost ~]#kill -9 9305
[root@localhost ~]#kill -15 9372
观察两个终端,一个正常终止,一个非法杀死。
---------------------------------------------------------------------
6. 重复1-3步,使用killall ,杀死所有vim进程
[root@localhost ~]#killall vim //给所有vim进程发送信号
[root@localhost ~]#killall httpd
尽量不要使用kill -9
(五)进程优先级nice
1. 简介
内核使用[0~139]这140个数来表示140种优先级。
内核使用一个简单些的数值范围,从0到139(包含),用来表示内部优先级。同样是值越低,优先级越高。从0到99的范围专供实时进程使用。 nice值[20, +19]映射到范围100到139。
实时进程的优先级总是比普通进程更高。
2. 优先级范围和特性
优先级图示
系统中的两种优先级 在top中显示的优先级又两个,PR值和nice值 NI:实际nice值
PR(+20):将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39优先级特性 nice值越大:表示优先级越低,例如+19 nice值越小:表示优先级越高,例如-20
3. 查看进程的nice级别
[root@localhost ~]#ps axo pid,command,nice --sort=-nice | head 5
4. 启动具有不通nice级别的进程
//示例
//默认情况
//启动线程时,通常会继承父进程的nice级,默认为0
//手动启动不同nice
[root@localhost ~]# nice -n -5 sleep 6000 &
[1] 2220
[root@localhost ~]# nice -n -10 sleep 7000 &
[2] 2229
[root @localhost ~]# ps axo command,pid,nice I grep sleep
sleep 6000 2220 -5
sleep 7000 2229 -10
grep --color=auto sleep 2233 0
5. 更改现有进程的nice级别
//示例
//使用shell更改nice级别
1. 创建一个睡眠示例程序
[root@localhost ~]# sleep 7000 &
[2]2669
2. 修改它的nice值
[root@localhost ~]# renice -20 2699
2699(进程ID)旧优先级为0,新优先级为-20,观察修改后的nice值
三、作业控制jobs(了解)
(一)简介
作业控制是一个命令功能,也叫后台运行
关键词介绍
foreground fg:前台进程:是在终端中运行的命令,占领终端
background bg:后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
(二)后台程序控制示例
1. 观察占领前台的现象
[root@localhost ~]# sleep 2500
运行一个程序,当前终端无法输入。观察占领前台的现象。大部分命令行输入无效
Ctrl+C 终止进程
2. 运行后台程序
[root@localhost ~]# sleep 3500 &
3. ps查询所有程序
[root@localhost ~]# ps aux | grep sleep
root 4320 0.0 0.0 107956 616 pts/0 S 10:20 0:00 sleep 3500
4. jobs查看后台进程
[root@localhost ~]# jobs
[1]- Running sleep 3500 &
5. 调动后台程序至前台
[root@localhost ~]# fg 1 //将作业1调回前台
Ctrl+Z //键盘暂停状态,停止状态
6. 消灭后台进程
[root@localhost ~]# kill %1
注意,“kill 1” 和 “kill %1” 不通
前者终止PID为1的进程
后者杀死作业序列号为1的后台程序
总结
& 后台运行程序
jobs 查询后台运行的程序
kill %1 停止后台进程
四、虚拟文件系统proc(了解)
(一)简介
虚拟文件系统:采集服务器自身内核、进程运行的状态信息
(二)CPU
/proc/cpuinfo
[root@localhost ~]#cat /proc/cpuinfo
(三)内存
/proc/meminfo
[root@localhost ~]#cat /proc/meminfo
[root@localhost ~]#less /proc/meminfo
(四)内核
/proc/cmdline
[root@localhost ~]#cat /proc/cmdline