概述
1.什么是进程
2.进程的查看
3.进程优先级
4.进程前后台调用
5.信号
6.守护进程systemd
1.进程的理解
进程(Process)
• 程序是静态的文件
• 进程是运行中的程序的一个副本
• 进程存在生命周期(准备期,运行期,终止期)
进程的状态:
状态 | 定义 |
---|---|
R(TASK_RUNNING)运行 | 可执行状态,进程正在运行(RUNNING)或在运行队列中等待(READY) |
S (TASK_INTERRUPTIBLE)睡眠 | 进程处于休眠中,当某个条件形成或接收到信号时,可被唤醒脱离休眠状态 |
D(TASK_UNINTERRUPTIBLE) | 进程不响应系统异步信号,即便用kill命令也不能将其中断,不可唤醒休眠状态,如:程序在加载磁盘内较大文件,没有加载完成时不可唤醒 |
T (TASK_STOPPEO) | 进程收到停止信号号停止运行,处于暂停状态 |
Z(EXIT_ZOMBIM) | 僵死状态,进程已经终止,但是进程描述符依然存在,直到父进程调用wait()系统函数将其释放 |
2.进程的查看
pstree:树形显示,查看进程树
进程在执行过程中从上倒下衣次执行,数据流贯穿状态;在此过程中进程运行过程中的数据流不可中断,只能外力干扰,当需要运行多个进程,数据流是需要分流的,以便同时处理运行多个进程;线程是进程运行的最小单位,进程是资源调配的最小单位,每个进程运用到的资源都是独立的。
当前进程所有的发起者是:systemd-守护进程,系统开启时自动打开
ps 参数 查看进程
ps命令运行格式:UNIX BSD 两种常用格式
显示当前命令执行时的进程状态:
BSD:格式
ps a 显示与终端相关的进程
TTY:所在终端
ps x 显示所有与终端无关的进程
TTY:?表示不知道终端
ps ax 以资源进行归类
PID分类归类
ps aux u参数是以用户归类来显示进程状态
USER | 进程所用者 |
---|---|
PID | 进程ID号 |
%cpu | CPU用量百分比 |
%MEM | 内存占用率 |
VSZ | 虚拟内存战用量 |
RSS | 占用的固定内存量,常住内存集大小 |
TYY | 所在终端 |
STAT | 进程状态 |
START | 进程被启动的时间 |
TIME | 进程所被CPU处理的时间,占用CPU时间 |
COMMAND | 进程名称 |
ps auxf 层级结构显示进程信息
UNIX格式
ps -e 显示所有进程
ps -f 显示完整格式信息
PPID:父进程ID
C:CPU用量
ps -e -f -H 层级结构显示进程的相关信息 缩进模式unix格式
ps ao pid 只看进程PID
[root@workstation Desktop]# ps axo pid,comm名字,nice优先级,stat状态,user所有人,group所以组,%cpu占用量,%mem内存战用量 | less`
unix格式
[root@workstation Desktop]# ps -eo pid,user,group,comm,%cpu,%mem,nice,stat | less
[root@workstation Desktop]# ps axo pid,comm,%cpu --sort=%cpu 按CPU用量大小排序正排
[root@workstation Desktop]# ps axo pid,comm,%cpu --sort=-%cpu 按CPU用量大小排序到排
[root@workstation Desktop]# ps axo pid,comm,%cpu --sort=-%cpu | head -n 5 显示到排的前5行
pgrep :显示指定信息的进程
显示制定id的进程信息
[root@workstation Desktop]# ps -u 1000
显示指定用户的进程
[root@workstation Desktop]# pgrep -U student
显示指定进程名称
[root@workstation Desktop]# pgrep -l -U student
[root@workstation Desktop]# pgrep -l -u 1000
显示指定终端进程及名称
[root@workstation Desktop]# pgrep -l -t pts/0
显示指定进程的子进程及名称
[root@workstation Desktop]# pgrep -lP 1
显示指定进程完整的格式进程
[root@workstation Desktop]# pgrep -al -t pts/1
查看进程名称获取进程PID
pidof vim
如:运行监控命令 `[root@workstation Desktop]# watch -n 1 date`
另外打开shell查理看pid直 [root@workstation Desktop]# pidof watch
top:命令用于动态监控进程活动与系统负载
top内部参数使用如下:
运行-默认3s刷新一次
[root@workstation Desktop]# top
第一行:
top-系统当前时间 up-系统运行时间 user-登陆系统终端的用户数量 load average -系统负载值(uptime可以查询)一分钟,五分钟,十五分钟,负载值越低越好,尽量不超过1,生产中不超过5
第二行:
total:进程总数 running:运行中的进程 sleeping:睡眠中的进程 stopped:停止进程数 zombie:僵死进程数
第三行:us:用户占用空间百分比 sy:系统内和占用空间百分比 ni:改变过优先级的进程占用空间百分比 id:空闲空间百分比 wa:等待输入输出时间io hi:硬件终端时间 si:软件中断时间 st:被虚拟化程序占用的百分比
第四行:
Mem物理内存 total:物理内存总量 free:内存空闲量 used:内存使用量 buff/cache:内核缓存的内存量(free+buff/cahe=内存空闲量)
第五行:
swap:交换分区占用(虚拟内存)total:虚拟内存总量 free:虚拟内存空闲量 user:虚拟内存使用量 avail Mem:已被提前加载的内存量
信息显示区:
PID:进程ID USER:进程用户名字 PR:进程优先级 NI:优先级代表的NICE值 VIRT:虚拟CPU RES:进程使用的为被唤出的物理内存大小 RHS:共享资源 S:进程状态 %CPU:占用CPU用量百分比 %Mem:占用物理内存用量百分比 TIME+:占用CPU的时间 COMMAND:进程名称
top命令内部命令使用方法:
默认按照CPU施用量大小排序
按:P 也是按照CPU施用量大小进行排序(%COP)
按:M 按照内存大小排序(Mem)
按:T 查看占用CPU时间最长(TIME+)
按: l 屏蔽负载信息-再次按下l 显示负载
按:t 屏蔽tasks-进程状态信息-在次按下显示
t-多种模式
按:1显示整体内核数再次按下合并
按:s 设置刷新频率 设置刷新频率为1S
查看某一指定用户进程
例如查看student用户进程
按u并输入用户名称student回车查看再次按u回车则退出
关闭某一进程
列如关闭student用户进程
按:k 输入进程ID 回车后该进程关闭
按:q退出top命令模式
在进入top之前设定时间刷新频率
1s刷新一次 使用-d参数
-b持续刷新 -n设定刷新次数
[root@workstation Desktop]# top -b -d 1 按批次每秒刷新一次 整个shell会被占用 一直持续刷新 ctrl+c 停止
[root@workstation Desktop]# top -b -n 2 -d 1 按批次刷新每秒一次刷新两次自动结束
3.进程优先级
按照资源占用划分进程类型
资源使用量 | 进程类型 |
---|---|
cpu使用密集 | CPU-Bound |
I/O使用密集 | I/O-Bound |
优先级范围
对Linux而言优先级被划分成固定个数(0-139);
1-99为实时有优先级,数字越大优先级越高,不用手动处理系统自用;
100-139为静态优先级,数字越小优先级越高;
N ICE 调整静态优先级
NICE值:20~19对用静态优先级(-20对应优先级100,19对应139)数字越小优先级越高
普通用户只可以调低优先级,超级用户任意调整
关于优先级的命令:
• ps ax –o nice,pid,comm
• nice –n 优先级 程序
• reince –n 优先级 程序pid
默认情况下NICE值为0对应的120
S:表示顶级优先级
s:休眠状态
T:表示vim是停止状态
R+:表示前台运行
调整vim的优先级为-15
[root@workstation Desktop]# renice -n -15 3499
3499 (process ID) old priority 0, new priority -15
值越小优先级越高,<表示优先级高于默认值
更改值为15 降低优先级
N:表示优先级低于默认值
root@workstation Desktop]# renice -n 15 3499
3499 (process ID) old priority 15, new priority 15
[root@workstation Desktop]# ps -o stat,nice,comm,pid
STAT NI COMMAND PID
Ss 0 bash 3454
TN 15 vim 3499
R+ 0 ps 3774
[root@workstation Desktop]#
vim打入后台不占用终端+&
开启进程时指定优先级
4.进程前后台调用
进程前后台调用相关命令
指令 | 含义 |
---|---|
jobs | 查看后台任务 |
ctrl+z | 将前台运行进程打入后台 |
bg | 激活后台进程 |
fg | 调回进程 |
& | 运行在后台 |
[root@workstation Desktop]# gedit 运行图形编辑器会占用当前shell终端
按:ctrl z 将该程序打入后台运行
查看geditz状态处于停止状态
查看后台挂起的程序
[root@workstation Desktop]# jobs
[1]+ Stopped gedit
调用后台程序
[root@workstation Desktop]# fg 1
gedit可以编写123456
[root@workstation Desktop]# vim & 在开启时直接打入后台运行
[2] 2570
[root@workstation Desktop]# jobs 查看后台进程
[1]- Stopped gedit
[2]+ Stopped vim
[root@workstation Desktop]# bg 2 bg无法调用vim,原因是vim会占用整个终端,不可唤醒
[2]+ vim &
[2]+ Stopped vim
[root@workstation Desktop]# fg 2 调回前台运行vim
vim
在vim编辑过程中按ctrl z 则会打入后台运行
5.信号
可控信号类型
man signal
可控信号 | 含义 |
---|---|
1 | 在不关闭程序的状态下刷新(kill -1 ID) |
2 | 中断键盘输入 |
3 | 退出键盘,不显示鼠标 |
9 | 强制结束 |
15 | 正常关闭 |
18 | 激活进程 |
19 | 强制暂停 |
20 | 正常暂停 |
信号2-ctrl c
信号3–ctrl 鼠标消失
信号15:正常结束某一进程,可能会被系统阻塞
信号9:强制结束某一程序不会被阻塞
信号19:执行命令后ID为2928的shell则终止键盘读取,按123无输入显示 强制暂停
信号18:执行命令后shell直接显示出上次为输入的字符123,开启激活被暂停的进程
信号20:该命令之先后会被系统阻塞,不产生作用
信号 指 令
kill 信号 pid
运行gedit 并强制关闭该程序
后台运行多个vim同时关闭多个vim
pkill 信号 进程名称
切换到student,用命令结束该进程
设定实验环境
[root@workstation Desktop]# nm-connection-editor 设定新ip
IP:172.25.254.111
查看真机IP:172.25.254.66
[root@workstation Desktop]# ping 172.25.254.66
成功ping接通 免密码
真机切换到超级用户创建新用户并用该用户的身份登陆虚拟机如下:
该用户需要虚拟机的登陆密码才可登陆
此时在真机的操作都会显示在虚拟机里面
6.守护进程
守护 进 程 的 定 义
守护进程就是通常讲Daemon进程,
是linux后台执行的服务进程;
是独立于控制终端、周期性地执行某种任务或等待处理某些发生事件;
不会随终端关闭而停止,直到接受停止信息才会结束。
守护 进 程 类 型
守护进程类型 | 使用系统及特点 |
---|---|
Sysv init | 经典的守护进程类型延用到rhel6 |
upstart | 做到并行启动rhel6中应用 |
systemd | 独立完成启动,rhel7中使用 |
sy stem ct l 用 法 之 一
[root@workstation Desktop]# systemctl list-units --type=service
查看服务当前运行状态
[root@workstation Desktop]# systemctl list-unit-files --type=service
查看服务开机运行情况
enabled:服务开机时自动打开
disableb:开机时该服务不会自动打开
static:不需要管理,静态服务,自动根据某些服务自动打开
[root@workstation Desktop]# systemctl list-dependencies sshd
列出该服务的依赖性(sshd)
[root@workstation Desktop]# systemctl status sshd
查看sshd该服务进程的状态
ID:991
Tasks:1 一个任务
Memory:5.0M 占用内存大小
Jan开头文日志记录
[root@workstation Desktop]# systemctl stop sshd
停止服务进程
[root@workstation Desktop]# systemctl status sshd
查看服务进程
也无法登陆该虚拟机
[root@workstation Desktop]# systemctl start sshd
开启服务进程
[root@workstation Desktop]# systemctl status sshd
查看服务进程
[root@workstation Desktop]# systemctl restart sshd
重新关闭启动服务进程(stop start)二者集和
从上可以看出在每次重新启动过程中该服务进程的ID都会发生改变(991变为3142再次变为3240)
重新加载服务不更更改ID,但是更改服务配置则会刷新服务配置(/etc/ssh/sshd_config)
[root@workstation Desktop]# systemctl reload sshd.service
[root@workstation Desktop]# systemctl status sshd
与信号命令中的(kill-1不关闭服务刷新),
设置服务开机关闭
当前为开机启动
[root@workstation Desktop]# systemctl disable sshd.service
Removed /etc/systemd/system/multi-user.target.wants/sshd.service.开机服务关闭
此命令不会影响服务当前状态(当前状态为运行状态)
设定开机时服务开启
[root@workstation Desktop]# systemctl enable sshd.service
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
此命令不会影响服务当前状态(当前状态为运行状态)
停止sshd服务
[root@workstation Desktop]# systemctl stop sshd
设定该服务开机启动并开启服务
[root@workstation Desktop]# systemctl enable --now sshd
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
systemctl set-default multi-user.target 设定系统运行级别为无图形网络模式
此设置需要重新启动生效,当前使用不受影响,关闭当前图形界面:init3(临时关闭)init5(临时恢复图形界面)
[root@workstation Desktop]# systemctl set-default multi-user.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.
重新启动图形界面消失
[root@workstation Desktop]# systemctl set-default graphical.target
重新启动后图形界面恢复
最后
以上就是热情心情为你收集整理的Linux系统中如何管理进程的全部内容,希望文章能够帮你解决Linux系统中如何管理进程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复