详细介绍Linux系统管理命令,演示如何通过命令行命令来探查Linux系统的内部信息

一、监测程序

Linux系统管理员面临的最复杂的任务之一就是跟踪运行在系统中的程序——尤其是现在,图形化桌面集成了大量的应用来生成一个完整的桌面环境。系统中总是运行着大量的程序。

探查进程

当程序运行在系统上时,我们称之为进程(process)。想监测这些进程,需要熟悉 ps 命令的用法。 ps 命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息。
默认情况下, ps 命令只会显示运行在当前控制台下的属于当前用户的进程。在此例中,我们只运行了bash shell(注意,shell也只是运行在系统上的另一个程序而已)以及 ps 命令本身。
上例中的基本输出显示了程序的进程ID(Process ID,PID)、它们运行在哪个终端(TTY)以及进程已用的CPU时间。

Linux系统中使用的GNU ps 命令支持3种不同类型的命令行参数:
 Unix风格的参数,前面加单破折线;
 BSD风格的参数,前面不加破折线;
 GNU风格的长参数,前面加双破折线。


上面给出的参数已经很多了,不过还有很多。使用 ps 命令的关键不在于记住所有可用的参数,而在于记住最有用的那些参数。大多数Linux系统管理员都有自己的一组参数,他们会牢牢记住这些用来提取有用的进程信息的参数。举个例子,如果你想查看系统上运行的所有进程,可用 -ef参数组合( ps 命令允许你像这样把参数组合在一起)。

Linux系统上运行着很多进程。这个例子用了两个参数: -e 参数指定显示所有运行在系统上的进程; -f 参数则扩展了输出,这些扩展的列包含了有用的信息。
这些扩展的列包含了有用的信息。
 UID:启动这些进程的用户。
 PID:进程的进程ID。
 PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
 C:进程生命周期中的CPU利用率。
 STIME:进程启动时的系统时间。
 TTY:进程启动时的终端设备。
 TIME:运行进程需要的累计CPU时间。
 CMD:启动的程序名称。

如果想要获得更多的信息,可采用 -l 参数,它会产生一个长格式输出。

注意使用了 -l 参数之后多出的那些列。
 F :内核分配给进程的系统标记。
 S :进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵
化,进程已结束但父进程已不存在;T代表停止)。
 PRI :进程的优先级(越大的数字代表越低的优先级)。
 NI :谦让度值用来参与决定优先级。
 ADDR :进程的内存地址。
 SZ :假如进程被换出,所需交换空间的大致大小。
 WCHAN :进程休眠的内核函数的地址。


实时监测进程

ps 命令虽然在收集运行在系统上的进程信息时非常有用,但也有不足之处:它只能显示某个特定时间点的信息。如果想观察那些频繁换进换出的内存的进程趋势,用 ps 命令就不方便了。
而 top 命令刚好适用这种情况。 top 命令跟 ps 命令相似,能够显示进程信息,但它是实时显示的。

输出的第一部分显示的是系统的概况:第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。

平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。值越大说明系统的负载越高。由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见,但如果近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:进程所对应的命令行名称,也就是启动的程序名。

键入q可以退出 top 。用户在 top命令的输出上有很大的控制权。用这个工具就能经常找出占用系统大部分资源的罪魁祸首。当然
了,一旦找到,下一步就是结束这些进程。

结束进程

作为系统管理员,很重要的一个技能就是知道何时以及如何结束一个进程。有时进程挂起了,只需要动动手让进程重新运行或结束就行了。但有时,有的进程会耗尽CPU且不释放资源。
在这两种情景下,你就需要能控制进程的命令。Linux沿用了Unix进行进程间通信的方法。

在Linux中,进程之间通过信号来通信。进程的信号就是预定义好的一个消息,进程能识别它并决定忽略还是作出反应。进程如何处理信号是由开发人员通过编程来决定的。大多数编写完善的程序都能接收和处理标准Unix进程信号。

在Linux上有两个命令可以向运行中的进程发出进程信号。
1.kill 命令
kill 命令可通过进程ID(PID)给进程发信号。默认情况下, kill 命令会向命令行中列出的全部PID发送一个 TERM 信号。遗憾的是,你只能用进程的PID而不能用命令名,所以 kill 命令有时并不好用。
要发送进程信号,你必须是进程的属主或登录为root用户。


要检查 kill 命令是否有效,可再运行 ps 或 top 命令,看看问题进程是否已停止。

2.killall 命令
killall 命令非常强大,它支持通过进程名而不是PID来结束进程。 killall 命令也支持通
配符,这在系统因负载过大而变得很慢时很有用。

# killall http*
#

上例中的命令结束了所有以http开头的进程,比如Apache Web服务器的httpd服务。

警告 以root用户身份登录系统时,使用 killall 命令要特别小心,因为很容易就会误用通配符而结束了重要的系统进程。这可能会破坏文件系统。

二、监测磁盘空间

系统管理员的另一个重要任务就是监测系统磁盘的使用情况。不管运行的是简单的Linux台式机还是大型的Linux服务器,你都要知道还有多少空间可留给你的应用程序。
在Linux系统上有几个命令行命令可以用来帮助管理存储媒体。

挂载存储媒体

Linux文件系统将所有的磁盘都并入一个虚拟目录下。在使用新的存储媒体之前,需要把它放到虚拟目录下。这项工作称为挂载(mounting)。
在今天的图形化桌面环境里,大多数Linux发行版都能自动挂载特定类型的可移动存储媒体。可移动存储媒体指的是可从PC上轻易移除的媒体,比如CD-ROM、软盘和U盘。

如果用的发行版不支持自动挂载和卸载可移动存储媒体,就必须手动完成。这里将介绍一些可以帮你管理可移动存储设备的Linux命令行命令。

1.mount 命令
Linux上用来挂载媒体的命令叫作 mount 。默认情况下, mount 命令会输出当前系统上挂载的设备列表。


mount 命令提供如下四部分信息:
 媒体的设备文件名
 媒体挂载到虚拟目录的挂载点
 文件系统类型
 已挂载媒体的访问状态

要手动在虚拟目录中挂载设备,需要以root用户身份登录,或是以root用户身份运行 sudo 命令。



-o 参数允许在挂载文件系统时添加一些以逗号分隔的额外选项。以下为常用的选项。
 ro :以只读形式挂载。
 rw :以读写形式挂载。
 user :允许普通用户挂载文件系统。
 check=none :挂载文件系统时不进行完整性校验。
 loop :挂载一个文件。

umount 命令

从Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。

Linux上不能直接弹出已挂载的CD。如果你在从光驱中移除CD时遇到麻烦,通常是因为该CD还挂载在虚拟目录里。先卸载它,然后再去尝试弹出。

卸载设备的命令是 umount (是的,你没看错,命令名中并没有字母n,这一点有时候很让人困惑)。 umount 命令的格式非常简单:

umount [directory | device ]

umount 命令支持通过设备文件或者是挂载点来指定要卸载的设备。如果有任何程序正在使用设备上的文件,系统就不会允许你卸载它

二、使用 df 命令

有时你需要知道在某个设备上还有多少磁盘空间。 df 命令可以让你很方便地查看所有已挂载磁盘的使用情况。


df 命令会显示每个有数据的已挂载文件系统。如你在前例中看到的,有些已挂载设备仅限系统内部使用。命令输出如下:
 设备的设备文件位置;
 能容纳多少个1024字节大小的块;
 已用了多少个1024字节大小的块;
 还有多少个1024字节大小的块可用;
 已用空间所占的比例;
 设备挂载到了哪个挂载点上。

f 命令有一些命令行参数可用,但基本上不会用到。一个常用的参数是 -h 。它会把输出中的磁盘空间按照用户易读的形式显示,通常用M来替代兆字节,用G替代吉字节。

三、使用 du 命令

通过 df 命令很容易发现哪个磁盘的存储空间快没了。系统管理员面临的下一个问题是,发生这种情况时要怎么办。
另一个有用的命令是 du 命令。 du 命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。这一方法可用来快速判断系统上某个目录下是不是有超大文件。

默认情况下, du 命令会显示当前目录下所有的文件、目录和子目录的磁盘使用情况,它会以磁盘块为单位来表明每个文件或目录占用了多大存储空间。对标准大小的目录来说,这个输出会是一个比较长的列表。下面是 du 命令的部分输出:


注意,这个列表是从目录层级的最底部开始,然后按文件、子目录、目录逐级向上。
这么用 du 命令(不加参数,用默认参数)作用并不大。我们更想知道每个文件和目录占用了多大的磁盘空间,但如果还得逐页查找的话就没什么意义了。

下面是能让 du 命令用起来更方便的几个命令行参数。
 -c :显示所有已列出文件总的大小。
 -h :按用户易读的格式输出大小,即用K替代千字节,用M替代兆字节,用G替代吉字
节。
 -s :显示每个输出参数的总计。

基本BASH SHELL脚本命令——Linux系统管理命令-检测程序、检测磁盘空间相关推荐

  1. linux脚本命令行交互,linux – 是否有可能使bash shell脚本与另一个命令行程序交互?...

    我在运行bash shell的Linux终端中使用交互式命令行程序.我有一个确定的命令序列,我输入到shell程序.程序将其输出写入标准输出.其中一个命令是'save'命令,它将上一个运行的命令的输出 ...

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

    1. 监测程序 1.1 检查进程 默认情况下,ps 命令只会显示运行在当前控制台下的属于当前用户的进程. $ ps PID TTY TIME CMD 3081 pts/0 00:00:00 bash ...

  3. linux shell 一行 for,BASH shell脚本回显到同一行输出

    我有一个简单的BASH shell脚本,它检查curl命令的HTTP响应代码. 逻辑很好,但我坚持"简单地"打印出"输出". 我正在使用GNU bash,版本3 ...

  4. bash shell sleep_Bash休眠(sleep命令)

    在本小节中,将了解如何通过使用不同的bash脚本来使用sleep命令.Sleep是一个命令行实用程序,可在指定的时间中暂停调用过程.换句话说,Bash sleep命令用于在指定的时间段内插入延迟或暂停 ...

  5. 基本BASH SHELL脚本命令——切换目录以及处理文件和目录的基本知识

    遍历目录 cd destination cd 命令可接受单个参数 destination ,用以指定想切换到的目录名.如果没有为 cd 命令指定目标路径,它将切换到用户主目录. destination ...

  6. shell脚本和linux命令,Linux shell脚本全面学习(一)

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

  7. Linux系统Shell脚本中的echo命令

    Linux系统Shell脚本中的echo命令 echo的作用       输出字符串 格式                  echo  "字符串内容" 一,显示转义字符 转义字符 ...

  8. 在 Shell 脚本中跟踪调试命令的执行

    文章目录 shell 脚本调试系列 概述 shell 跟踪执行的重要性 shell 脚本调试系列 本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的 ...

  9. linux如何调试脚本文件目录,如何在Linux下调试Bash Shell脚本的方法

    新手写了一个 hello world 小脚本,如何能调试运行在 Linux 或者类 UNIX 的系统上的 bash shell 脚本呢? 这是 Linux / Unix 系统管理员或新用户最常问的问题 ...

最新文章

  1. .axf文件_干货!STM32晶振的更改,BIN文件的生成
  2. 深信服副总裁张开翼:随需应变的IT新架构
  3. 单片微机原理P4:80C51串口与串行总线拓展
  4. 细数二十世纪最伟大的十大算法
  5. k8s kustomize 简明教程:安装 kustomization.yml常用字段解读
  6. wxWidgets:wxTextOutputStream类用法
  7. lds天线技术流程图_音箱耳机入门,蓝牙真无线耳机中的LDS天线 「Soomal」
  8. 集合框架 Queue---BlockingQueue详解
  9. 提高应用程序稳定的小内容
  10. select,epoll的比较
  11. WinAPI【消息及相关结构体】
  12. C语言实现字符串转整型
  13. oa处理会签流程图_OA协同流程管理解决方案
  14. XCode应该是从11.4开始支持Sandbox
  15. 中国系泊系统行业市场供需与战略研究报告
  16. project telecom / dianxin / shenfenzheng / SIM
  17. 网络基本功(二十三):Wireshark抓包实例诊断TCP连接问题
  18. 淘宝商家开通淘金币可以提高商品转化率吗?
  19. Discuz验证码功能解析
  20. 抖音直播团队部门岗位KPI考核主播绩效制度

热门文章

  1. React组件复用的方式
  2. 软件测试工程师-开发与测试模型
  3. 软件自动化测试成功之道_是什么使测试自动化成功?
  4. 开源个性化内容推荐引擎_您是哪种开源个性类型?
  5. (20)HTML5 <summary>标签
  6. MySQL 创建联结
  7. jQuery源码分析 整体框架部分及部分常用方法
  8. 视觉SLAM笔记(8) 齐次坐标
  9. c语言去掉数组中重复的,C语言删除无序整型数组中的重复元素及时间复杂度
  10. oracle ion tool,Ionic4 导航条组件 ion-toolbar - Ionic 帮助文档