七、Linux中的进程管理

2023-11-13

七、Linux中的进程管理

7.1、进程和线程定义

程序是静态的代码文件
进程:进程是指程序运行时的形态,是程序的一个副本,进程是有生命周期的(准备期,运行期,终止期)
线程:当程序是多任务的,cpu是多核心,多任务同时被每个核心处理,每个核心处理的任务叫线程,线程资源是共享的

7.1.1、进程和线程的关系

进程是资源调用的最小单位
线程是进程的最小单位

7.1.2、进程状态

R   (TASK_RUNNING)           #可执行态
S   (TASK_INTERRUPTABLE)     #可唤醒休眠
D   (TASK_UNINTERRUPTABLE)   #不可唤醒休眠
T   (TASK_STOP)              #暂停状态
Z   (EXIT_ZOMBIE)            #僵死态(运行完毕,但仍占用系统资源,需手动结束)

7.2、进程查看命令

图形中进程调用命令
gnome-system-monitor

ps #进程查看

#ps命令的三种执行风格unix、bsd、GUN

指令:ps 参数

7.2.1、bsd风格

a #与终端相关的进程
x #与终端无关的进行
u # 用户信息归类的查看方式
f #进程层级关系
o #显示指定参数 pid 、comm、nice、pri、papu、ppid、stat、user、group

例:只显示与终端相关和无关进程的pid和comm
指令:ps axo pid,comm
在这里插入图片描述

7.2.2、unix风格

-e #显示所有进程
-f #显示信息的完整格式
-H #显示进程的层级结构
-o 显示指定参数
–sort= #排序

例:显示系统所有进程的完整格式
指令:ps -ef
在这里插入图片描述
例:按照占用CPU进行排序
指令:ps ax --sort=%cpu
在这里插入图片描述
注:CPU正序排序指令:ps ax --sort=-%cpu

7.2.3、指令:ps ax 显示信息解释

在这里插入图片描述

PID     #进程id
TTY     #进程用到的终端
STAT    #进程状态
TIME    #进程占用CPU时长
COMMAND #进程名称

7.2.4、指令:ps aux 显示信息解释

在这里插入图片描述

USER    #进程所有人
PID     #进程id
%CPU    #进程占用CPU量
%MEN    #进程占用内存量
VSZ     #进程使用的虚拟内存大小
RSS     #进程常驻内存中的数据大小
TTY     #进程用到的终端
STAT    #进程状态
START   #进程运行时长
TIME    #占用CPU时长
COMMAND #进程名称

例:倒序查看进程占用CPU量,只看占用量和进程名字
指令:ps ax -o %cpu,comm --sort=%cpu
在这里插入图片描述
例:正序查看占用CPU前五位的pid,只显示pid
指令:ps ax -o pid --sort=-%cpu | head -n6 | tail -n5
或者:ps ax -o pid --sort=-%cpu | grep -v PID | head -n5
在这里插入图片描述

7.2.5、pgrep进程过滤

-u uid    #显式指定用户进程
-U user   #显示指定用户进程
-t tty    #显示指定终端进程
-l        #显示进程名称
-a        #显示进程的完整名称
-P        #显示进程的子进程

7.2.6、pidof vim

查看vim的pid

7.2.7、top动态进程查看

top 参数

top中动态信息解释:

top
22:50:57 #系统时间
up 5:33 #运行时长
1 user #系统中有一个用户登录
load average: 0.00, 0.00, 0.00
三个时间分别表示1min,5min,15min的负载程度。

Tasks
309 total #任务总量
2 running #正在运行
307 sleeping #休眠数量
0 stopped #被暂停数量
0 zombie #僵死数量

%Cpu(s)
6.8 us #用户空间
2.4 sy #内核空间
0.0 ni #nice值调整时间
89.5 id #空闲时间、
0.0 wa #等待io时间
1.4 hi #处理硬件中断时间
0.0 si #处理软件中断时间
0.0 st #被偷走的时间(vm使用时间)

Mib men
1806.1 total #总量
102.9 free #空闲
1074.5 used #占用
628.6 buff/cache #缓存

MiB Swap #交换分区用量

7.2.7.1、命令的参数

-d #指定刷新频率
例:每隔一秒刷新一次,执行tou -d 1

-b #以批次方式显示
-n #指定显示的批次数量
例:以两个批次显示,执行top -b -n 2

7.2.7.2、top内部指令

P #cpu排序
M #内存排序
T #累计占用CPU时间排序
l #关闭/开启uptime信息
t #关闭/开启cpu&task
s #指定刷新频率
k #操作进程
u #查看指定用户进程

注:执行top之后只需按响应键查看与之对应信息

7.3、进程优先级

系统是多任务多用户的操作模式
任务的重要性有区分
通过“优先级”确定任务的重要性

优先级范围:0-139
内核自控优先级范围:0-99
用户可控优先级范围:100-139

nice值范围:-20 到19
renice指令可以更改用户优先级

例:
(1)监控cat指令:
watch -n 1 “ps ax -o pri,nice,pid,comm | grep cat”
(2)root下执行cat,获取pid
(3)执行指令renice -n 5 40346,(40346为cat指令pid)可以把cat指令优先级调整为5。
在这里插入图片描述

进程状态查看
watch -n 1 “ps ax -o pri,nice,pid,comm,stat | grep cat”
在这里插入图片描述
SN+表示cat指令进程状态

S #sleeping
< #优先级高
s #顶级进程
T #stop
N #优先级低
R #running
 + #运行在前台

7.4、进程前后台调用

< ctrl >+< z > #把占用shell的进程打入后台挂起
jobs #查看当前shell中在后台的所有工作

bg #把后台挂起程序运行起来
fg #把后台进程调回前台
& #运行进程在后台
例:
编辑文件file,使其运行在后台指令:gedit file &

7.5、进程信号及信号控制

7.5.1、进程信号

执行man 7 signal查看信号解释
在这里插入图片描述
可控部分:
1 #重新加载系统配置文件(source)
2 #清空内存中的进程数据
3 #清空内存中的鼠标(ctrl+\)
9 #强行结束进程(不能被阻塞)
15 #正常关闭进程(会被阻塞)
18 #运行被暂停的进程
19 #暂停进程(不会被阻塞)
20 #暂停进程(会被阻塞)

例:
(1) gedit编辑一个file,< ctrl >+< z >打入后台。
(2) bg后台运行,ps可以查看gedit进程的id。
(3) 可以通过指令kill -15 id 关闭后台进程gedit
在这里插入图片描述

7.5.2、进程信号控制工具

指令格式:
kill 进程信号 pid
killall 进程信号 进程名字
pkill 进程信号 进程条件

例:打开三个vim,crtl+z打入后台
kill -9 56817 结束单个vim
killall -9 vim 结束全部vim
在这里插入图片描述
例:
素材:su - fake 执行三次
监控:watch -n 1 “ps ax -o user,comm | tail -n 10”
执行pkill -u fake发现只结束掉一个
在这里插入图片描述
执行pkill -9 -u fake全部结束
在这里插入图片描述
注:-u表示结束用户

7.6、系统守护进程及systemctl命令的应用

7.6.1、守护进程

守护进程代替内核分担程序管控,通常pid为1。
systemd----->systemctl
systemctl 管理系统服务
服务指在系统中开启的共享系统资源到网络中的程序

systemctl命令的用法
格式:systemctl +以下功能

start     #开启
stop      #关闭
status    #查看状态
reload    #重新加载
restart   #重新启动服务
enable    #设定服务开机启动
enable --now    #设定服务开机启动并当前开启服务
disable         #设定服务开机不启动
list-units      #查看系统所有服务器当前状态
list-unit-files #查看服务器开机状态
list-dependencies       #列出服务依赖性
mask            #冻结服务
unmask          #解锁
set-default     #设定系统运行模式
                #multi-user.target  无图形网络模式
                #graphical.target   有图形网络模式
get-default     #查看系统运行模式
                #系统运行模式
                 # 0-6
                 # 0  POWEROFF
                 # 1  single 单用户模式,用来改密码
                 # 2  noG+NETWORK
                 # 3
                 # 4
                 2-4为无图形网络模式
                 # 5  G+NETWORK
                 5为有图形模式
                 # 6  REBOOT

实验:
开启监控;watch -n 1 systemctl status sshd
命令行输入:systemctl stop sshd执行后状态为dead
在这里插入图片描述
命令行输入:systemctl start sshd执行后状态为active
在这里插入图片描述
通过命令查看sshd状态:systemctl status sshd
仍旧为active
在这里插入图片描述
例:设定sshd.service服务开机不启动
指令:systemctl disable sshd.service
在这里插入图片描述
注:若当前sshd.service正在运行,则disable之后不会关闭,但是再次开机不会启动。若要关闭当前服务且开机不启动,执行
systemctl disable --now sshd.service

例:查看系统所有服务器当前状态
指令:systemctl list-units

例:打开无图形网络模式
指令:systenctl set-default muti-user.target
效果:开机之后进入无图形模式

7.7、系统中的登陆审计

w      #显示正在登陆的账号
       ## -i 显示登陆来源
       ## 获取登录信息来自:/var/run/wtmp
last   #登陆成功现已退出的
       ## /var/log/utmp
lastb  #试图登录但未成功
       ## /var/log/btmp

例:
ifconfig获取ip
ssh -l root 127.0.0.1登陆
w -i 查看登录来源
在这里插入图片描述
exit退出之后,w -i 查看发现没有用户登陆
在这里插入图片描述
last查看登录成功现已退出
在这里插入图片描述
若执行ssh -l root 127.0.0.1之后密码输入错误,则可通过lastb查询到试图登录但未成功记录
在这里插入图片描述
注:若想清除正在登陆信息,执行> /var/log/wtmp
执行之后,再执行last查看
在这里插入图片描述
登陆信息清除

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

七、Linux中的进程管理 的相关文章

  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • 使用 shell 脚本将行附加到 /etc/hosts 文件

    我有一个新的 Ubuntu 12 04 VPS 我正在尝试编写一个安装脚本来完成整个 LAMP 安装 我遇到问题的地方是在 etc hosts文件 我当前的主机文件如下所示 127 0 0 1 localhost Venus The fol
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • x86-64 AMD 上 CALL 指令的操作数生成

    以下是示例程序 objdump 的输出 080483b4
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • Jmeter接口测试、性能测试详细讲解+实战教程,堪称经典!

    目录 导读 1 接口简介 2 接口测试简介 3 环境搭建 4 RESTful风格 5 Json说明 6 Jmeter简介 7 Jmeter环境搭建 8 Jmeter使用 8 1 Jmeter发GET请求 8 2线程组 8 2 1 并发执行
  • BIO、NIO和AIO的区别、三种IO的原理与用法

    目录 IO BIO NIO AIO 区别及联系 各自适用场景 使用方式 IO 什么是IO 它是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口 它对于任何计算机系统都非常关键 因而所有 I O 的主体实际上是内置在操作系统中的
  • 【信号与系统】零输入响应和自由响应的区别

    课本内容 以下内容来自郑君里 信号与系统 第三版 上册 p61 1 自由响应和零输入响应都满足齐次方程的解 2 然而 它们的系数完全不同 零输入响应的系数仅由起始储能情况决定 而自由响应的系数要同时依从于起始状态和激励信号 3 自由响应由两
  • 战地一的服务器在哪个文件夹,战地1怎么加入服务器 战地1加入服务器方法

    今天小编给大家带来的是一位玩家分享的 战地1 加入服务器方法介绍 不知道怎么加入的玩家 快跟小编一起来看看吧 战地1的网络对战除去行动模式是自动配对或者跟好友进外 其他对战进入服务器的方式有好多种 我估计还有其他玩家不知道 那我就图文指条明
  • 【JavaScript】Math 对象

    Math 对象 Math 对象是 JS 的内置对象 可以直接使用 console log typeof Math Math object Math abs acos 常用属性 Math PI 圆周率 3 141592653589793 常用
  • ScrollView嵌套RecyclerView滑动冲突相关问题

    出现了滑动冲突问题 主要表现为横向RecyclerView滑动不灵敏 纵向RecyclerView滑动卡顿 scrollview里面放Recyclerview 会导致view不回收 内存压力大 最好使用 Recyclerview通过Item
  • 带过渡动画的折叠收缩布局ExpandLayout

    ExpandLayout 简介 由于界面View VISIBLE和View GONE的动画太生硬 所以写了ExpandLayout类来平滑过渡 基本思路 动态的设置布局的高度 核心动画效果代码 切换动画实现 private void ani
  • Android面试题——javaMVC、AndroidMVC

    中的 模型 对象 是应用程序的主体部分 多有业务逻辑都应该放到该层 视图 对象 是应用程序中负责生成用户界面的部分 也是整个 架构中用户唯一可以看到的一层 接受用户的输入 显示处理结果 3 控制器 controller 对象 是根据用户的输
  • python3代码提示怎么设置-PyCharm里面配置第三方库的代码自动提示

    最近开始用 PyCharm 编辑器来编写 python 代码了 安装了 GUI 库 wxPython 之后 发现没有代码提示 写起来很是不爽 几经周折之后发现还是得配置一下 因为自己也找了蛮久 所以记录一下 希望可以帮到打击 其他第三方库的
  • 微信小程序纯css实现刻度尺

    微信小程序纯css实现刻度尺 最近需要实现一个高度定制的刻度尺 但是网上现成的方案却是极少 最终找到了HaoTian的wx scale 但是没有实现竖向的效果而且刻度范围大时 在安卓机上无法渲染完全 找了很久没有找到原因 猜测是canvas
  • 为什么c语言有时候要两个括号,头文件中为什么要用了两个括号?

    在研究MD5算法 发现它的头文件MD5 h有 MD5 context typedef struct UINT4 state 4 state ABCD UINT4 count 2 number of bits modulo 2 64 lsb
  • cisco配置WEB登录的方法

    要启用路由器的 HTTP HTTPS 服务器 请使用下列 Cisco IOS 命令 Router config ip http server Router config ip http secure server Router config
  • 不走弯路,ubuntu系统GPU版本的Pytorch安装

    需先查看电脑是否安装了显卡驱动 nvidia smi 有表格样页面输出则安装了 如果没有 sudo ubuntu drivers devices 查看可安装版本 选择最高安装 sudo apt install nvidia driver 5
  • 用Python爬取了上W表情包。快拿去欢乐斗图吧~

    导语 表情包 是一种利用图片来表示感情的一种方式 表情包是在社交软件活跃之后 形成的一种流行文化 表情包流行于互联网上面 基本人人都会发表情 曾经你是否也有过找不到表情包去应对别人的时候 别担心 今天小编将分享如何用Python爬取批量表情
  • 【核磁共振成像】单射成像和高速脉冲序列

    目录 一 提高成像速度的手段 二 平面回波成像 EPI 序列 三 常用或基本EPI序列 四 EPI变型序列 五 渐开平面螺旋 spiral 扫描序列 六 RARE序列 七 GRASE序列 八 STEAM序列 一 提高成像速度的手段 MRI扫
  • Docker容器安装Mysql和Redis(3)

    前言 容器安装的好处是 相互隔离互不影响 相比于传统的一个linux下安装多个服务 其中一个服务报错可能影响其他服务的问题 现在一个服务就是一个容器互不影响 目录 1 安装MySQL 1 1 拉取镜像 1 2 创建并启动 1 3 外部创建映
  • ES设置常规数据字段属性

    index 是否可被搜索 示例如下 PUT es 0001 mappings properties name type keyword index false POST es 0001 doc name James GET es 0001
  • 两个苹果手机如何同步数据_旧苹果手机数据迁移到新手机教程

    很多知友私信提问如何将旧苹果手机数据迁移到新苹果手机上 由于没有像安卓那样一键操作的软件 所以大部分机友束手无策 今天我在这里给大家介绍几种方法 一 从icloud云备份恢复设备 1 打开您的iPhone 您应该会看到 您好 屏幕 如果您的
  • 为什么国内互联网公司喜欢用Centos而不是Ubuntu?

    几乎所有新手接触Linux时 都会被它的几百个发行版本搞得一头雾水 在众多Linux 版本中 CentOS 和 Ubuntu 可以说是最有名的两个了 而关于这两者的选择也是大家在网络上经常讨论的问题 比如各大网站都有热门问题 为什么国内互联
  • 七、Linux中的进程管理

    七 Linux中的进程管理 7 1 进程和线程定义 程序是静态的代码文件 进程 进程是指程序运行时的形态 是程序的一个副本 进程是有生命周期的 准备期 运行期 终止期 线程 当程序是多任务的 cpu是多核心 多任务同时被每个核心处理 每个核