我是靠谱客的博主 热情心情,最近开发中收集的这篇文章主要介绍Linux系统中如何管理进程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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号
%cpuCPU用量百分比
%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系统中如何管理进程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部