1. 监测程序

1.1 检查进程

默认情况下,ps 命令只会显示运行在当前控制台下的属于当前用户的进程。

$ ps
PID   TTY      TIME CMD
3081 pts/0 00:00:00 bash
3209 pts/0 00:00:00 ps

上图显示了程序的进程 ID(Process ID,PID)、它们运行在哪个终端(TTY)以及进程已用的CPU 时间。

ps -ef 查看系统上运行的所有进程

$ ps -ef
UID     PID     PPID    C   STIME   TTY         TIME    CMD
root    1       0       0   11:29   ?       00:00:01    init [5]
...
rich    3081    3080    0   12:00   pts/0   00:00:00    -bash
rich    4445    3081    3   13:48   pts/0   00:00:00    ps -ef
  • UID:启动这些进程的用户
  • PID:进程的进程ID
  • PPID:父进程的进程号(如果该进程是由另一个进程启动的)
  • C: 进程生命周期中的CPU利用率
  • STIME:进程启动时的系统时间
  • TTY: 进程启动时的终端设备
  • TIME:运行进程需要的累计CPU时间
  • CMD:启动的程序名称

1.2 实时监测进程

top 命令跟 ps 命令相似,能够显示进程信息,但它是实时显示的

输出的第一部分显示的是系统的概况:

第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。

平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。值越大说明系统的负载越高。

第二行显示了进程概要信息——top命令的输出中将进程叫作任务(task):有多少进程处在运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。

下一行显示了CPU的概要信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出。

最后两行中第一行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲。后一行说的是同样的信息,不过是针对系统交换空间。

最后一部分显示了当前运行中的进程的详细列表,有些列跟ps命令的输出类似:

  • PID:进程的 ID。

  • USER:进程属主的名字。

  • PR:进程的优先级。

  • NI:进程的谦让度值。

  • VIRT:进程占用的虚拟内存总量。

  • RES:进程占用的物理内存总量。

  • SHR:进程和其他进程共享的内存总量。

  • S:进程的状态(D 代表可中断的休眠状态,R 代表在运行状态,S 代表休眠状态,T 代表跟踪状态或停止状态,Z 代表僵化状态)。

  • %CPU:进程使用的 CPU 时间比例。

  • %MEM:进程使用的内存占可用内存的比例。

  • TIME+:自进程启动到目前为止的 CPU 时间总量。

  • COMMAND:进程所对应的命令行名称,也就是启动的程序名。

默认情况下,top 命令在启动时会按照 %CPU 值对进程排序。键入 f 允许你选择对输出进行排序的字段,键入 d 允许你修改轮询间隔。键入 q 可以退出 top。

1.3 结束进程

在 Linux 中,进程之间通过信号来通信。进程的信号就是预定义好的一个消息,进程能识别它并决定忽略还是作出反应。

  1. kill 命令

    kill命令可通过进程 ID(PID)给进程发信号。默认情况下,kill 命令会向命令行中列出的全部 PID 发送一个 TERM 信号。

    要发送进程信号,你必须是进程的属主或登录为 root 用户。

    $ kill 3940
    -bash: kill: (3940) - Operation not permitted
    

    TERM 信号告诉进程可能的话就停止运行,如果要强制终止,-s 参数支持指定其他信号(用信号名或信号值)。

    $ sudo kill -s HUP 3940
    
  2. killall 命令

    killall 命令非常强大,它支持通过进程名而不是 PID 来结束进程。killall 命令也支持通配符。

    killall http*
    

2. 监测磁盘空间

2.1 使用 df 命令

要知道在某个设备上还有多少磁盘空间,可以使用 df -h ,它会把输出中的磁盘空间按照用户易读的形式显示,通常用 M 来替代兆字节,用 G 替代吉字节。

$ df -h
Filesystem  Size    Used    Avail   Use%    Mounted on
/dev/sdb2   18G     7.4G    9.2G    45%     /
/dev/sda1   99M     19M     76M     20%     /boot
tmpfs       117M    0       117M    0%      /dev/shm
/dev/sdb1   125M    112M    14M     90%     /media/disk

2.2 使用 du 命令

du 命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。

默认情况下,du 命令会显示当前目录下所有的文件、目录和子目录的磁盘使用情况,它会以磁盘块为单位来表明每个文件或目录占用了多大存储空间。

du 命令常用参数:

  • -c:显示所有已列出文件总的大小。
  • -h:按用户易读的格式输出大小,即用 K 替代千字节,用 M 替代兆字节,用 G 替代吉字节。
  • -s:显示每个输出参数的总计。

3. 处理数据文件

3.1 排序数据

默认情况下,sort 命令按照会话指定的默认语言的排序规则对文本文件中的数据行排序。

  • -n 参数 把数字识别成数字而不是字符,并且按值排序。
  • -M 参数 按月排序
  • -k --key=POS1[,POS2] 指定排序的字段,排序从 POS1 位置开始;如果指定了 POS2 的话,到POS2 位置结束
  • -t --field-separator=SEP 指定字段分隔符
  • -r 参数 将结果按降序输出

比如要对前面提到的密码文件 /etc/passwd 根据用户 ID 进行数值排序:

$ sort -t ':' -k 3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

3.2 搜索数据

grep 命令的命令行格式:grep [options] pattern [file]

grep 命令会在输入或指定的文件中查找包含匹配指定模式的字符的行。grep 的输出就是包含了匹配模式的行。

  1. 要进行反向搜索(输出不匹配该模式的行),可加 -v 参数

    $ grep -v t file1
    one
    four
    five
    
  2. 要显示匹配模式的行所在的行号,可加 -n 参数

    $ grep -n t file1
    2:two
    3:three
    
  3. 要知道有多少行含有匹配的模式,可用 -c 参数

    $ grep -c t file1
    2
    
  4. 要指定多个匹配模式,可用 -e 参数来指定每个模式

    $ grep -e t -e f file1
    two
    three
    four
    five
    
  5. 默认情况下,grep 命令用基本的 Unix 风格正则表达式来匹配模式。

3.3 压缩数据

gzip 命令会压缩你在命令行指定的文件。也可以在命令行指定多个文件名甚至用通配符来一次性批量压缩文件。

$ gzip my*
$ ls -l my*
-rwxr--r-- 1 rich rich 103 Sep 6 13:43 myprog.c.gz
-rwxr-xr-x 1 rich rich 5178 Sep 6 13:43 myprog.gz
-rwxr--r-- 1 rich rich 59 Sep 6 13:46 myscript.gz
-rwxr--r-- 1 rich rich 60 Sep 6 13:44 myscript2.gz

3.4 归档数据

tar命令的格式:

 tar   function   [options]    object1     object2 ...

function 参数定义了 tar 命令应该做什么,如下图所示:

options 参数的选项:

这些选项经常合并到一起使用。

  1. 用下列命令来创建一个归档文件

      tar -cvf      test.tar    test/     test2/
    

    上面的命令创建了名为 test.tar 的归档文件,含有 test 和 test2 目录内容

  2. 列出 tar文件 test.tar 的内容

       tar     -tf     test.tar
    
  3. 从tar文件test.tar中提取内容

      tar     -xvf     test.tar
    

下载了开源软件之后,你会经常看到文件名以 .tgz 结尾。这些是 gzip 压缩过的 tar 文件可以用命令 tar -zxvf filename.tgz 来解压。

Linux shell 学习笔记(2)— 监测程序、磁盘空间和处理文件(ps -ef、top、kill、df、du 、grep、tar)相关推荐

  1. Linux shell 学习笔记(5)— 文件权限(添加、修改、删除用户及创建、修改群组)

    1. Linux的安全性 Linux 安全系统的核心是用户账户.每个能进入 Linux 系统的用户都会被分配唯一的用户账户.用户对系统中各种对象的访问权限取决于他们登录系统时用的账户. 用户权限是通过 ...

  2. Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)

    1. 启动 shell /etc/passwd 文件包含了所有系统用户账户列表以及每个用户的基本配置信息: christine:x:501:501:Christine Bresnahan:/home/ ...

  3. 【Linux】Linux Shell 学习笔记:什么是Linux?

    I Linux 简介 Linux系统简介 (biancheng.net) Linux和UNIX的关系及区别 (biancheng.net) Linux内核_百度百科 (baidu.com) [什么是 ...

  4. Linux shell 学习笔记(3)— shell 父子关系及内建命令

    1. shell 类型 只要用户登录到某个虚拟控制台终端或是在 GUI 中启动终端仿真器,默认的 shell 程序就会开始运行. 默认的交互 shell 会在用户登录某个虚拟控制台终端或在 GUI 中 ...

  5. RabbitMQ学习笔记:内存(Memory)|磁盘空间(Disk space)阀值

    相关文档指南: https://rabbitmq.com/memory.html 支持的单位符号 ## k, kiB: kibibytes (2^10 - 1,024 bytes) ## M, MiB ...

  6. Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务

    1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...

  7. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  8. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)

    1. 使用多个命令 如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开. $ date ; who Mon Feb 21 15:36:09 EST 2014 Christine tty2 ...

  9. Linux shell 学习笔记(4)— linux 环境变量(全局变量、局部变量及变量持久化)

    1. 环境变量概念及分类 bash shell 用一个叫作环境变量(environment variable)的特性来存储有关 shell 会话和工作环境的信息(这也是它们被称作环境变量的原因).这项 ...

最新文章

  1. OpenCV3.3中K-Means聚类接口简介及使用
  2. Spring Boot(一)
  3. ubuntu root默认密码(初始密码)
  4. InnoDB MySQL 全文索引 学习笔记
  5. 趣挨踢 | 30 个让程序员崩溃的瞬间,笑死我了!
  6. 关于request.getRequestDispatcher()的两个方法
  7. 6. 成交量基础分析
  8. java有关问题,Java常见有关问题和解决方法
  9. regionGrowth3D
  10. 物联网技术体系主要分为哪些关键技术,具体包含哪些技术?
  11. 【仿美团点餐App】—— 首页(二)
  12. 物联卡中心:物联网卡代理商这么多,我怎么选?
  13. 叠积木(加权并查集)
  14. IP-MAC绑定到底有多重要?(白目的见解)
  15. Ubuntu-18.04安装
  16. 《愤怒的小鸟》——大一下C语言程序课设
  17. 路径与轨迹、路径规划与轨迹规划、路径跟踪与轨迹跟踪
  18. [bzoj4816][Sdoi2017]数字表格 (反演+逆元)
  19. 计算机应用基础与实训教程word2003文字处理软件 教学目标,计算机基础教学计划多篇...
  20. 3ds Max 2014安装SupperMap 插件

热门文章

  1. kotlin Bean加载失败lateinit property has not been initialized
  2. 人工智能3d建模算法_打破国外垄断,全国产3D芯片为机器人“点睛”
  3. 项目中使用 Git 高频场景
  4. 德国最受欢迎的程序员技能排行
  5. redis 双写一致性 看一篇成高手系列1
  6. 业余时间用哪里,哪里就有发展的可能
  7. java_pandas_Joinery
  8. Python---哈夫曼树---Huffman Tree
  9. LeetCode简单题之设计 Goal 解析器
  10. 通过 DLPack 构建跨框架深度学习编译器