进程是已启动的可执行程序的运行实例,进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
程序: 二进制文件,静态 /usr/bin/passwd ,/usr/sbin/useradd
进程: 是程序运行的过程, 动态,有生命周期及运行状态。
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
每个新进程分配一个,唯一的进程 ID (PID),满足跟踪安全性之需。
任何进程都可以创建子进程。
所有进程都是第一个系统进程的后代:
Centos5/6系统进程: init
Centos7系统进程: systemd
进程状态产生的原因
在多任务处理操作系统中,每个CPU(或核心)
在一个时间点上只能处理一个进程。
在进程运行时,它对CPU 时间和资源分配的要求会不断变化,
从而为进程分配一个状态,它随着环境要求而改变。
• PID,PPID
• 当前的进程状态
• 内存的分配情况
• CPU和已花费的实际时间
• 用户UID,它决定进程的特权
• 进程名称
一个进程为例
[root@localhost ~]# ps axu |head -2 //查看进程前两行
命令参数说明
ps a 显示现行终端机下的所有程序
ps u 以用户为主的格式来显示程序状况。
ps x 不以终端机来区分。
ps aux 输出的字段含义
•USER: 运行进程的用户
•PID: 进程ID
•%CPU: CPU占用率
•%MEM: 内存占用率
•VSZ: 占用虚拟内存
•RSS: 占用实际内存
•TTY: 进程运行的终端
•STAT: 进程状态
常见的状态:R 运行 S 睡眠 Sleep T 停止的进程 Z 僵尸进程 X 死掉的进程
•START: 进程的启动时间
•TIME: 进程占用CPU的总时间
•COMMAND: 进程文件,进程名
进程排序
以CPU占比降序排列(减号是降序)
[root@localhost ~]# ps axu --sort -%cpu
[root@localhost ~]# ps axu --sort %cpu
进程的父子关系
查看进程的父子关系。 请观察PID和PPID
语法: ps -ef
[root@localhost ~]# ps -ef
自定义显示字段进程
语法: ps axo
[root@localhost ~]# ps axo user,pid,ppid,%mem,command |head -10
语法:top
ctrl+c退出
上半部分:
第一行
第二行
第三行
第四行
第五行
下半部分:
PID,USER,%CPU,%MEM略
VIRT:virtual memory usage 虚拟内存 //需要这些内存,但并没有占满。
RES:resident memory usage 常驻内存 //用了多少内存
SHR:shared memory 共享内
//1、除了自身进程的共享内存,也包括其他进程的共享内存
2、共享内存大小公式:RES – SHR
top常用内部指令
'h|?'帮助
‘M’ 按内存的使用排序
‘P’ 按CPU使用排序
'N '以PID的大小排序
'<'向前
'>'向后
'z’彩色,Z设置彩色,使用数字调整
top技巧
动态查看进程 top,像windows的任务管理器
[root@localhost ~]# top //回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
[root@localhost ~]# top -d 1 //每1秒刷新。
[root@localhost ~]# top -d 1 -p 10126 查看指定进程的动态信息
[root@localhost ~]# top -d 1 -p 10126,1 查看10126和1号进程
给进程发送信号(kill -l列出所有支持的信号)
[root@localhost ~]# kill -l
编号 信号名(常用)
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断Ctrl+C
3) SIGQUIT 键盘退出Ctrl+\,类似SIGINT
9)SIGKILL 强制终止,无条件
15)SIGTERM 终止(正常结束),缺省信号
18)SIGCONT 继续
19)SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
示例:
信号9,15
1 创建2个文件,查看终端号。
[root@localhost ~]# touch file1 file2
[root@localhost ~]# tty
/dev/pts/1
2 通过一个终端,打开一个vim
[root@localhost ~]# vim file1
3 通过另一个终端,打开一个vim
[root@localhost ~]# tty
/dev/pts/2
[root@localhost ~]# vim file2
3 通过另一个终端,查询两个进程。
[root@localhost ~]# ps aux |grep vim
root 4362 0.0 0.2 11104 2888 pts/1 S+ 23:02 0:00 vim file1
root 4363 0.1 0.2 11068 2948 pts/2 S+ 23:02 0:00 vim file2
4 发送信号15 和信号9 ,观察两个终端程序状态。
[root@localhost ~]# kill -15 4362
[root@localhost ~]# kill -9 4363
观察两个终端,一个正常终止,一个非法杀死。
简介:
Linux 进程调度及多任务
每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
优先级范围和特性:
优先级图示
系统中的两种优先级:
在top中显示的优先级有两个,PR值和nice值
NI: 实际nice值
PR(+20): 将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39
优先级特性:
nice 值越高: 表示优先级越低,例如+19
nice 值越低: 表示优先级越高,例如-20
查看进程的nice级别:
[root@localhost ~]# ps axo pid,command,nice,cls --sort=-nice
cls表示显示策略列。
TS 表示该进程使用的调度策略为SCHED_OTHER
FF表示高级进程first in first out。
启动具有不同nice级别的进程
启动进程时,通常会继承父进程的 nice级别,默认为0。观察两个程序的不同nice值。
手动启动不同nice:
更改现有进程的nice级别:
使用shell更改nice级别
1 创建一个睡眠示例程序。
[root@localhost ~]# sleep 7000 &
[2] 2669
2 修改他的nice值。
[root@localhost ~]# renice -20 2669
2669 (进程 ID) 旧优先级为 0,新优先级为 -20,观察修旧的nice值。
作业控制是一个命令行功能,也叫后台运行。
foreground 前台进程:是在终端中运行的命令,占领终端。
background 后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
后台程序控制示例
1.观察占领前台的现象
[root@localhost ~]# sleep 2000
运行一个程序,当前终端无法输入。观察占领前台的现象。
大部分命令行输入已经无效。 ctrl+c可以退出
2.运行后台程序
[root@localhost ~]# sleep 3000 & //&代表在后台运行
3.ps查询所有程序
[root@localhost ~]# ps axu |grep sleep
4.jobs查看后台进程
[root@localhost ~]# jobs
5.调动后台程序至前台
[root@localhost ~]# fg 4 //将作业1调回到前台
6.调动后台程序在后台运行
[root@localhost ~]# bg 3 //将作业3在后台运行
7.消灭后台进程
root@localhost ~]# kill %1
注意,“kill 1” 和 “kill %1” 不同,
前者终止PID为1的进程,
后者杀死作业序号为1的后台程序。
简介:虚拟文件系统:采集服务器自身 内核、进程运行的状态信息
CPU:/proc/cpuinfo
内存:/proc/meminfo
内核:/proc/cmdline
本文章由北京千锋教育云计算逆战201班学员 "大宝不胖就是很壮"编写
如果内容有错误或是疑问请网友们评论或私聊我,帮助我改正。
让我们一起学习云计算,加油自己!加油武汉!!