使用c++查看linux服务器某个进程正在使用的内存_Linux 系统管理
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
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 任务
表示时间时,有些特殊符号:
crontab 注意事项:
- 六个选项都不能为空,必须填写。如果不确定使用 『* 』代表任意时间
- crontab 定时任务,最小有效时间是分钟,最大时间范围是月。像 2018 年某时执行,3 点 30 分 30 秒这样的时间都不能识别
- 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为他们都是以天作为单位,非常容易让管理员混乱
- 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都是用绝对路径
使用c++查看linux服务器某个进程正在使用的内存_Linux 系统管理相关推荐
- 使用c++查看linux服务器某个进程正在使用的内存_精选20个常用的Linux命令
今天总结几个非常常用的Linux命令,其中有几个在面试中很可能问相关命令的原理,比如后台运行命令.希望对大家有所帮助,最好自己去尝试在Linux操作系统中实践一下. 1 查看目录以及权限 在windo ...
- linux 服务器进程,如何查看Linux服务器的进程
Linux服务器正常启动后,提供服务时会调用程序,占用进程.这时候如何查看系统中有哪些进程在被调用呢?我们可以通过以下命令来查看. 1.ps ps命令是最基本同时也是非常强大的进程查看命令.使用该命令 ...
- linux查找用户前三进程_查看 Linux 系统中进程和用户的内存使用情况 | Linux 中国...
有一些命令可以用来检查 Linux 系统中的内存使用情况,下面是一些更好的命令.-- Sandra Henry-stocker 有许多工具可以查看 Linux 系统中的内存使用情况.一些命令被广泛使用 ...
- linux服务器进程不存在,查看 Linux 服务器的进程
1)ps [主要选项]-a 显示系统中所有进程的信息 -e 显示所有进程的信息 -f 显示进行的所有信息 -l 以长格式显示进程信息 -r 只显示正在运行的进程 -u 显示面向用户的格式 ...
- linux服务器time wait,Linux服务器TIME_WAIT进程的解决与原因
linux服务器上tcp有大量time_wait状态的解决方法和原因解释 毫无疑问,TCP中有关网络编程最不容易理解的是它的TIME_WAIT状态,TIME_WAIT状态存在于主动关闭socket连接 ...
- 查看Linux服务器下的内存使用情况
查看Linux服务器下的内存使用情况 ,可以使用命令free -m.注意此命令只在Linux下有效,在FreeBSD中没有此命令.命令如下所示: used:已经使用的内存数 free:空闲的内存数 s ...
- linux 查看服务器网络连接,1.3.2 查看Linux服务器的网络连接(2)
1.3.2 查看Linux服务器的网络连接(2) 2.ping 相信大家都很熟悉ping命令了,它用于检查网络上某台主机是否为活动状态或是否发生故障.它会利用TCP/IP协议族中的ICMP协议的ECH ...
- 命令查看Linux服务器内存、CPU、显卡、硬盘使用情况
命令查看Linux服务器内存.CPU.显卡.硬盘使用情况 查看内存使用情况 使用命令:free -m 大致结果类似下图: 内存占用情况 参数解释: Mem行(单位均为M): total:内存总数 us ...
- 【收藏】如何查看linux服务器内存使用情况
如何查看linux服务器内存使用情况 https://www.cnblogs.com/hanmk/p/10556989.html [root@m-0 ~]# ps -eo pmem,pcpu,rss, ...
最新文章
- 北美欧洲顶级大咖齐聚,在这里读懂 AIoT 未来!
- SQL server经典电子书、工具和视频教程汇总
- Excel+SQL数据库连接
- 知识付费网站php源码,原创在线教育知识付费类源码只要50元
- sphinx python_如何使用Sphinx记录Python代码
- 加载geojson面数据_地理数据可视化
- 抖音算法暑期实习春招双双发车
- CentOS 6.2 mini安装桌面环境
- 如何正确的获得一个view的宽和高
- 操作系统源码及GeekOS学习
- 局域网之间两台计算机同屏,如何实现内网多电脑同屏协同?
- html caption属性,HTML caption align 属性 | 菜鸟教程
- 小程序这6个坑绝对不能踩
- android studio实现记住密码,Andriod Studio实现保存QQ密码功能(案例代码详解)
- python算闰年和平年的天数_如何判断闰年和平年的方法有哪些-百度经验
- shortcut connection和highway network
- LeetCode871.Minimum Number of Refueling Stops
- 计算机与文秘专业有哪些课程,文秘专业开设的课程有哪些
- python爱好者社区 投稿_2018年Python爱好者社区历史文章合集(作者篇)
- 升级版王者荣耀铭文多功能助手微信小程序源码下载
热门文章
- less is more,so 只记 less
- python-greenlet模块(协程)
- node进阶| 解决表单enctype=multipart/form-data 时获取不到Input值的问题
- Centos Cacti 0.8.8g
- What day is that day?(快速幂,打表找周期,或者求通项公式)
- thinkpad s3 安装win8 kali双系统笔记
- 64 位 win7(2008 r2) 使用PLSQL Developer x86 32bit的解决方法
- Linux内存,先看这篇文章
- Linux 内核通知链和例程代码
- strace调试(Linux Device Driver)