atop命令监控进程使用资源_atop 查看历史磁盘-程序员宅基地

技术标签: ubuntu  

atop介绍

atop 是一个强大的性能监控工具,它提供了多个参数来帮助用户以不同的方式查看和分析系统性能。以下是一些常用的 atop 参数:

常用命令

-r:读取历史记录文件。您可以使用这个参数后跟文件路径来查看过去的性能数据。
-l:指定日志文件的记录间隔时间(以分钟为单位)。
-b:指定开始查看记录的时间。
-e:指定结束查看记录的时间。

快捷键

2.30版本为例,有如下快捷键。其他版本快捷键略有不同,可以sudo atop打开监控屏幕后,输入h显示具体快捷键
g - 显示通用信息(默认)
m - 显示内存详细信息
d - 显示磁盘详细信息
n - 显示网络详细信息
s - 显示调度和线程组信息
v - 显示各种信息(父进程ID、用户/组、日期/时间、状态、退出代码)
c - 显示每个进程的完整命令行
o - 使用自定义的输出行定义
排序进程列表:

C - 按 CPU 活动排序
M - 按内存消耗排序
D - 按磁盘活动排序
N - 按网络活动排序
A - 按最活跃的系统资源排序(自动模式)
累计数据:

u - 按用户显示总资源消耗
p - 按程序(即相同进程名)显示总资源消耗
j - 按容器显示总资源消耗
进程选择(在标题行中显示的键):

U - 聚焦特定用户名(正则表达式)
P - 聚焦特定程序名(正则表达式)
J - 聚焦特定容器ID(CID)
/ - 聚焦特定命令行字符串(正则表达式)
I - 聚焦特定进程ID(PID)
系统资源选择(在标题行中显示的键):

S - 聚焦特定系统资源(正则表达式)
屏幕操作:

^L - 重绘屏幕
PgDn - 显示进程列表的下一页(或 ^F)
ArDn - 向下箭头显示进程列表的下一行
PgUp - 显示进系列表的上一页(或 ^B)
ArUp - 向上箭头显示进程列表的上一行
ArRt - 向右箭头显示完整命令行的下一个字符
ArLt - 向左箭头显示完整命令行的前一个字符
展示(在标题行中显示的键):

y - 显示单独的线程(切换)
a - 显示所有进程(默认:活动进程)(切换)
f - 显示固定数量的标题行(切换)
F - 抑制排序系统资源(切换)
G - 抑制输出中已退出的进程(切换)
x - 不使用颜色来指示高占用(切换)
1 - 显示平均每秒值而不是总值(切换)
R - 计算比例集大小(PSIZE)(切换)

通过这些快捷键,您可以快速地切换到不同的数据视图,以便更有效地监控和分析系统性能。

ubuntu中使用apt和dpgk管理atop包

在大多数情况下,使用 apt 命令会更方便,因为它会自动处理软件包的依赖问题。而 dpkg 则需要手动管理这些依赖。不过,当涉及到删除软件包时,两者都能够删除软件包和其配置文件,但 dpkg 不会自动删除由软件包的依赖项。

apt卸载atop

如果之前下载过atop包,那么需要卸载软件包
如要保留配置文件,请执行下面命令卸载,这个命令对于dpkg安装的包同样适用

sudo apt remove atop

如果需要完全卸载软件和配置文件,请执行下面的卸载命令,这个命令对于dpkg安装的包同样适用

sudo apt purge atop

apt方式安装

sudo apt install atop

atop安装后会在/usr/share/atop下生成两个文件 atop.dailyatop.wrapper

atop.dailyatop.wrapper 文件在 atop 的日常运行和日志管理中扮演着重要的角色。

  1. atop.daily: 这个文件通常是一个脚本,负责 atop 日志的日常轮换。它定义了 atop 日志文件的生成频率和保留策略。例如,您可以在这个文件中设置日志文件的保存周期和过期时间,以及日志文件的命名规则。通常,atop.daily 会被定时任务(如cron)调用,以确保日志文件按预期轮换和维护。

  2. atop.wrapper: 这个文件是 atop的一个包装脚本,它通常用于启动 atop 服务,并确保 atop 以正确的参数运行。它可能包含了一些特定的环境设置或预配置的启动参数,以便atop 能够以预期的方式运行。在某些系统中,atop.wrapper 可能还负责处理权限提升,以便 atop可以以更高权限运行,从而收集更详细的系统信息

dpkg卸载软件包

还可以使用dkpg卸载dpgk安装的软件包,这个命令对于apt安装的包同样适用。

sudo dpkg --purge atop

不过由于dpkg并不能管理依赖,所以还是推荐使用apt卸载

dpkg方式安装

apt虽然安装更简单,但是,想要安装指定的版本使用apt安装不够方便,这个时候可以在atop官方网站下载rpm包

不过需要注意的是,dpkg 可以安装、卸载和管理 .deb 软件包,但它不会自动处理软件包的依赖关系。如果使用 dpkg 安装一个软件包,可能需要手动安装所有必需的依赖。

这里加入ubuntu系统是16.04,那么请下载1.26或相近的版本,这里我下载的是1.25版本

wget --no-check-certificate  https://www.atoptool.nl/download/atop-1.25-1.x86_64.rpm

将rpm包转换为deb包,需要使用alien工具

sudo apt install alien

转换rpm包为deb

sudo alien -d atop-1.25-1.x86_64.rpm

使用dpkg安装atop

 sudo dpkg -i atop_1.25-2_amd64.deb

查看atop是否可以成功运行

sudo atop

如果报错Not enough screen-lines available (need at least 94 lines),Resize window or start atop with the -l flagto limit system-resources ,请加上-l参数,或者也可以指定行数 -l 50

sudo atop -l

查看atop的版本

atop -V
Version: 2.3.0 - 2017/03/25 09:59:59     <[email protected]>

安装atop.service

dpkg安装的包,执行重启sudo systemctl restart atop.service无效,所以这里需要把service加载到system配置中
新增service服务

sudo vim /etc/systemd/system/atop.service
[Unit]
Description=Atop Process Monitor
After=network.target

[Service]
ExecStart=/bin/sh -c 'exec /usr/bin/atop -a -w /var/log/atop/atop_$(date +%%Y%%m%%d).log 60'
ExecStartPost=/bin/sh -c 'find /var/log/atop/ -name "atop_*.log" -type f -mtime +7 -delete'

[Install]
WantedBy=multi-user.target

在这个配置中:

  • ExecStart 使用 %Y%m%d 格式来指定日志文件名,这样每天都会生成一个新的日志文件,例如 atop_20240325.log。
  • ExecStartPost 使用 find 命令来删除超过7天的日志文件,以避免日志文件占用太多空间。

重新加载 systemd 配置并启动 atop 服务:

sudo systemctl daemon-reload
sudo systemctl start atop.service

如果希望 atop 在系统启动时自动启动,可以使用以下命令来启用 atop 服务:

sudo systemctl enable atop.service

更新统计频率

如果是2.3.0的版本,请执行下面的命令,将INTERVAL=600 改成INTERVAL=60 ,表示每1分钟统计一次

sudo vim /usr/share/atop/atop.daily

如果是1.26的版本,请执行下面的命令

sudo vim /etc/default/atop

如果是1.25版本,请执行下面的命令

sudo vim /etc/atop/atop.daily

如果不知道atop配置INTERVAL的文件在哪里,可以使用dpkg -L查询这个安装包所有相关的文件和目录,不管安装方式是dpgk方式安装,还是apt方式安装

 dpkg -L atop

重启atop

sudo /etc/init.d/atop restart

或者

sudo systemctl restart atop.service

查看某个时间段内的统计信息

atop -r /var/log/atop/atop_YYYYMMDD -b 17:00 -e 18:00

参考: Linux命令之atop

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

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签