使用c++查看linux服务器某个进程正在使用的内存_Linux 系统管理

a5073eb1b7754efcf735ca6491f99b3d.png

1、进程管理介绍

什么是进程

  • 程序是人使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合
  • 进程是正在执行当中的程序。程序在执行时,执行人的权限和属性、以及程序的代码都会被加载进内存,操作系统给这个进程分配一个 ID 号,我们称为 PID

进程管理的作用

  • 判断服务器健康状态。进程管理最主要的工作就是判断服务器当前运行是否健康,是否需要人为干预。如果服务器的 CPU 占用率、内存占用率过高,就需要人为介入解决问题
  • 查看系统中所有的进程。
  • 杀死进程

2、ps 命令

ps 命令是用来静态显示系统中进程的命令。不过这个命令有些特殊,他的部分命令的选项不能加 『-』如命令:『ps aux』,其中 aux 是选项,但是这个选项不能加入 『-』。这是因为 ps 命令的部分选项需要遵守 BSD 操作系统的格式。

[root@hepingfly 桌面]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.7  0.1  19348  1548 ?        Ss   21:23   0:01 /sbin/init
root          2  0.0  0.0      0     0 ?        S    21:23   0:00 [kthreadd]# USER : 该进程是由哪个用户产生的
# PID :  进程 ID
# %CPU : 该进程占用的 CPU 资源百分比,占用越高,进程越耗费资源
# %MEM : 该进程占用的物理内存百分比,占用越高,进程越耗费资源
# VSZ :  该进程占用的虚拟内存大小,单位是 KB
# RSS :  该进程占用实际物理内存的大小,单位是 KB
# START : 该进程的启动时间
# TIME :该进程占用 CPU 的运算时间
# COMMAND :产生此进程的命令名

3、top 、pstree 命令

top

top [选项]
选项:
-d 秒数 :指定 top 命令每隔几秒更新。默认是 3 秒
-b : 使用批处理模式输出。一般和 "-n" 选项合用,用于把 top 命令重定向到文件中
-n 次数 : 指定 top 命令执行的次数。一般和 "-b" 选项合用
在 top 命令的交互模式当中可以执行的命令:
P :以 CPU 使用率排序,默认就是此项。
M :以内存的使用率排序
top -b -n 1 > top.log
# 让 top 命令只执行一次,然后把结果保存到 top.log 中。这样就能看到所有的进程了

pstree

这个命令的作用就是用进程树的方式展示进程

pstree [选项]
选项:
-p :显示进程的 PID

4、杀死进程

1)、kill 命令

kill [信号] PID

e7637a65c5d357d25f2c23fa0a404469.png

2)、killall 命令

killall [选项] [信号] 进程名
选项:
-i :交互式,询问是否要杀死某个进程
-I :忽略进程名的大小写
killall -9 httpd

3)、pkill 命令

pkill [信号] [选项] 进程名
选项:
-t 终端号 :按照终端号踢出用户
pkill -9 -t pts/1  
# 强制杀死从 pts/1 虚拟终端登录的进程

killall 和 pkill 后面跟的是进程名字,因此他们可以杀死一类进程。

5、工作管理

  • 前台是指当前可以操控和执行命令的这个操作环境,后台是指工作可以自行运行,但是不能直接用 ctrl + c 来终止它,只能使用 fg/bg 来调用工作
  • 当前的登录终端只能管理当前终端的工作,而不能管理其他登录终端的工作。如:tty1 登录的终端是不能管理 tty2 终端中的工作的
  • 放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作。如果把 ls 命令放入后台执行,它很快就会执行完成,我们很难操作它。
  • 放入后台的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行。比如,vi 命令放入后台只能暂停,而不能执行,因为 vi 需要前台输入信息。

如何把命令放入后台:

① 使用 『&』 让命令在后台执行
注意:放入后台执行的命令不能与前台有交互,否则这个命令是不能再后台执行的。
② 在命令执行过程中按 『ctrl + z』快捷键,但是命令在后台是暂停状态
使用这种方法放入后台的命令,就算不和前台有交互,能在后台执行的命令,也是暂停状态。

查看后台的工作:

jobs [-l]
选项:
-l :显示工作的 PID

将后台暂停的工作恢复到前台执行

fg %工作号
参数:
%工作号:%可以省略,但是注意工作号和 PID 的区别

将后台暂停的工作恢复到后台执行

bg %工作号

后台命令脱离登录终端运行

我们已经知道把命令放入后台,只能在当前登录终端执行。如果我是远程管理的服务器,在远程终端中执行了后台命令,这时候我退出登录,这个后台命令还能继续执行吗?答案是不行。这个而后天命令会被终止。但是我们确实需要在远程终端中执行某些命令,该如何执行?
  • 第一种方法是把需要后台执行的命令加入 『/etc/rc.local』 文件,让系统在启动时执行这个后台程序。这种方法的问题是服务器是不能随便重启的
  • 第二种方法是使用系统定时任务,让系统在指定时间执行某个后台命令。这样放入后台的命令与终端无关,是不依赖登录终端的。
  • 最后一种方法是使用 nohup 命令
    • nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确的在后台执行
    • nohup [命令] &

6、系统资源查看

1)、vmstat 命令监控系统资源

vmstat [刷新延时 刷新次数]
[root@hepingfly 桌面]# vmstat 1 3       每秒刷新 1 次,总共刷新 3 次
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st0  0      0 365248  23684 247820    0    0  4087   192  568 1871 11 22 63  4  0	0  0      0 365704  23684 247852    0    0     0     0   55  136  1  1 98  0  0	0  0      0 365704  23684 247852    0    0     0    40   54  126  0  0 100  0  0
  • procs :进程信息字段
    • r :等待运行的进程数,数量越大,系统越繁忙
    • b :不可被唤醒的进程数量。数量越大,系统越繁忙
  • memory :内存信息字段
    • swpd :虚拟内存使用情况,单位是KB
    • free :空闲的内存容量,单位是KB
    • buff :缓冲的内存容量,单位是KB
    • cache :缓存的内存容量,单位是KB
  • swap :交换分区信息字段
    • si :从磁盘中交换到内存中数据的数量,单位是 KB
    • so : 从内存中交换到磁盘中数据的数量,单位是 KB 。这两个数越大,证明数据需要经常在磁盘和内存之间交换,系统性能越差
  • io :磁盘读写信息字段
    • bi :从块设备读入数据的总量,单位是块
    • bo :写到块设备的数据的总量,单位是块。这两个数越大,代表系统 I/O 越繁忙
  • system :系统信息字段
    • in :每秒被中断的进程次数
    • cs :每秒钟进行的事件切换次数。这两个数越大,代表系统与接口设备的通信越繁忙

2)、dmesg 显示开机时内核检测信息

dmesg | grep CPU  # 查看 CPU 信息
dmesg | grep eth0  # 查询第一块网卡信息

3)、free 命令查看内存使用状态

[root@hepingfly 桌面]# free -h total       used       free     shared    buffers     cached
Mem:          980M       635M       345M       3.4M        24M       242M
-/+ buffers/cache:       368M       612M
Swap:         1.0G         0B       1.0G# -/+ buffers/cache:  第一个数:  used - buffers - cached  <==>  635 - 24 -242 = 369
# 第二个数:  free + buffers + cached  <==> 345 + 24 + 242 = 611

4)、查看 cpu 信息

CPU 的主要信息保存在 /proc/cpuinfo 这个文件当中,我们只要查看这个文件,就可以知道 cpu 的相关信息

5)、查看系统与内核相关信息

使用 uname 命令查看内核相关信息

uname [选项]
选项:
-a :查看系统所有相关信息
-r :查看内核版本
-s :查看内核名称
[root@hepingfly 桌面]# uname -a
Linux hepingfly 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@hepingfly 桌面]# uname -r 
2.6.32-642.el6.x86_64

6)、查看当前 Linux 系统的发行版本

lsb_release -a
[root@hepingfly hepingfly]# lsb_release -a
LSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 6.8 (Final)
Release:	6.8
Codename:	Final

7、crontab 使用

每个用户都可以实现自己的 crontab 定时任务,只需要使用这个用户身份执行 crontab -e 命令即可

crontab [选项]
选项:
-e :编辑 crontab 定时任务
-l :查询 crontab 定时任务
-r :删除当前用户所有的 crontab 任务

4ad642c55bfa0aa7547a1914b60aab0d.png

表示时间时,有些特殊符号:

fde32985f32f52ce94d19667f6486bea.png

crontab 注意事项:

  • 六个选项都不能为空,必须填写。如果不确定使用 『* 』代表任意时间
  • crontab 定时任务,最小有效时间是分钟,最大时间范围是月。像 2018 年某时执行,3 点 30 分 30 秒这样的时间都不能识别
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为他们都是以天作为单位,非常容易让管理员混乱
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都是用绝对路径

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小案例:利用Python写个教师常用的点名软件

一、需求&#xff1a; 教师上课常用的点名软件 二、python库安装&#xff1a; openpyxl是Python中用于读写excel文件tkinter是Python中GUI编程非常好用的库&#xff0c;而且是标准库&#xff0c;不需要安装&#xff0c;导入即可使用random库是Python中用于实现随机功能的库&…

python contains类似函数_01--实际工作中,python基础理念和数据处理

1.工作中遇到的python坑1.1 合并文件问题&#xff1a;正常将文件依次读取并append时&#xff0c;莫名出现很多空行。解决&#xff1a;在append前删除空行&#xff1a;data_tmp 1.2 重复数据行问题&#xff1a; append多日文件时&#xff0c;由于人工误操作&#xff0c;容易存在…

小案例:利用Python实现图片上下、左右翻转

一、前言需求&#xff1a; 对图片进行操作&#xff0c;使图片上下、左右翻转 二、函数库&#xff1a; 使用Pillow模块提供的transpose()方法可以让图像翻转&#xff0c;上下翻转&#xff0c;或者左右翻转 三、操作说明&#xff1a; 原图如下&#xff1a; 图片上下翻转代码…

LeetCode 1736. 替换隐藏数字得到的最晚时间

文章目录1. 题目2. 解题1. 题目 给你一个字符串 time &#xff0c;格式为 hh:mm&#xff08;小时&#xff1a;分钟&#xff09;&#xff0c;其中某几位数字被隐藏&#xff08;用 ? 表示&#xff09;。 有效的时间为 00:00 到 23:59 之间的所有时间&#xff0c;包括 00:00 和…

【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)...

目录&#xff1a; 【SSH进阶之路】Struts基本原理 实现简单登录&#xff08;二&#xff09; 【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始&#xff08;三&#xff09; 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径&#xff08…

实用工具:推荐Pycharm常用的几款插件

相信对于不少的Python程序员们都是用Pycharm作为开发时候的IDE来使用的&#xff0c;今天来分享几个好用到爆的Pycharm插件&#xff0c;在安装上之后&#xff0c;你的编程效率、工作效率都能够得到极大地提升。 Pycharm插件安装教程 打开file---settings---plugins&#xff0c…

dataframe 添加一行_R语言Data Frame数据框常用操作

来源 | R友舍Data Frame一般被翻译为数据框&#xff0c;感觉就像是R中的表&#xff0c;由行和列组成&#xff0c;与Matrix不同的是&#xff0c;每个列可以是不同的数据类型&#xff0c;而Matrix是必须相同的。Data Frame每一列有列名&#xff0c;每一行也可以指定行名。如果不指…

LeetCode 1737. 满足三条件之一需改变的最少字符数(计数)

文章目录1. 题目2. 解题1. 题目 给你两个字符串 a 和 b &#xff0c;二者均由小写字母组成。 一步操作中&#xff0c;你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 。 操作的最终目标是满足下列三个条件 之一 &#xff1a; a 中的 每个字母 在字母表中 严格小于 b 中…

oracle对查询结果求和_oracle基础知识分享

原文链接&#xff1a;https://page.om.qq.com/page/OO2PXCD6VZ6CVqLqjpU6uShg0以下是本人整理的ORACLE学习的一些基本的语法知识&#xff0c;如有不对的地方&#xff0c;望大家批评指正&#xff0c;如有转载请注明出处&#xff1a;一、ORACLE完整性约束&#xff1a;1.NOT NULL …

Docker官方案例学习

下面以官方的一个demo学习学习。。。 1、进入windows版docker界面&#xff0c;新建文件夹pp 2、进入pp&#xff0c;在目录下新建三个文件 dockerfile.txt&#xff0c;app.py&#xff0c;requirements.txt 2.1 dockerfile文件 # Use an official Python runtime as a parent…

LeetCode 1738. 找出第 K 大的异或坐标值(DP)

文章目录1. 题目2. 解题947 / 3851&#xff0c;前 24.6%2533 / 11282&#xff0c;前 22.5% 1. 题目 给你一个二维矩阵 matrix 和一个整数 k &#xff0c;矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j <…

小案例:基于python的动态时钟,带十二时辰和经络养身

一、前言 1、仅用来研究学习使用。 2、除正常显示时钟外&#xff0c;还可以实时显示当前对应的时辰&#xff0c;和经络养身提示。 3、适合辅助上班族来养生 二、效果如下&#xff1a; 三、源码如下&#xff1a; 动态时钟附带十二时辰显示import turtle # 导入绘图海龟模块 …

【海淘域名】GoDaddy账户被锁定后的解决方法

转载自【美国海淘网】http://www.usahaitao.com/Experience/Detail_2886.html通过ICANN申诉顺利的从国内无良奸商(35互联与商务中国,小编的域名在这2个大的服务商手中。不过开始都是图便宜&#xff0c;不懂得国内域名管理的黑幕&#xff0c;所以从其下属的皮包第三方手里购入域…

回归分析常数项t值没有显著异于零怎么办_线性回归分析思路总结!简单易懂又全面!...

线性回归分析是一种研究影响关系的方法&#xff0c;在实际研究里非常常见。不管你有没有系统学习过&#xff0c;对于线性回归&#xff0c;相信多少都有那么一点了解。即使如此&#xff0c;在实际分析时&#xff0c;还是会碰到很多小细节&#xff0c;让我们苦思冥想困扰很久&…

LeetCode 1733. 需要教语言的最少人数(哈希+枚举)

文章目录1. 题目2. 解题1. 题目 在一个由 m 个用户组成的社交网络里&#xff0c;我们获取到一些用户之间的好友关系。 两个用户之间可以相互沟通的条件是他们都掌握同一门语言。 给你一个整数 n &#xff0c;数组 languages 和数组 friendships &#xff0c;它们的含义如下&a…

在c#中用mutex类实现线程的互斥_面试官经常问的synchronized实现原理和锁升级过程,你真的了解吗...

本篇文章主要从字节码和JVM底层来分析synchronized实现原理和锁升级过程&#xff0c;其中涉及到了简单认识字节码、对象内部结构以及ObjectMonitor等知识点。阅读本文之前&#xff0c;如果大家对synchronized关键字的基本使用还不是很了解的话&#xff0c;推荐阅读笔者之前的一…

TensorFlow 2.x GPU版在conda虚拟环境下安装步骤

先下载安装驱动&#xff1a;https://www.nvidia.cn/Download/index.aspx?langcn&#xff0c;版本要求 WSL cuda 驱动 https://developer.nvidia.com/cuda/wsl 下载安装 anaconda&#xff0c;管理虚拟环境&#xff1a;https://www.anaconda.com/products/individual&#xff0…

如何通过网络将文件传输到嵌入式设备_嵌入式系统 Boot Loader技术内幕,带你完全了解Boot Loader...

一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次&#xff1a;1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选)&#xff0c;和 Boot Loader 两大部分。2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3. 文件系统。包括根文件系统和建…

python获取当前路径的方法_Python获取脚本所在目录的正确方法【转】

原博文 2015-09-24 10:21 − 1.以前的方法如果是要获得程序运行的当前目录所在位置&#xff0c;那么可以使用os模块的os.getcwd()函数。如果是要获得当前执行的脚本的所在目录位置&#xff0c;那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是Pyt…

TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化

文章目录1. Checkpoint 保存变量2. TensorBoard 训练过程可视化学习于&#xff1a;简单粗暴 TensorFlow 2 1. Checkpoint 保存变量 tf.train.Checkpoint 可以保存 tf.keras.optimizer 、 tf.Variable 、 tf.keras.Layer 、 tf.keras.Model path "./checkp.ckpt" …