Linux中的进程管理
1 进程的定义
(1)进程的定义
*狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
*广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
*进程是静态的代码文件(静态代码没有生命周期,而进程有)
*进程是指程序运行时的一种形态
*进程是程序的一个副本,将程序的代码复制到内存里面
*进程是由生命周期的(准备期,运行期,终止期)
(2)进程与线程
进程是资源调用的最小单位
线程是进程的最小单位
线程可以资源共享,进程则无法资源共享
线程是操作系统能够进行运算调度的最小单位
线程是独立调度和分派的基本单位
一个进程可以有很多线程,每条线程并行执行不同的任务
多线程:一个事情细化成多个小任务,CPU可以对若干份事情进行处理
(3)进程状态
#R(TASK_RUNNING) 可执行状态(running,ready)
#S (TASK_INTRRUPTABLE) 可唤醒休眠
#D (TASK_UNITRRUPTABLE) 不可唤醒休眠
#T (TASK_STOP) 暂停状态
#Z (EXIT_ZOMBIE) 僵死态
2 进程查看命令
(1)用可视化图形查看Application–>Utilities–>System Monitor
进程管理器中可以显示的内容:
(2)在shell中执行命令:gnome-system-monitor打开图形的进程管理器
[root@westoslinux Desktop]# gnome-system-monitor
(3)ps (what is ps :查看ps命令的作用)
#查看进程
#有三种命令的执行风格:unix,bsd,GNU
#a 与终端相关的进程(当用户登录系统后产生的进程都是带终端的)
#x 与终端无关的进程
#u 用户信息归类的查看方式
#f 进程层级关系
#o 显示指定参数 (pid comm nice pri pcpu ppid stat user group)
#-e 显示所有进程
#-f 显示信息的完整格式
#-H 显示进程的层级结构
#-o 显示指定参数
#–sort= 排序
–sort== 进行排序,可正序可倒序
–sort=- 是倒序排序
–sort= 是正序排序
#ps ax 显示信息如下:
#PID 进程id
#TTY 进程用到的终端
#STAT 进程状态
#TIME 进程占用CPU时长
#COMMAND 进程名称
#ps aux 显示信息如下:
#USER 进程所有人
#PID 进程id
#%CPU 进程使用CPU的用量
#%MEM 进程所用到的内存用量
#VSZ 进程使用的虚拟内存大小
#RSS 进程常驻内存中的数据大小
#TTY 进程用到的终端
#STAT 进程状态
#START 进程运行时长
#TIME 进程占用CPU时长
#COMMAND 进程名称
(4)pgrep
#进程过滤
#-u id
显示指定用户进程
#U User
显示指定用户进程
#-t tty
显示指定终端进程
#-l
显示进程名称
#-a
显示进程的完整名称
#-P
显示进程的子进程
gprep -P 后面要跟父进程的id,但是只能单独使用,不能再接其他参数使用
(5)pidof vim
#查看vim的pid
(6)top
#动态进程查看
[root@westoslinux Desktop]# top
#top命令的参数
#-d 指定刷新频率
#-b 以批次方式显示
#-n 指定显示批次数量
#top内部的指令
#P cpu排序
#M 内序排序
#T 累计占用CPU时间排序
#L 关闭/开启uptime信息
#t 关闭/开启cpu&task
#s 指定刷新频率
#k 操作进程
#u 查看指定用户进程
3 进程优先级
系统是多任务多用户的操作模式
任务的重要性是有分区的
如何确定任务的重要性,需要用“优先级”
范围:0~139
内核自控优先级范围:0~99
用户可控优先级:100~139
*unix中的39~0中39对应的Linux中的0,0对应的99
nice:-20~19
ps------->pri ----39~0
nice 20~19
priority 0~139 (100~139)
[root@westoslinux Desktop]# watch -n 1 ‘ps ax -o pri,nice,pid,comm,stat | grep cat’
[root@westoslinux Desktop]# renice -n -5 4200
[root@westoslinux Desktop]# renice -n 0 4200
[root@westoslinux Desktop]# nice -n -5 cat
对进程指定参数进行监控:
[root@westoslinux Desktop]# watch -n 1 ‘ps ax -o pri,nice,pid,comm,stat | grep cat’
S #sleeping ,< #优先级高,s #顶级进程,T #stop,N #优先级低,R #running,+ #运行在前台
4 进程前后台调用
‘键盘Ctrl’+键盘z #把占用shell的进程打入后台挂起
bg #把后台挂起的进程运行起来
fg #把后台进程调回前台
& #运行进程在后台
jobs #查看当前shell中后台的所有工作
5 进程信息号
(1)进程信号
1 #重新加载系统配置文件
2 #清空内存中的进程数据
3 #清空内存中的鼠标(Ctrl+\)
9 #强行结束进程(不能被阻塞)
15 #正常关闭进程(会被阻塞)
18 #运行被暂停的进程
19 #暂停进程(不会被阻塞)
20 #暂停进程(会被阻塞)
(2)进程信号控制工具
kill 进程信号 pid
killall 进程信号 进程名字
pkill 进程信号 进程条件
6 systemd守护进程
(1)实验环境
linux.westos.com --------------------> 172.25.254.101
远程操作主机
#ssh 远程主机ip -l 远程主机用户
(2)守护进程: 替内核分担程序控管的程序
#通常pid为1
#systemd-------->systemctl
#systemctl 管理系统服务
#服务 :指在系统中开启的共享系统资源到网络中的程序
#cs client(客户端) -------- server (服务端)
(3)systemctl命令的用法
[1] start
#开启
[2]stop
#关闭
[3] status
#查看状态
[root@westoslinux Desktop]# systemctl status sshd
[root@westoslinux Desktop]# watch -n 10 ‘systemctl status sshd’ #对状态进行监控
[4] reload
#重新加载
[5] restart
#重新启动服务
[6] enable
#设定服务开机启动
enable --now
#设定服务开机启动并当前开启服务
disable
#设定服务开启不启动
[5] list-units
#查看系统所有服务当前状态
[6] list-unit-files
#查看服务开机状态
[root@westoslinux Desktop]# systemctl list-unit-files
[7] list-dependencices
#列出服务依赖性
[root@westoslinux Desktop]# systemctl list-dependencies sshd
[8] mask
#冻结服务
unmask
#解锁
[root@westoslinux Desktop]# systemctl mask sshd
[root@westoslinux Desktop]# systemctl unmask sshd
*解锁后重新启动服务才能生效
[9] set-default
#设定系统运行模式
#multi-user.target 无图形网络模式
#graphical.target 有图形的网络模式
[10]get-default
#查看系统运行模式
#系统运行模式
#0~6
#0 POWEROFF
#1 single
#2 noG+NETWORK
#3
#4
#5 G+NETWORK
#6 REBOOT(重新启动)
*无图形模式在选择之后直接就是输入命令行的形式,需要输入init 5命令临时恢复图形模式,之后再进行有图形模式的设置,才可以再下次重启后是有图形模式。
7 系统中的登陆统计
[1] w
#显示正在登录系统的账号
#-i 显示登陆来源
#/var/run/utmp
[2]last
#登陆成功现在已经退出的
#/var/log/wtmp
[3]lastb
#试图登陆但未成功
#/var/log/btmp