小白Linux学习笔记--进程管理

进程管理

文章目录

  • 进程管理
    • 进程
      • pstree 命令
      • 静态查看进程信息
        • ps
        • pgrep
    • 动态查看进程信息
      • top 终端提示符不显示
      • 停止进程
      • killall
      • pkill
      • xkill
      • 进程优先级
      • 指定优先级
      • 调整优先级
    • 前后台作业
    • 进程管理课后作业

进程

  • 进程: 运行在内存中程序实例 , 进程是程序运行的一种状态 , 是内存中的概念,进程与进程之间无法访问对方私有的内存区域。

  • 线程: 程序运行的最小单元,一个进程可以派生出多个线程,同一个进程内的线程之间可以相互访问彼此内存区域,并且可以共享同一进程的共享内存区域。

  • 进程编号:pid

  • 父进程编号:ppid

pstree 命令

pstree 命令用以查看进程的结构

常用参数参数说明
-a显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。
-c不使用精简标示法。
-G使用VT100终端机的列绘图字符。
-h列出树状图时,特别标明执行的程序。
-H<程序识别码>此参数的效果和指定"-h"参数类似,但特别标明指定的程序。
-l采用长列格式显示树状图。
-n用程序识别码排序。预设是以程序名称来排序。
-p显示程序识别码。
-u显示用户名称。
-U使用UTF-8列绘图字符。
-V显示版本信息。
[root@rhel6 /etc/skel]#pstree
init─┬─NetworkManager─┬─dhclient
│
└─{NetworkManager}
├─abrtd
├─acpid
├─anacron
├─atd
├─auditd───{auditd}
├─automount───4*[{automount}]
├─bonobo-activati───{bonobo-activat}
├─certmonger
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─cupsd
├─2*[dbus-daemon───{dbus-daemon}]
├─dbus-launch
├─devkit-power-da
├─gconfd-2
├─gdm-binary─┬─gdm-simple-slav─┬─Xorg
│
│
├─gdm-session-wor
│
│
├─gnome-session─┬─at-spi-registry
│
│
│
├─gdm-simple-gree
│
│
│
├─gnome-power-man
│
│
│
├─metacity
│
│
│
├─polkit-gnome-au
│
│
│
└─{gnome-session}
│
│
└─{gdm-simple-sla}
│
└─{gdm-binary}
├─gnome-settings-───{gnome-settings}
├─gvfsd
├─hald─┬─hald-runner─┬─hald-addon-acpi
│
│
└─hald-addon-inpu
│
└─{hald}
├─master─┬─pickup│
└─qmgr
├─5*[mingetty]
├─modem-manager
├─polkitd
├─pulseaudio───{pulseaudio}
├─rhsmcertd
├─rpc.statd
├─rpcbind
├─rsyslogd───3*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─sshd───sshd───bash───pstree
├─udevd───2*[udevd]
└─wpa_supplicant

静态查看进程信息

ps
  • ps 查看当前标签页上的进程信息
  • ps aux 系统进程快照
  • ps -ef e 所有进程 f 全格式罗列

使用ps aux查看
第一列user代表进程的拥有者,第二列PID,第三列占用CPU的百分比,第四列占用内存的百分比,我们说进程占用系统资源,像CPU内存都属于系统资源的一部分,这里都将它显示出来了。接下来,VSZ代表这个占用虚拟内存的大小,RSS代表占用物理内存的大小,以KB为单位。虚拟空间就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,那么物理内存就是真实存在的真正的内存大小。然后就是处于哪个终端,进程目前的状态,开始时间,和具体的命令。那么进程的状态有哪些呢。
S:休眠状态(sleeping)
R:等待运行(runable)R Running or runnable (on run queue) 进程处于运行或就绪状态
I:空闲状态(idle)
< high-priority (not nice to other users) 优先级较高的
N low-priority (nice to other users) 优先级较低
s is a session leader 进程的领导者
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) 多线程

  • is in the foreground process group 在前台进程组

使用ps -ef 查看
UID 用户ID
PID 进程ID
PPID 父进程ID
C CPU占用率
STIME 开始时间
TTY 开始此进程的TTY
TIME 此进程运行的总时间
CMD 命令名

使用ps -le可以用来查看这个进程的优先级,主要关注优先级,优先级是NI这一列,其他先不用关注

pgrep

用来过滤进程号

[root@rhel6 ~]# pgrep -l ping <== 截取进程号 pid
27706 ping
[root@rhel6 ~]# pgrep -lU student <== 指定用户截取进程号 pid
27736 bash
27762 ping
[root@rhel6 ~]# pgrep -l -t pts/1 <== 指定登陆端口截取进程号 pid
2568 bash
27735 su
27736 bash
1.2.3 pidof
[root@rhel6 ~]# pidof Xorg <== 只显示进程的进程号 pid
15262

动态查看进程信息

top 终端提示符不显示

  • 【 d 】修改默认刷新频率 , 默认 3s
  • 【 P 】以 cup 占用百分比进行排序
  • 【 M 】以内存的占用情况排序
  • 【 h 】显示帮助信息
  • 【 <> 】翻页
  • 【 k 】杀掉进程 kill

top命令图解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

停止进程

Linux中的 kill 命令用来停止指定的进程( terminate a process )的运行,是 Linux下进程管理的常用命令。

通常情况下停止一个前台进程可以使用 Ctrl+C 组合键,但是对于一个运行在后台进程需要用 kill命令来终止,我们就需要先使用 ps、pidof、pstree和top 等工具获取进程 PID ,然后使用 kill 命令来杀掉该进程。

kill 命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15 的 TERM 信号。 TERM 信号将终止所有不能捕获该信号的进程。

对于那些可以捕获该信号的进程就要用编号为 9 的 kill 信号,强行 “ 杀掉 ” 该进程。

命令格式

kill [参数][进程号]

命令功能:

发送指定的信号到相应进程。不指定型号将发送 SIGTERM ( 15 )终止指定进程。如果任无法终止该程序可用 “ -KILL” 参数,其发送的信号为 SIGKILL(9) ,将强制结束进程,使用 ps 命令或者 jobs 命令可以查看进程号。 root 用户将影响用户的进程,非 root 用户只能影响自己的进程。

命令参数:

参数说明
-l信号,若果不加信号的编号参数,则使用 “ -l” 参数会列出全部的信号名称
-a当处理当前进程时,不限制命令名和进程号的对应关系
-p指定 kill 命令只打印相关进程的进程号,而不发送任何信号
-s指定发送信号
-u指定用户

killall

用于关掉多个同名的进程

killall -9 ping ===>关掉所有的ping进程

pkill

使用pkill命令可以根据进程的名称/运行该进程的用户/进程所在的终端等等属性来终止特定的进程
pkill -9 -t 终端名 ===>关掉由该终端开启的进程
pkill -9 -U 用户名 ===>关掉由该用户开启的进程

xkill

哪里关不掉点哪里

主要用于停止图形化(GUI)程序

进程优先级

NI nice

数字表示 : -20-19 数字越小 , 等级越高

ps -le | grep ping <== 查看 ping 的优先级

指定优先级

nice -n 3 ping 172.0.0.1

普通用户不能指定比 0 小的优先级 , root 用户随意

普通用户只能做贡献,上帝随意设置优先级

调整优先级

renice -n [-20-19] [pid] <== 调整优先级

root 可以升高也可降低nice值,代表可以设置优先级更低可以设置优先级更高。

普通用户只能升高nice值,代表只能降低优先级。

[root@rhel6 ~]#nice -n 3 ping 172.25.0.10
[root@rhel6 ~]#nice -n 5 ping 172.25.0.10
[root@rhel6 ~]#ps -le|grep ping
4 S     0 26613 26536  0  83   3 - 25812 skb_re pts/1    00:00:00 ping
4 S     0 26614 26567  0  85   5 - 25812 skb_re pts/2    00:00:00 ping
[root@rhel6 ~]#renice -n -1 26613
26613: old priority 3, new priority -1
[root@rhel6 ~]#ps -le|grep ping
4 S     0 26613 26536  0  79  -1 - 25812 skb_re pts/1    00:00:00 ping
4 S     0 26614 26567  0  85   5 - 25812 skb_re pts/2    00:00:00 ping

前后台作业

  • & 在创建进程的过程中 , 将前台作业放置到后台的方法 ,在命令后面加上 &
  • jobs 查看后台进程
  • fg 将后台作业调用到前台
  • ctrl+z 将已经触发的前台作业调到后台 , 后台作业暂停
  • bg 让后台作业执行
[root@rhel6 ~]#ping 172.25.0.11 >/dev/null &
[1] 26712
[root@rhel6 ~]#ping 172.25.0.10 >/dev/null &
[2] 26713
[#13#root@rhel6 ~]#jobs
[1]- Running
ping 172.25.0.11 > /dev/null &
[2]+ Running
ping 172.25.0.10 > /dev/null &
[root@rhel6 ~]#fg 2
ping 172.25.0.10 > /dev/null
^Z
[2]+ Stopped
ping 172.25.0.10 > /dev/null
[root@rhel6 ~]#bg 2
[2]+ ping 172.25.0.10 > /dev/null &
[root@rhel6 ~]#ps -ef|grep ping
root 26712 26567 0 18:16 pts/2 00:00:00 ping 172.25.0.11
root 26713 26567 0 18:16 pts/2 00:00:00 ping 172.25.0.10
root 26717 26567 0 18:17 pts/2 00:00:00 grep ping
[root@rhel6 ~]#kill 26712
[root@rhel6 ~]#jobs
[1]- Terminated
ping 172.25.0.11 > /dev/null
[2]+ Running
ping 172.25.0.10 > /dev/null &
[root@rhel6 ~]#kill 26713
[root@rhel6 ~]#jobs
[2]+ Terminated
ping 172.25.0.10 > /dev/null
[#21#root@rhel6 ~]#jobs

进程管理课后作业

进程管理

  1. 关于父进程和子进程的实验:
    打开一个终端登陆 ssh root@rhel7-fN 进入输入密码的状态,先不输入密码,查看进程;输入

    密码后再查看进程。

rhel7
[root@rhel7 ~]# ps -ef|grep bash
root       642     1  0 02:46 ?        00:00:00 /bin/bash /usr/sbin/ksmtuned
root      7844  7839  1 06:29 pts/0    00:00:00 -bash
[root@rhel7 ~]# ps -ef|grep ssh
root      1261     1  0 02:46 ?        00:00:00 /usr/sbin/sshd -D
root      7839  1261  0 06:29 ?        00:00:00 sshd: root@pts/0
root      7892  1261  0 06:29 ?        00:00:00 sshd: root [priv]
sshd      7893  7892  0 06:29 ?        00:00:00 sshd: root [net]
root      7906  7844  0 06:30 pts/0    00:00:00 grep --color=auto ssh
[root@rhel7 ~]# ps -ef|grep bash
root       642     1  0 02:46 ?        00:00:00 /bin/bash /usr/sbin/ksmtuned
root      7844  7839  0 06:29 pts/0    00:00:00 -bash
root      7915  7892  0 06:30 pts/1    00:00:00 -bash
root      7957  7844  0 06:30 pts/0    00:00:00 grep --color=auto bash
[root@rhel7 ~]# ps -ef|grep 7892
root      7892  1261  0 06:29 ?        00:00:00 sshd: root@pts/1
root      7915  7892  0 06:30 pts/1    00:00:00 -bash
[root@rhel7 ~]# ps -ef|grep 1261
root      1261     1  0 02:46 ?        00:00:00 /usr/sbin/sshd -D
root      7839  1261  0 06:29 ?        00:00:00 sshd: root@pts/0
root      7892  1261  0 06:29 ?        00:00:00 sshd: root@pts/1
[root@rhel7 ~]# ps -ef|grep 1|head -n 1
root         1     0  0 02:46 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 20


rhel6
[root@rhel6 ~]#ps -ef|grep ssh
root      1421     1  0 15:56 ?        00:00:00 /usr/sbin/sshd
root     26564  1421  0 17:36 ?        00:00:00 sshd: root@pts/2
root     26750  1421  0 18:25 ?        00:00:00 sshd: root@pts/3
root     26829 26803  0 18:29 pts/3    00:00:00 ssh root@172.25.0.10
root     26848 26567  0 18:37 pts/2    00:00:00 grep ssh
[root@rhel6 ~]#ps -ef|grep ssh
root      1421     1  0 15:56 ?        00:00:00 /usr/sbin/sshd
root     26564  1421  0 17:36 ?        00:00:00 sshd: root@pts/2
root     26750  1421  0 18:25 ?        00:00:00 sshd: root@pts/3
root     26829 26803  0 18:29 pts/3    00:00:00 ssh root@172.25.0.10
root     26849  1421  0 18:37 ?        00:00:00 sshd: [accepted]
sshd     26850 26849  0 18:37 ?        00:00:00 sshd: [net]      
root     26852 26567  0 18:37 pts/2    00:00:00 grep ssh
[root@rhel6 ~]#ps -ef|grep ssh
root      1421     1  0 15:56 ?        00:00:00 /usr/sbin/sshd
root     26564  1421  0 17:36 ?        00:00:00 sshd: root@pts/2
root     26750  1421  0 18:25 ?        00:00:00 sshd: root@pts/3
root     26829 26803  0 18:29 pts/3    00:00:00 ssh root@172.25.0.10
root     26849  1421  1 18:37 ?        00:00:00 sshd: root@pts/0
root     26874 26567  0 18:38 pts/2    00:00:00 grep ssh
[root@rhel6 ~]#ps -ef|grep 1421
root      1421     1  0 15:56 ?        00:00:00 /usr/sbin/sshd
root     26564  1421  0 17:36 ?        00:00:00 sshd: root@pts/2
root     26750  1421  0 18:25 ?        00:00:00 sshd: root@pts/3
root     26849  1421  0 18:37 ?        00:00:00 sshd: root@pts/0
root     26877 26567  0 18:38 pts/2    00:00:00 grep 1421
[root@rhel6 ~]#ps -ef|grep 1|head -n 1
root         1     0  0 15:55 ?        00:00:01 /sbin/init
  1. 创建多个vi 进程,并使其运行在系统后台,设置vi 后台进程的优先级(nice)值,分别为1、5、15、17,并随后将其统一修改为18。
  2. 观察top命令的显示信息,找出当前占用cpu、内存、I/O资源最多的进程号和进程名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/373843.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EasyExcel分页上传数据

EasyExcel分页上传数据 一、实例 controller上传入口 PostMapping("/upload")ResponseBodyLog(title "导入工单", businessType BusinessType.IMPORT)public AjaxResult uploadFile(HttpServletRequest request, MultipartFile files) throws Exceptio…

【cmu15445c++入门】(6)c++的迭代器

一、迭代器 C 迭代器是指向容器内元素的对象。它们可用于循环访问该容器的对象。我们知道迭代器的一个示例是指针。指针可用于循环访问 C 样式数组. 二、代码 自己实现一个迭代器 // C iterators are objects that point to an element inside a container. // They can be…

*s是什么意思

&s是地址&#xff0c;*是指针&#xff0c;*&s是指指向&s地址的指针&#xff1b; j *&s 就是 j s的意思。 例如&#xff1a;readRawData( (char *)& rowCount, sizeof(qint16)); //读取文本流中的行数到rowCount、列数到colCount qint16 rowCount, col…

BVH动画绑骨蒙皮并在Unity上展示

文章目录 Blender绑定骨骼Blender蒙皮Blender中导入bvh文件将FBX导入Unity Blender绑定骨骼 先左上角红框进入model模式&#xff0c;选中要绑定的模型&#xff0c;然后进入Edit模式把骨骼和关节对齐。 &#xff08;选中骨骼&#xff0c;G移动&#xff0c;R旋转&#xff09; 为…

如何进行游戏服务器的负载均衡和扩展性设计?

​在进行游戏服务器的负载均衡和扩展性设计时&#xff0c;需要考虑多个方面&#xff0c;以确保服务器的稳定性和可扩展性。以下是一些关键的步骤和考虑因素&#xff1a; 负载均衡的需求分析 在进行负载均衡设计之前&#xff0c;需要深入了解游戏服务器的负载特性和需求。这包括…

牛客“迎新春,过大年”多校程序设计竞赛A题

题目描述&#xff1a; 这里有个小trick 当时也看到数据范围的问题了 n 是 1 e 6 ∑ i 1 n a [ i ] < 5 e 7 n是1e6 \quad \sum_{i1}^na[i]<5e7 n是1e6∑i1n​a[i]<5e7 我们考虑不同的数 1 2 . . . k − 1 k 1 \quad 2 \quad ... k-1 \quad k 12...k−1k s u m …

ChatGPT论文指南|ChatGPT论文写作过程中6个润色与查重提示词

论文完成初稿之后&#xff0c;一般情况下&#xff0c;宝子们还需要找专家给我们提出评审意见。找专家评审其实并不容易&#xff0c;即使对老师来说&#xff0c;找人评审论文也是一件苦活。我们这个时候可以通过文字提示让 ChatGPT充当我们的评审专家&#xff0c;为论文提出问题…

车位检测,YOLOV8,OPENCV调用

车位检测YOLOV8NANO,opencv调用 车位检测&#xff0c;YOLOV8NANO&#xff0c;训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV的DNN调用&#xff0c;支持C,PYTHON,ANDROID

macbookpro和macbookair的区别?cleanmymac 怎么清理mac空间

苹果mac air和pro区别有&#xff1a;1、air采用了轻薄的设计&#xff0c;重量相对较轻&#xff0c;便于携带&#xff0c;而pro更加注重性能&#xff0c;所以比较重&#xff1b;2、air通常搭载较低功耗的处理器内存和存储容量相对较小&#xff0c;而pro配备了更强大的处理器、更…

HarmonyOS 鸿蒙应用开发(九、还是蓝海,如何贡献第三方库)

快来共享第三方库吧&#xff0c;不但可以通过分享自己的成果&#xff0c;可以获得来自全球开发者的技术反馈和建议&#xff0c;提升自身技术能力&#xff0c;还有助于提高个人或团队在开源社区中的知名度和影响力。在流量时代和粉丝经济时代&#xff0c;获得曝光度和流量密码。…

HarmonyOS鸿蒙ArkTS证件照生成模板(适合二次开发,全套源码版)

预览效果 部分代码 开发语言 HarmonyOS 鸿蒙 ArkTS语言 &#xff08;Stage模型&#xff09; 备注 一键生成&#xff0c;自带证件照数集&#xff0c; 为开发者带来二次开发和学习体验&#xff0c; 在这祝福开发者们使用愉快。 使用方法 下载后通过DevEco Studio开发工…

腾讯云游戏服务器配置有哪些?

2024年更新腾讯云游戏联机服务器配置价格表&#xff0c;可用于搭建幻兽帕鲁、雾锁王国等游戏服务器&#xff0c;游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置&#xff0c;可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

软考21-上午题-数组、矩阵

数组&#xff1a;一组地址连续的空间。 数组是定长线性表在维数上的扩展&#xff0c;即&#xff0c;线性表中的元素又是一个线性表。 一、数组 数组的特点&#xff1a; 数组数目固定&#xff0c;一旦定义了数组结构&#xff0c;不再有元素个数的增减变化。因此&#xff0c;数…

寒假作业-day4

1>请编程实现哈希表的创建存储数组{12,24,234,234,23,234,23}&#xff0c;输入key查找的值&#xff0c;实现查找功能。 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> typedef int datatype; type…

解决Python xlwings报错AttributeError ‘NoneType‘ object has no attribute apps

一、问题背景 今天&#xff0c;遇到了一个问题&#xff1a;以前调试好的python使用xlwings操作wps表格的脚本突然不能运行了&#xff0c;遇到了很多莫名问题&#xff0c;下面记录分享下&#xff1a; 开始报错如下&#xff1a; D:\PycharmProjects\tiku\venv\Scripts\python.e…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏11(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言选中效果 快捷栏显示对应的手臂工具源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中&#xff0c;我们将探索如何制作…

深度学习缝模块怎么描述创新点?(附写作模板+涨点论文)

深度学习缝了别的模块怎么描述创新点、怎么讲故事写成一篇优质论文&#xff1f; 简单框架&#xff1a;描述自己这个领域&#xff0c;该领域出现了什么问题&#xff0c;你用了什么方法解决&#xff0c;你的方法有了多大的性能提升。 其中&#xff0c;重点讲清楚这两点&#xf…

【Qt Design】界面介绍

文章目录 前言Widget Box&#xff08;工具箱&#xff09;对象查看器Qt Design属性编译器sizePolicy内容 信号/槽编辑器资源浏览器ui文件 前言 Widget Box&#xff08;工具箱&#xff09; 提供很多控件 对象查看器 对象查看区域&#xff0c;可以查看主窗口放置对象的列表 …

力扣面试题 05.03. 翻转数位(前、后缀和)

Problem: 面试题 05.03. 翻转数位 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.将十进制数转换为二进制数&#xff08;每次按位与1求与&#xff0c;并且右移&#xff09;&#xff1b; 2.依次求取二进制数中每一位的前缀1的数量和&#xff0c;和后缀1的数量和…

MongoDB的操作和理解

什么是MongoDB? MongoDB&#xff1a;基于分布式文件存储的数据库由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。 Mo…