《Linux与shell脚本编程大全》笔记之shell命令补充

96
PeTu
2017.04.10 18:53* 字数 2105

监测进程命令

ps命令

当程序运行在系统上时,我们称之为进程,而监测进程需要ps命令。默认ps命令显示的信息有 PID(进程ID)、TTY(运行在哪个终端)、TIME(已用的CPU时间)和CMD(程序名称)。
因为历史原因,ps命令的参数和风格非常的复杂,一般记住其中几组参数即可

  • -e:指定显示所有运行在系统上的进程;
  • -f:扩展输出
    ps -ef输出如图:

    由图中可以看出-f参数扩展的信息有:
  • UID:启动这些进程的用户
  • PID:进程的进程号
  • PPID:父进程的进程号
  • C:进程生命周期中的CPU利用率
  • STIME:进程启动时的系统时间
  • TTY:进程启动时的终端设备
  • TIME:运行进程需要的累计CPU时间
  • CMD:启动的程序名称
    这些信息也正是大多数系统管理员希望看到的

top命令

Top命令也是显示进程信息,但是它是实时显示的,可用于观察频繁换进换成内存的进程的趋势。而具体top命令会输出哪一些信息每一版系统都可能会有不同。附上macOS系统的top命令配图


kill命令

当有些程序已经影响了系统的运行,或者想要结束某些进程时,就需要使用kill命令。
在Linux上,进程之间通过信号来通信。进程的信号就是预定义好的一个消息,进程能够识别它们并决定忽略还是作出反应。信号有:

  • 1(HUP):将进程挂起
  • 2(INT):中断进程
  • 3(QUIT):结束运行
  • 9(KILL):无条件终止
  • 11(SEGV):段错误
  • 15(TERM):尽可能终止
  • 17(STOP):无条件停止运行,但不终止
  • 18(TSTP):停止或暂停,但继续在后台运行
  • 19(CONT):在STOP或TSTP之后恢复执行
    kill命令可通过PID给进程发信号。格式为kill -9 PID,这个是通过信号进行进程控制,也可以通过例如kill -s HUP PID的这种-s+名称的格式控制进程。执行后和通过ps或者top命令查看是否将进程停止。

监测磁盘空间

本节将介绍在日常系统管理中经常用到的核心命令。

df 命令

有时你需要知道在某个设备上还有多少磁盘空间。df命令就是用来轻松查看所有已挂载磁盘的使用情况,常用的参数是-h。将输出中的磁盘空间按人类可读的形式显示,即转换成M和G的单位

说明 Linux系统后台一直会有进程来处理文件或使用文件。df命令的输出值显示的是Linux系统认为的当前值。有可能系统上有运行的进程已经创建或删除了某个文件,但尚未释放文件。这个值是不会算进闲置空间的。

du 命令

通过df命令,你很容易发现哪个磁盘很快没有存储空间。此时就需要用到另外一个命令—du命令。du命令是可以显示某个特定目录(默认是当前目录)的磁盘使用情况。这个是用来判断你系统上某个目录下是不是有超大文件的快速方法。
默认情况下,du命令会显示当前目录下的所有文件、目录和子目录的磁盘使用情况,它会以磁盘的块为单位来显示每个文件或目录占用了多大存储。
但是单独使用du命令将会显示所有文件的信息,会非常不方便,这里介绍几个命令行参数

  • -c:显示所有已列出文件总的大小,如果是目录文建包括其子目录(用法:du -c YourFile
  • -h:按人类可读的格式输出大小,即会换算成K、M、G单位
  • -s:显示每个输出参数的总计。

处理数据文件命令

当有大量数据时,通常很难处理这些信息及提取有用信息。系统很容易就会输出过量的信息。因此这小节介绍一些命令行工具来处理大量数据。

排序数据

处理大量数据时的一个常用命令就是sort命令,用来对数据进行排序。
默认情况下,sort命令按你为这个会话指定的默认语言的排序规则来对文本文件中的数据行排序,例如字符排序
但是,在进行数字排序时,可能出现这种情况


这个问题的出现时因为sort命令会把数字当做字符而执行标准的字符排序,产生的输出可能根本就不是想要的。此时可以添加-n参数,它会告诉sort命令把数字识别成数字而不是字符,并且按值排序:

另一个常用的参数是-M,即按月排序。Linux的日志文件经常会在每行的起始位置有一个时间戳,此时使用-M参数则会按照时间戳的顺序排序,并且此时sort命令能识别三字符的月份命名。
再介绍些其他的参数:

  • -b(- -ignore-leading-blanks):排序时忽略起始的空白
  • -c(- -check):不排序,但检查输入数据是不是已排序;未排序的话,报告
  • -f(- -ignore-case):默认情况下,会将大写字母排在前面,;这个参数忽略大小写
  • -g(- -general-number-sort):按通用数值排序,支持科学计数法和浮点数
  • -z(- -zero-terminated):用NULL字符来为每一行结尾而不是用换行符
  • -t(- -field-separator=SEP):指定一个用来区分键位置的字符
  • -k (- -key=POS1[,POS2]):排序从POS1位置开始;如果指定了POS2的话,到POS2位置结束

搜索数据

你经常需要在大文件中找一行数据,而这行数据埋藏在文件的中间。此时只需要grep命令来查找。grep命令的命令行格式如下:
grep [options] pattern [file]
grep命令会到输入中或你指定的文件中查找包含匹配指定模式的字符的行。grep的输出就是包含了匹配模式的行。
参数介绍:

  • -v:反向搜索(即输出不匹配该模式的行)
  • -n:显示匹配模式的行所在行号
  • -c:只要知道多少行含有匹配的模式即可
  • -e:指定匹配多于一个匹配模式,得到满足两个模式中任意一个的所有结果,用-e参数来指定每个模式,
    例如grep -e pattern1 -e pattern2 file
    默认情况下,grep命令用基本的Unix风格正则表达式来匹配模式。正则表达式用方括号[]括起来。

归档数据

tar命令最开始是用来将文件写到磁带设备上归档的,然而它也能把输出写到文件里,这种用法在Linux上已经普遍用来归档数据了。
其命令格式:tar function [options] object1 object2
function参数定义了tar命令应该做什么,如下:

  • -A(- -concatenate):将一个已有tar归档文件追加到另一个已有tar归档文件
  • -c(- -create):创建一个新的tar归档文件
  • -r(- -append):追加文件到已有tar归档文件末尾
  • -t(- -list):列出已有tar归档文件的内容
  • -u(- -update):将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中
  • -x(- -extract):从已有tar归档文件中提取文件
  • -v:在处理文件时显示文件
  • -f:输出结果到文件或设备file
  • -z:将输出重定向给gzip命令来压缩内容
    如果tar文件是从一个目录结构创建的,那整个目录结构都会在当前目录下重新创建。如此发现,tar命令是给整个目录结构创建归档文件的简便方法。

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

系列链接


《Linux与shell 脚本编程大全》笔记之基本文件处理命令

Linux
Web note ad 1