IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux学习06--进程 -> 正文阅读

[系统运维]Linux学习06--进程

  • 程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;
  • 进程 (process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。

1.子进程与父进程

子进程得到父进程东西的拷贝,不是它们本身。
父进程和子进程拥有独立的地址空间和PID参数
在这里插入图片描述

在这里插入图片描述

子进程是由父进程衍生出来的进程
父进程 的 PID 与子进程的 PPID(父进程ID)相同啊, 因为第二个 进程 是由第一个进程所产生的;
在这里插入图片描述

注释:
若想消除一个子进程必须要把父进程消除,否则父进程会一直生成子进程。

2.工作管理(job control)

  • 前景(可视窗口):你可以控制与下达指令的环境
  • 背景(后台):你可以自行运作的工作,无法使用 ctrl+c终止,可以使用bg/fg呼叫工作

注意
-背景中执行的工作不能等待,所以不能由输入的命令,否则不能执行

直接将指令丢到背景中执行的 &

cp file1 file2 & 

将当前的复制工作放到背景(后台中)执行
执行完毕后会有成功消息

将『目前』的工作丢到背景中『暂停』:[ctrl]-z

举例:

[root@admin world]# vi test

[1]+  已停止               vi test
在vi编辑界面中使用ctrl+Z
将vi进程暂停

3.相关命令

观察目前的背景工作状态: jobs
语法:jobs [-lrs]

选项与参数:
-l :除了列出 job number 与指令串之外,同时列出 PID 的号码;
-r :仅列出正在背景 run 的工作;
-s :仅列出正在背景当中暂停 (stop) 的工作。

举例:
(1)查看当前所有工作

[root@admin world]# jobs -l
[1]  33851 停止 (信号)         top
[2]  34291 停止                  ./demo09.sh
[3]  34338 停止                  ./demo09.sh
[4]- 34339 停止                  ./demo09.sh
[5]+ 40200 停止                  vi test

+ - 号解释
+号代表最近被放入背景中的工作
-号代表最近第二个被放入背景中的工作

将背景工作拿到前景来处理:fg
语法:fg %jobnumber

选项和参数:
%jobnumber:为工作的ID

范例:
使用jobs -l查看工作的进程之后,再将工作取出

[root@admin world]# jobs -l
[1]  33851 停止 (信号)         top
[2]  34291 停止                  ./demo09.sh
[3]  34338 停止                  ./demo09.sh
[4]- 34339 停止                  ./demo09.sh
[5]+ 40200 停止                  vi test

[root@admin world]# fg %5
vi test

vi编辑器中:
* * * * * wall Bunny
This is a test10 2
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                                                                                                          
~                    

若直接使用fg则会把[5]+ 带有加号的ID直接取出

让工作在背景下的状态变成运作中: bg
将背景下 Stopped(停止)的工作变为Running(运行中)

举例:
查找所有文件:

[root@admin world]#find /
运行时按下ctrl+z暂停
[root@admin world]# jobs -l
[1]  33851 停止 (信号)         top
[2]  34291 停止                  ./demo09.sh
[3]  34338 停止                  ./demo09.sh
[4]  34339 停止                  ./demo09.sh
[5]- 40200 停止                  vi test
[6]+ 40361 停止                  find /
[root@admin world]#bg %6
[root@admin world]# jobs -l
[1]  33851 停止 (信号)         top
[2]  34291 停止                  ./demo09.sh
[3]  34338 停止                  ./demo09.sh
[4]  34339 停止                  ./demo09.sh
[5]- 40200 停止                  vi test
[6]+ 40361 运行                  find /

管理背景当中的工作: kill
语法:kill -signal %jobnumber

选项和参数:
-l 显示kill后能接的signal有哪些
signal:
-1:重新获取一次参数的配置文件
-2:类似于在前台由键盘输入Ctrl+C 中断当前运行的进程
-9:强制删除一个工作(直接删除)
-15:以正常的方式终止一项工作(正常流程)

举例:
使用kill -9强制删除

[root@admin DemoTest]# kill -9 %1

[1]-  已停止               vi demotest01
[root@admin DemoTest]# ll
总用量 0
[1]-  已杀死               vi demotest01

使用kill -15正常流程删除进程:

[root@admin DemoTest]# kill -15 %2
[root@admin DemoTest]# ll
总用量 0
[2]+  已终止               find /

脱机管理工作: nohup
语法:

nohup [指令和参数]
nohup [指令和参数] &

nohup [指令和参数]在终端机前台工作
nohup [指令和参数] &在终端机后台工作

4.进程的观察

ps:将某个时间点的进程运作情况撷取下来
相关参数:
-A:所有process均显示出来,与-e具有同样的效用;
-a:不与terminal(终端)有关的所有process
-u:与使用者(effective user)有关的process
x:列出完整信息,与a一起使用

输出格式的规划:
-l:较长、较详细的将PID信息列出
-j:工作的格式(job format)
-f:做一个更完整的输出

举例一:
ps -l :仅仅观察自己当前的进程
将与此次登入的PID相关的进程显示出来(只与自己的bash有关)

[root@admin DemoTest]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1831   1671  0  80   0 - 29299 do_wai pts/0    00:00:00 bash
0 R     0  10544   1831  0  80   0 - 38331 -      pts/0    00:00:00 ps

字段解释
F:代表此进程的权限,4表示root管理员;1表示此进程只能进行复制而不能实际执行
S:代表这个进程的状态(status)
主要的状态为:

  • R(Running):该程序正在运作中
  • S(Sleep):该程序正在睡眠中,可以被唤醒
  • D:不可唤醒的睡眠状态
  • T:停止状态
  • Z:Zombie僵尸状态,进程已经终止但无法移至内存外

UID/PID/PPID:
UID:此进程的使用者ID
PID:进程的PID号码
PPID:进程的父进程PID号码

C代表:CPU使用率,单位为百分比
PRI/NI:priority/nice缩写,代表进程的优先级,数值越小,越快被CPU执行
ADDR 、SZ、WCHAN:都与内存有关

  • ADDR:指出内存在哪个部分,正在running的进程显示[-]
  • SZ:代表此进程用掉多少内存
  • WCHAN:看进程是否在运作中,[-]为正在运作

TTY:登入者的终端机位置
TIME:使用CPU的时间
CMD:此进程触发的指令

举例二:列出目前所有的正在内存当中的进程

[root@admin DemoTest]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193844  7004 ?        Ss   19:27   0:08 /usr/lib/systemd/systemd --switched-root 
root          2  0.0  0.0      0     0 ?        S    19:27   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   19:27   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    19:27   0:00 [ksoftirqd/0]
root          7  0.0  0.0      0     0 ?        S    19:27   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    19:27   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    19:27   0:03 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   19:27   0:00 [lru-add-drain]
root         11  0.0  0.0      0     0 ?        S    19:27   0:00 [watchdog/0]

举例三:以举例一的方法,显示所有进程
ps -lA:

[root@admin DemoTest]# ps -lA
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0      1      0  0  80   0 - 48461 ep_pol ?        00:00:08 systemd
1 S     0      2      0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0      4      2  0  60 -20 -     0 worker ?        00:00:00 kworker/0:0H
1 S     0      6      2  0  80   0 -     0 smpboo ?        00:00:00 ksoftirqd/0
1 S     0      7      2  0 -40   - -     0 smpboo ?        00:00:00 migration/0
1 S     0      8      2  0  80   0 -     0 rcu_gp ?        00:00:00 rcu_bh
1 S     0      9      2  0  80   0 -     0 rcu_gp ?        00:00:03 rcu_sched
1 S     0     10      2  0  60 -20 -     0 rescue ?        00:00:00 lru-add-drain

top:观察进程的动态变化
语法:top [-d 数字] | top [-bnp]
选项和参数:
-d:后面可以接秒数,整个画面更新的秒数
-b:以批次的执行方式执行top
-n:与-b搭配,指要出现几次top的输出结果
-p:指定某个PID来进行观测
在top执行过程中可以执行的指令:

  • ?:显示在top中可以输入的案件指令
  • P:以CPU使用资源来显示
  • M:以Memory的资源排序显示
  • N:以PID来排序
  • T:由改进程使用CPU的时间长度来排序
  • q:离开top
 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                              
     9 root      20   0       0      0      0 S   0.2  0.0   0:04.46 rcu_sched                            
   753 root      20   0  295564   5292   4036 S   0.2  0.3   0:20.79 vmtoolsd                             
  2119 gdm       20   0  632028  15012   9672 S   0.2  0.8   0:00.17 gsd-power                            
     1 root      20   0  193844   7004   4208 S   0.0  0.4   0:09.12 systemd                              
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.04 kthreadd                             
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                         
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.23 ksoftirqd/0                          
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.09 migration/0                          
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                   

PID :每个 process 的 ID 啦!
USER:该 process 所属的使用者;
PR :Priority 的简写,进程的优先执行顺序,越小越早被执行;
NI :Nice 的简写,与 Priority 有关,也是越小越早被执行;
%CPU:CPU 的使用率;
%MEM:内存的使用率;
TIME+:CPU 使用时间的累加;

pstree:显示进程之间的相关性
语法:pstree [-A|U] [-up]
选项与参数:
-A:各进程之间用ASCII字符来连接
-U :各进程树之间的连接以万国码的字符来连接。在某些终端接口下可能会有错误;
-p :并同时列出每个 process 的 PID;
-u :并同时列出每个 process 的所属账号名称

killall:利用下达指令的名称来进行删除(关闭服务)
语法: killall [-iIe] [command name]
选项与参数:
-i:是interactive交互式,若要删除时会出现提示字符
-e:exact(精确地)后面接的command name要一致
-I:指令名称

举例:

[root@admin DemoTest]# killall -i bash
杀死 bash(1831) ? (y/N) n
bash: no process found

5.CPU执行次序

Priority 与 Nice 值

[root@study ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 
4 S 0 14836 14835 0 90 10 - 29068 wait pts/0 00:00:00 bash 
0 R 0 19848 14836 0 90 10 - 30319 - pts/0 00:00:00 ps 

PRI值越低代表越优先执行
PRI是由核心动态调整的,用户无法直接调整PRI

PRI与NI的关系:
PRI(new) = PRI(old) + nice

当 nice 值为负值时,那么该进程就会降低 PRI 值,亦即会变的较优先被处理
管理员:

  • nice可以调整的值为-20~19;
  • root可以随意调整自己或者其他人的Nice值,范围为-20~19

一般用户

  • 仅可以调整自己的nice值,调整范围为0~19(避免一般用户抢占系统资源)
  • 仅可以把nice值调高,不可以调低

更改nice值

  • 从开始执行程序就立即给予一个特定的 nice 值:用 nice 指令;
  • 调整某个已经存在的 PID 的 nice 值:用 renice 指令。

nice :新执行的指令即给予新的 nice 值
语法: nice [-n 数字] command
选项和参数:
-n:后面接一个数字-20~19

举例:nice创建新的指令进程

[root@admin DemoTest]# nice -n -5 vim demotest02 &
[1] 17459
[root@admin DemoTest]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1831   1671  0  80   0 - 29299 do_wai pts/0    00:00:00 bash
4 T     0  17459   1831  0  75  -5 - 36872 do_sig pts/0    00:00:00 vim
0 R     0  17464   1831  0  80   0 - 38331 -      pts/0    00:00:00 ps

renice :已存在进程的 nice 重新调整
语法:renice [number] PID
选项与参数:
[number]:里输入想要更改的nice值

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:50:23  更:2021-08-11 12:51:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:49:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码