linux 监控命令行输入,监控 Linux 容器性能的命令行神器

ctop是一个新的基于命令行的工具,它可用于在容器层级监控进程。容器通过利用控制器组(cgroup)的资源管理功能,提供了操作系统层级的虚拟化环境。该工具从cgroup收集与内存、CPU、块输入输出的相关数据,以及拥有者、开机时间等元数据,并以人性化的格式呈现给用户,这样就可以快速对系统健康状况进行评估。基于所获得的数据,它可以尝试推测下层的容器技术。ctop也有助于在低内存环境中检测出谁在消耗大量的内存。

功能

ctop的一些功能如下:

收集CPU、内存和块输入输出的度量值

收集与拥有者、容器技术和任务统计相关的信息

通过任意栏对信息排序

以树状视图显示信息

折叠/展开cgroup树

选择并跟踪cgroup/容器

选择显示数据刷新的时间窗口

暂停刷新数据

检测基于systemd、Docker和LXC的容器

基于Docker和LXC的容器的高级特性

打开/连接shell以进行深度诊断

停止/杀死容器类型

安装

ctop是由Python写成的,因此,除了需要Python 2.6或其更高版本外(带有内建的光标支持),别无其它外部依赖。推荐使用Python的pip进行安装,如果还没有安装pip,请先安装,然后使用pip安装ctop。

注意:本文样例来自Ubuntu(14.10)系统

$ sudo apt-get install python-pip

使用pip安装ctop:

poornima@poornima-Lenovo:~$ sudo pip install ctop

[sudo] password for poornima:

Downloading/unpacking ctop

Downloading ctop-0.4.0.tar.gz

Running setup.py (path:/tmp/pip_build_root/ctop/setup.py) egg_info for package ctop

Installing collected packages: ctop

Running setup.py install for ctop

changing mode of build/scripts-2.7/ctop from 644 to 755

changing mode of /usr/local/bin/ctop to 755

Successfully installed ctop

Cleaning up...

如果不选择使用pip安装,你也可以使用wget直接从github安装:

poornima@poornima-Lenovo:~$ wget https://raw.githubusercontent.com/yadutaf/ctop/master/cgroup_top.py -O ctop

--2015-04-29 19:32:53-- https://raw.githubusercontent.com/yadutaf/ctop/master/cgroup_top.py

Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.27.78.133

Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.27.78.133|:443... connected.

HTTP request sent, awaiting response... 200 OK Length: 27314 (27K) [text/plain]

Saving to: ctop

100%[======================================>] 27,314 --.-K/s in 0s

2015-04-29 19:32:59 (61.0 MB/s) - ctop saved [27314/27314]

poornima@poornima-Lenovo:~$ chmod +x ctop

如果cgroup-bin包没有安装,你可能会碰到一个错误消息,你可以通过安装需要的包来解决。

poornima@poornima-Lenovo:~$ ./ctop

[ERROR] Failed to locate cgroup mountpoints.

poornima@poornima-Lenovo:~$ sudo apt-get install cgroup-bin

下面是ctop的输出样例:

ctop.png

ctop screen

ctop屏幕

用法选项

ctop [--tree] [--refresh=] [--columns=] [--sort-col=] [--follow=] [--fold=, ...] ctop (-h | --help)

当你进入ctop屏幕,可使用上(↑)和下(↓)箭头键在容器间导航。点击某个容器就选定了该容器,按q或Ctrl+C退出该容器。

现在,让我们来看看上面列出的那一堆选项究竟是怎么用的吧。

-h / --help - 显示帮助信息

poornima@poornima-Lenovo:~$ ctop -h

Usage: ctop [options]

Options:

-h, --help show this help message and exit

--tree show tree view by default

--refresh=REFRESH Refresh display every

--follow=FOLLOW Follow cgroup path

--columns=COLUMNS List of optional columns to display. Always includes

'name'

--sort-col=SORT_COL Select column to sort by initially. Can be changed

dynamically.

--tree - 显示容器的树形视图

默认情况下,会显示列表视图

当你进入ctop窗口,你可以使用F5按钮在树状/列表视图间切换。

--fold= - 在树形视图中折叠名为 的 cgroup 路径

该选项需要与 --tree 选项组合使用。

例子: ctop --tree --fold=/user.slice

ctop-fold.png

Output of 'ctop --fold'

'ctop --fold'的输出

在ctop窗口中,使用+/-键来展开或折叠子cgroup。

注意:在写本文时,pip仓库中还没有最新版的ctop,还不支持命令行的‘--fold’选项

--follow= - 跟踪/高亮 cgroup 路径

例子: ctop --follow=/user.slice/user-1000.slice

正如你在下面屏幕中所见到的那样,带有“/user.slice/user-1000.slice”路径的cgroup被高亮显示,这让用户易于跟踪,就算显示位置变了也一样。

ctop-follow.png

Output of 'ctop --follow'

'ctop --follow'的输出

你也可以使用‘f’按钮来让高亮的行跟踪选定的容器。默认情况下,跟踪是关闭的。

--refresh= - 按指定频率刷新显示,默认1秒

这对于按每用户需求来显示改变刷新率时很有用。使用‘p’按钮可以暂停刷新并选择文本。

--columns= - 限定只显示选定的列。'name' 需要是第一个字段,其后跟着其它字段。默认情况下,字段包括:owner, processes,memory, cpu-sys, cpu-user, blkio, cpu-time

例子: ctop --columns=name,owner,type,memory

ctop-column.png

Output of 'ctop --column'

'ctop --column'的输出

-sort-col= - 按指定的列排序。默认使用 cpu-user 排序

例子: ctop --sort-col=blkio

如果有Docker和LXC支持的额外容器,跟踪选项也是可用的:

press 'a' - 接驳到终端输出

press 'e' - 打开容器中的一个 shell

press 's' - 停止容器 (SIGTERM)

press 'k' - 杀死容器 (SIGKILL)

目前 Jean-Tiare Le Bigot 还在积极开发 ctop 中,希望我们能在该工具中见到像本地 top 命令一样的特性 :-)

本文由 LCTT 原创翻译,Linux中国 荣誉推出

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

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

相关文章

* 有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数? * 把这些数都输出出来,并且输出总共的个数。

package Day03;import java.util.ArrayList;/*** 第五题:* 有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?* 把这些数都输出出来,并且输出总共的个数。* --------------------------------------------------* …

freebsd linux目录,FreeBSD和Linux如何互相访问文件系统

一、如何mount Linux Ext2文件系统经常有人在问,强大的FreeBSD为什么不能使用牛B的Linux ext文件系统呢?得到的回答通常是:“能,当然能了”。可是,太多的人习惯了使用mount_xxx来工作,这时会发现mount_只有…

在控制台输出九九乘法表

package Day03;/*** 第六题&#xff1a;* 分析以下需求&#xff0c;并用代码实现&#xff1a;* 在控制台输出九九乘法表* 打印格式如下&#xff1a;*/ public class Day03_Demo06 {public static void main(String[] args) {for (int a 1; a < 9; a) {for (int b 1; b <…

linux子系统停止运行,linux 系统部署spring boot 退出连接端后项目停止运行问题

准备&#xff1a;Linux系统、jar包、一个启动项目文件(starup.sh)文件名自定义1、首先需要编辑starup.sh文件&#xff0c;这里我也是从网上找了一个比较好的内容如下&#xff1a;#!/bin/bash#这里可替换为你自己的执行程序&#xff0c;其他代码无需更改APP_NAMEkaRen.jar#使用说…

数组循环简单打印输出

package Day03;/*** 第七题&#xff1a;* 需求&#xff1a;请输出下列的形状* ** *** **** ***** ******/ public class Day03_Demo07 {public static void main(String[] args) {int c 8; //循环次数for (int a 1; a < c; a) {System.out.print("第" a "…

linux程序mktime无权限,linux中mktime算法解析

Linux源码中的mktime算法解析我们知道&#xff0c;从CMOS中读出来的系统时间并不是time_t类型&#xff0c;而是类似于struct tm那样&#xff0c;年月日时分秒是分开存储的。那么&#xff0c;要把它转化为系统便于处理的time_t类型&#xff0c;就需要算法进行转换。我们都知道我…

.写一个方法 void printScore(int score),输出相应的等级。score代表分数,等级格式如下:

package Day04;/*** 二、* 1.写一个方法 void printScore(int score)&#xff0c;输出相应的等级。score代表分数,等级格式如下&#xff1a;* 不及格0<s<59, 及格 60<s<79&#xff0c;良好 80<s<89&#xff0c;优秀 90<s<100* 2.在main方法中实现进行测…

linux服务器怎么防,Linux服务器防攻击的各种方案

Linux服务器防袭击的各类计划信任入席站长都对服务器袭击很敏感&#xff0c;谁都经验过&#xff0c;这里就给大伙分享一下Linux服务器防袭击的各类计划。1、使用防火墙1、Linux自带防火墙Centos6下commandservice iptables stop //关闭防火墙chkconfig iptables off //永远关闭…

* 四、要求写一个方法:method。该方法要求传入一个数字n(n要小于10), * 该方法能够计算得到所有各位上的数字不超过n且每一位的数字都不重复的三位数的个数。

package Day04;/*** 四、要求写一个方法&#xff1a;method。该方法要求传入一个数字n&#xff08;n要小于10&#xff09;&#xff0c;* 该方法能够计算得到所有各位上的数字不超过n且每一位的数字都不重复的三位数的个数。* 并且在测试该方法。*/ public class Day04_Demo04 {…

linux 无线网卡连接网络连接不上去,【已解决】Ubuntu 10.04 无线网卡 无法连接

----------------------------------搬家声明------------------------------------------------------------------------搬家声明--------------------------------------【已解决】Ubuntu 10.04 无线网卡 无法连接【问题】新装的Ubuntu 10.04&#xff0c;其他一切正常&#…

Linux 软件包管理器的目的是什么,Linux软件包的管理--RPM包管理器

在Linux中如何安装、升级、卸载软件&#xff0c;是我们日常运维中重要的组成部分。接下来一CentOS6系统为例&#xff0c;讲解如何使用 RPM 包管理器&#xff0c;yum包管理器以及源码的方式来管理我们的软件包。一、相关的背景知识许多程序的源程序&#xff0c;例如使用C语言编写…

获取数组中元素值为偶数的累加和与元素值为奇数的累加和,并计算他们之间的差值

/*** 1.获取数组中元素值为偶数的累加和与元素值为奇数的累加和&#xff0c;并计算他们之间的差值* 1.定义int getNum(int[] arr)静态方法&#xff0c;该方法要求完成* 1.1 获取指定数组arr中元素值为偶数的累加和* 1.2 获取指定数组arr中元素值为奇数的累加和* 1.3 返回偶数累…

嵌入式linux mongodb,小白在Ubuntu安装mongoDB与mongo-c-driver

目的&#xff1a;本人从事嵌入式软件&#xff0c;项目中需要使用MongoDB&#xff0c;最终需要熟悉c-driver的API&#xff0c;小白在搭建环境有些浪费时间&#xff0c;故写这文章让与我同样状态的开发人员学习学习。在Ubuntu上的安装mongodb方法一&#xff1a;sudo apt-get ins…

获取键盘录入的5个int数,并存放到int数组arr中,输入前提示输入的是第几个值 * * 2.2 传递数组arr调用getNum(int[] arr)方法,获取返回值,并打印输出

package Day05;import java.util.Scanner;/*** 2.定义main方法&#xff1a;* * 2.1 获取键盘录入的5个int数&#xff0c;并存放到int数组arr中&#xff0c;输入前提示输入的是第几个值* * 2.2 传递数组arr调用getNum(int[] arr)方法&#xff0c;获取返回值&#xff0c;并打印…

u盘装linux7.2,u盘安装centos 7.2

在Mac环境下&#xff0c;将Linux的ISO镜像生成一个Linux的安装盘&#xff0c;和Linux下差不多&#xff0c;只是Mac下有一些自己的工具。步骤如下&#xff1a;1、在终端下&#xff0c;将ISO镜像转换为DMG格式&#xff1a;$ hdiutil convert -format UDRW -o ~/linux.dmg /tmp/li…

计算分数数组中去掉最低分的平均分,并打印

package Day05;/*** 2.定义一个分数数组&#xff1a;double[] arr {88.5,96,97,74,88.2,58.5,77.9,90,99};* 计算分数数组中去掉最低分的平均分&#xff0c;并打印*/ public class Day05_Demo02_02 {public static void main(String[] args) {double[] arr {88.5, 96, 97, 74…

linux 串口 lsr 0xc9,串口发送0x0D后,从串口接收到数据被转换成了0x0A

如题&#xff0c;在追踪串口中断接收字符接口UART_getc() 到底层&#xff0c;其调用的是 typedef int32_t (*UART_ReadPollingFxn) (UART_Handle handle, void *buffer, size_t size);函数指针&#xff0c;但是该原型我并没有检索到&#xff0c;这个函数的具体实现&a…

1. 定义方法,求出指定元素在数组中出现的次数.

package Day05;import java.util.ArrayList;/*** 3、* c* 1. 定义方法&#xff0c;求出指定元素在数组中出现的次数.* 2. 定义方法&#xff0c;统计数组中出现次数为1的元素一共有多少个。(推荐-遍历数组&#xff0c;然后调用第一个方法&#xff0c;求出数组中每个元素在数组中…

linux网络编程之广播详细代码及文档说明 -,Linux网络编程之广播

1.概念前面介绍的TCP,UDP都是单播方式&#xff0c;即一对一.而广播是一台主机向局域网内的所有主机发送数据。这时&#xff0c;同一网段的所有主机都能接收到数据。发送广播包的步骤大致如下:(1)确定一个发送广播的接口&#xff0c;如eth0(2)确定广播的地址&#xff0c;通过ioc…

求出该数组中特定元素的和,特定元素是指个位和十位不包含7的偶数。

package Day05;/*** 4.* 分析以下需求&#xff0c;并用代码实现&#xff1a;* (1).定义一个int类型的一维数组&#xff0c;内容为{171,72,19,16,118,51,210,7,18}* (2).求出该数组中特定元素的和&#xff0c;特定元素是指个位和十位不包含7的偶数。*/ public class Day05_Demo0…