Linux系统进程管理及命令操作

标签: linux

进程的概念

  1. 进程是什么
    进程是已启动的可执行程序的运行实例,进程有以下组成部分:
    • 已分配内存的地址空间;
    • 安全属性,包括所有权凭据和特权;
    • 程序代码的一个或多个执行线程;
    • 进程状态。
    程序: 二进制文件,静态 /usr/bin/passwd ,/usr/sbin/useradd
    进程: 是程序运行的过程, 动态,有生命周期及运行状态。

  2. 进程的生命周期
    父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
    每个新进程分配一个,唯一的进程 ID (PID),满足跟踪安全性之需。
    任何进程都可以创建子进程。
    所有进程都是第一个系统进程的后代:
    Centos5/6系统进程: init
    Centos7系统进程: systemd

  3. 进程状态产生的原因
    在多任务处理操作系统中,每个CPU(或核心)
    在一个时间点上只能处理一个进程。
    在进程运行时,它对CPU 时间和资源分配的要求会不断变化,
    从而为进程分配一个状态,它随着环境要求而改变。

  4. 进程的状态
    在这里插入图片描述

进程的管理

1.进程管理的目标

  • PID,PPID
  • 当前的进程状态
  • 内存的分配情况
  • CPU和已花费的实际时间
  • 用户UID,它决定进程的特权
  • 进程名称
  1. 静态查看进程
  • PS:precess status 进程 状态
[[email protected] ~]# ps  aux  |head -2
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  1.7  0.2 193772  2624 ?        Ss   18:22   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

user:运行程序的用户账户名
PID:进程的序号,id,身份证号
%CPU:进程的cpu消耗百分比
%MEM:进程的内存消耗百分比
VSZ:虚拟内存占用大小
RSS:实际占用内存大小
TTY:进程开启的终端
STAT:当前进程的状态
START:进程开始的时间
TIME:进程CPU使用时间
COMMAND:执行命令的名字,进程文件  进程名  
  • 进程的排序
    语法:ps aux --sort-%cpu
    以CPU占比降序排列(减号是降序)
[[email protected] ~]#  ps aux --sort -%cpu
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       2123  1.7 18.6 3035224 185356 ?      Sl   18:23   0:24 /usr/bin/gnome-shell
root       1322  0.6  5.2 341880 52004 tty1     Ssl+ 18:22   0:09 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /r
root       2577  0.3  2.2 697884 22488 ?        Sl   18:23   0:04 /usr/libexec/gnome-terminal-server
root        726  0.2  0.1 324680  1868 ?        Ssl  18:22   0:02 /usr/bin/vmtoolsd
root       2388  0.2  0.9 640756  9760 ?        Sl   18:23   0:02 /usr/bin/vmtoolsd -n vmusr
root          1  0.1  0.4 193772  4424 ?        Ss   18:22   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root        129  0.1  0.0      0     0 ?        S    18:22   0:01 [kworker/0:3]
root        768  0.1  0.0  90564   300 ?        Ss   18:22   0:01 /sbin/rngd -f

  • 进程的父子关系
    语法:ps -ef
    观察PID PPID
[[email protected] ~]# ps  -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 18:22 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 18:22 ?        00:00:00 [kthreadd]
root          4      2  0 18:22 ?        00:00:00 [kworker/0:0H]
root          6      2  0 18:22 ?        00:00:00 [ksoftirqd/0]
root          7      2  0 18:22 ?        00:00:00 [migration/0]
root          8      2  0 18:22 ?        00:00:00 [rcu_bh]
root          9      2  0 18:22 ?        00:00:01 [rcu_sched]

  • 自定义显示字段
    语法:ps axo
[[email protected] ~]# ps axo user,pid,ppid,%mem,command |head -3 
USER        PID   PPID %MEM COMMAND
root          1      0  0.4 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0.0 [kthreadd]
  1. 动态查看进程top
  • top 命令用于查看进程动态,即进程使用系统资源的情况
top - 11:45:08 up 18:54,  4 users,  load average: 0.05, 0.05, 0.05
Tasks: 176 total,   1 running, 175 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3865520 total,  1100000 free,   580268 used,  2185252 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  2917828 avail Mem 

第一行:在这里插入图片描述
第二行:
在这里插入图片描述
第三行:在这里插入图片描述
第四行:
在这里插入图片描述
第五行:在这里插入图片描述

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 

PID ,USER, %CPU, %MEM,TIME, COMMAND,上面有介绍此处省略。
VIRT:virtual memory usage 虚拟内存 ( 需要这些内存,但并没有占满。)
RES:resident memory usage 常驻内存 (用了多少内存)
SHR:shared memory 共享内存 (除了自身进程的共享内存,也包括其他进程的共享内存)

  • top内部常用指令

h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
< 向前
> 向后
z 彩色,Z设置彩色,使用数字调整
*

  • top技巧
动态查看进程 top,像windows的任务管理器
[[email protected] ~]# top          //回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
[[email protected] ~]# top -d 1   //每1秒刷新。
[[email protected] ~]# top -d 1 -p 10126 查看指定进程的动态信息
[[email protected] ~]# top -d 1 -p 10126,1    查看10126和1号进程
  1. 使用信号控制进程kill
  • 信号的种类
    语法:kill - 数字
给进程发送信号(kill -l列出所有支持的信号)
[[email protected] ~]# kill -l 
编号 信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断Ctrl+C
3) SIGQUIT 键盘退出Ctrl+\,类似SIGINT
9) SIGKILL 强制终止,无条件
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
  1. 进程的优先级nice
  • 什么叫进程的优先级
    Linux 进程调度及多任务
    每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
  • 优先级范围和特性
    在这里插入图片描述
    在top中显示的优先级有两个,PR值和nice值

NI: 实际nice值
PR(+20): 将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39

  • 优先级的特性
    nice 值越高: 表示优先级越低,例如+19
    nice 值越低: 表示优先级越高,例如-20
  • 查看进程的nice级别
[[email protected] ~]# ps axo pid,command,nice,cls --sort=-nice
  PID COMMAND                      NI CLS
   32 [khugepaged]                 19  TS
  747 /usr/sbin/alsactl -s -n 19   19  TS
 2390 /usr/libexec/tracker-extrac  19  TS
 2391 /usr/libexec/tracker-miner-  19  TS
 2392 /usr/libexec/tracker-miner-   - IDL
 2404 /usr/libexec/tracker-miner-   - IDL
   31 [ksmd]                        5  TS
  779 /usr/libexec/rtkit-daemon     1  TS
    1 /usr/lib/systemd/systemd --   0  TS
    2 [kthreadd]                    0  TS
    6 [ksoftirqd/0]                 0  TS
    7 [migration/0]                 -  FF

cls表示显示策略列
TS 表示该进程使用的调度策略为SCHED_OTHER
FF表示高级进程first in first out

  • 启动具有不同nice级别的进程
    启动进程时,通常会继承父进程的 nice级别,默认为0。观察两个程序的不同nice值

启动不同nice

[[email protected] ~]# nice -n -5 sleep 6000 &
[1] 2220
[[email protected] ~]# nice -n -10 sleep 7000 &
[2] 2229
[[email protected] ~]# ps axo command,pid,nice | grep sleep
sleep 6000                    2220  -5
sleep 7000                    2229 -10
grep --color=auto sleep       2233   0
  • 更改现有进程的nice级别
[[email protected] ~]# sleep 7000 &
[2] 2669
[email protected] ~]# renice -20 2669
2669
(进程 ID) 旧优先级为 0,新优先级为 -20

作业控制jobs

  • 作业控制是一个命令行功能,也叫后台运行,主要有两个关键词。

foreground:前台进程:是在终端中运行的命令,占领终端。

background:后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。

  • 后台控制示例
    看一下占领前台的现象
[[email protected] ~]# sleep 2000

运行一个程序,当前终端无法输入,占领前台的现象,
大部分命令行输入已经无效。

运行后台程序

[[email protected] ~]# sleep 3000 &

ps查询所有程序

[[email protected] ~]# ps aux |grep sleep
root 8895 0.0 0.0 100900 556 pts/0 S 12:13 0:00 sleep 3000

jobs查看后台进程

[[email protected] ~]# jobs
[1]- Running sleep 3000 &

调动后台程序至前台

[[email protected] ~]# fg  1 //将作业1调回到前台

消灭后台进程

[[email protected] ~]# kill  %1
注意,“kill 1”   和   “kill   %1”  不同,
前者终止PID为1的进程,
后者杀死作业序号为1的后台程序。

& :后台运行程序
jobs: 查询后台
kill %1 : 停止后台进程

虚拟文件系统proc

  • 虚拟文件系统:采集服务器自身 内核、进程运行的状态信息
  • CPU /proc/cpuinfo
[[email protected] ~]# cat   /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 60
model name	: Intel(R) Core(TM) i5-4200H CPU @ 2.80GHz
stepping	: 3
microcode	: 0x24
cpu MHz		: 2793.542
cache size	: 3072 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat
bogomips	: 5587.08
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
  • 内存 /proc/meminfo
  • 内核 /proc/cmdline
[[email protected] ~]# cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.10.0-1062.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8

cpuinfo:CPU的硬件信息 (型号, 家族, 缓存大小等)
meminfo:物理内存、交换空间等的信息,系统内存占用情况,对应df命令
cmdline:系统启动时输入给内核命令行参数

版权声明:本文为m0_48654420原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_48654420/article/details/107671372

智能推荐

android问题记录

Error: Cannot fit requested classes in a single dex file (# methods: 80441 > 65536) 解决办法: gradle文件的defaultConfig默认配置里面增加...

ROS机器人Diego 1# 利用人工智能 风格迁移技术拍摄不同画风的视频

风格迁移,就是将一种图片的风格迁移到其他图片上,改变其他图片的风格,很好玩的一个人工自能模型,github上已经有很多实现的方法,本文参考https://github.com/hzy46/fast-neural-style-tensorflow 的算法,利用Diego1#的平台实现实时视频的风格转换,先上两张图看效果: 是不是很酷呢,其实实现方法和上篇博文中的原理是一样的,只是把人工智能的算法包装...

数据分析学习总结笔记17:文本分析入门案例实战

文章目录 1 数据准备 2 分词 3 统计词频 4 词云 5 提取特征 6 用sklearn进行训练 1 数据准备 数据样例如下, 数据总量为7.7万+: 本节通过一个实战的例子来展示文本分析的最简单流程。首先设定因变量为原始数据中的"评分"。自变量是"评价内容",这里根据评价内容提取TF-IDF特征。之后,通过评价内容的特征建模预测下整体评分。 以上只是最...

LeetCode 150. 逆波兰表达式求值

题目描述 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。 换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 输入:[“2”, “1”, “+”, “3&r...

并查集原理及应用

并查集 树形的数据结构,每个集合有其代表节点,代表节点相同的元素属于同一集合。 find:通过查找节点的代表节点,判断节点所属集合。 union:合并两集合,小集合合并到大集合,使用大集合的代表节点。 在find的递归过程中,让路过节点的父节点直接赋值为代表节点,节省下次查找时间,如图所示。 计算岛的个数 遍历二维数组,遇到1时就将所相连的1都改为2,看看遇到多少次1,就是岛的数量。改数时使用回溯...

猜你喜欢

linux nutch1.0安装配置

1,下载nutch1.0 下载地址:http://archive.apache.org/dist/nutch/,下载这个文件nutch-1.0.tar.gz   2,上传到服务器 上传位置:/home/www/,解压nutch-1.0.tar.gz #tar -xvf nutch-1.0.tar.gz 重命名 #mv nutch-1.0 nutch   3,修改配置文...

如何搭建自己的博客?附加美化

如何搭建自己的blog?附加美化 前言: 之前在腾讯云以学生优惠租了一年的服务器,还买了一年的域名,忽然觉得不能闲置着域名,所以搭建了个博客,过程也遇到了很多的问题,望在此阐述,予以他人帮助,祝好~ 准备工作:使用Xshell连接上Linux服务器,我的是centos系统,方便进行操作。使用Xftp连接上Linux服务器,方便传输文件。 安装apache服务器:yum install httpd ...

rabbitmq五种模式详解(含实现代码)

1.简单模式 当生产端发送消息到交换机,交换机根据消息属性发送到队列,消费者监听绑定队列实现消息的接收和消费逻辑编写.简单模式下,强调的一个队列queue只被一个消费者监听消费. 1.1 结构   生产者:生成消息,发送到交换机 交换机:根据消息属性,将消息发送给队列 消费者:监听这个队列,发现消息后,获取消息执行消费逻辑 1.2应用场景 常见的应用场景就是一发,一接的结构 例如: 手机...

AndroidStudio 常用配置

1. 设置主题&左侧导航栏字体 AndroidStudio->Preferences(下同) 2. 设置字体大小 3. 取消竖线 间距设置大些 4. 控制台字体大小 5. 修改LogCat颜色 LogCat 色值 Verbose BBBBBB Debug 48BB31 Info 0070BB Warn BBBB23 Error FF0006 Assert 8F0005 5. 修改变量...

Kafka Producer

1.Producer简介 kafakclients链接 2.构造Producer 2.1简单构造 1.构建配置文件 首先第一步是进行用户鉴权的操作(如果Kafka集群需要的话) 然后需要配置的三个主要参数 broker的地址 key、value的序列化 2.构建生产者发送消息 首先我们应该杜绝 fire and forget的操作这样可能会导致消息丢失。 同步发送 这样发送通过对异常的处理可以消息...