《Linux命令行与shell脚本编程大全》 第四章 学习笔记

来源:互联网 发布:氢弹 知乎 编辑:程序博客网 时间:2024/05/18 03:32

第一部分:Linux命令行
《Linux命令行与shell脚本编程大全》 第一章:初识Linux shell
《Linux命令行与shell脚本编程大全》 第二章:走进shell
《Linux命令行与shell脚本编程大全》 第三章:基本的bash shell命令
《Linux命令行与shell脚本编程大全》 第四章:更多的bash shell命令
《Linux命令行与shell脚本编程大全》 第五章:使用Linux环境变量
《Linux命令行与shell脚本编程大全》 第六章:理解Linux文件权限
《Linux命令行与shell脚本编程大全》 第七章:管理文件系统
《Linux命令行与shell脚本编程大全》 第八章:安装软件程序
《Linux命令行与shell脚本编程大全》 第九章:使用编辑器

第二部分:shell脚本编程基础
《Linux命令行与shell脚本编程大全》 第十章:构建基本脚本
《Linux命令行与shell脚本编程大全》 第十一章:使用结构化命令
《Linux命令行与shell脚本编程大全》 第十二章:更多的结构化命令
《Linux命令行与shell脚本编程大全》 第十三章:处理用户输入
《Linux命令行与shell脚本编程大全》 第十四章:呈现数据
《Linux命令行与shell脚本编程大全》 第十五章:控制脚本

第三部分:高级shell编程
《Linux命令行与shell脚本编程大全》 第十六章:创建函数
《Linux命令行与shell脚本编程大全》 第十七章:图形化桌面上的脚本编程
《Linux命令行与shell脚本编程大全》 第十八章:初识sed和gawk
《Linux命令行与shell脚本编程大全》 第十九章:正则表达式
《Linux命令行与shell脚本编程大全》 第二十章:sed进阶
《Linux命令行与shell脚本编程大全》 第二十一章:gawk进阶
《Linux命令行与shell脚本编程大全》 第二十二章:使用其他shell

第四部分:高级shell脚本编程主题
《Linux命令行与shell脚本编程大全》 第二十三章:使用数据库
《Linux命令行与shell脚本编程大全》 第二十四章:使用Web
《Linux命令行与shell脚本编程大全》 第二十五章:使用E-mail
《Linux命令行与shell脚本编程大全》 第二十六章:编写脚本实用工具
《Linux命令行与shell脚本编程大全》 第二十七章:shell脚本编程进阶


第四章:更多的bash shell命令


监测程序

ps(其他ps内容见#1)

Unix风格的ps命令参数

参数描述-A显示所有进程-N显示与指定参数不符的所有进程-a显示除控制进程(session leader)和无终端的进程外的所有进程-d显示除控制进程外的所有进程-e显示所有进程-C cmdlist显示包含在cmdlist列表中的进程-G grplist显示组ID在grplist列表中的进程-U userlist显示属主的用户ID在userlist列表中的进程-g grplist显示会话或组(由Linux版本决定)ID在grplist列表中的进程-p pidlist显示PID在pidlist列表中的进程-s sesslist显示会话ID在sesslist列表中的进程-t ttylist显示终端ID在ttylist列表中的进程-u userlist显示有效用户ID在userlist列表中的进程-F显示更多额外输出(相对-f而言)-O format显示默认的输出列以及format列表指定的特定列-M显示进程的安全信息-c显示进程的额外调度器信息-f显示完整格式的输出-j显示任务信息-l显示长列表-o format仅显示由format指定的列-y不要显示进程标记(process flag)-Z显示安全标签(security context)信息-H用层级格式显示进程(树状)-n namelist定义了WCHAN列显示的值-w采用宽输出模式,不限宽度显示-L显示进程中的线程-V显示ps命令的版本号


UNIX列标题含义

UNIX标题含义ADDR进程表中的虚拟地址C处理器利用率(废弃率)CMD正被执行的命令的名称F内核分配给进程的系统标记NInice值,用于设置优先级PID进程IDPPID父进程的进程IDPRI优先级(数字越大优先级越低)RSS内存驻留空间大小(内存管理)S状态代码(D、R、S、T、Z)STIME累积系统时间(进程启动是的系统时间)SZ物理页的大小(内存管理)TIME运行进程需要的累积CPU时间TTY控制终端的完整名称UID用户标识WCHAN等待通道(进程休眠的内核函数地址)



BSD风格的参数

参数描述T显示跟当前终端关联的所有进程a显示跟任意终端关联的所有进程g显示所有的进程,包括控制进程r仅显示运行中的进程x显示所有的进程,甚至包括未分配任何终端的进程U userlist显示归userlist列表中某用户ID所有的进程p pidlist显示PID在pidlist列表中的进程t ttylist显示所有关联的终端在ttylist列表中的进程O format除了默认输出的列之外,还输出由format指定的列X按过去的Linux i386寄存器格式显示Z将安全信息添加到输出中j显示任务信息l采用长模式o format仅显示由format指定的列s采用信号格式显示u采用基于用户的格式显示v采用虚拟内存格式显示N namelist定义在WCHAN列中使用的值O order定义显示信息列的顺序S将数值信息从子进程加到父进程上,比如CPU和内存使用情况c显示真实的命令名称(用以启动进程的程序名称)e显示命令使用的环境变量f用分层格式来显示进程,表明哪些进程启动了哪些进程h不显示头信息k sort指定用以将输出排序的列n和WCHAN信息一起显示出来,用数值来表示用户ID和组IDw为较宽屏幕显示宽输出H将线程按进程来显示m在进程后显示线程L列出所有格式指定符V显示ps命令的版本号


BSD列标题和含义

BSD标题含义%CPUCPU使用百分比%MEM真实内存使用百分比CMD正被执行的命令的名称COMMAND正被执行的命令的完整名称CPU短期CPU使用(调度)JOBC作业控制统计LIM内存使用限额NInice值,用于设置优先级PAGEIN总的缺页错误(内存管理)PGID进程组号PID进程IDPPID父进程的进程IDPRI调度优先级RE内存驻留时间(单位为秒)RSS内存驻留空间大小(内存管理)SESS会话指针SL睡眠时间(单位为秒)STARTED定时启动STAT状态代码(O、R、S、T、Z)TIME累积CPU时间TSIZ文本大小(单位为KB)TT控制终端的缩写名称TTY控制终端的完整名称UID用户标识USER用户名VSZ虚拟内存(单位KB)WCHAN等待通道

STAT状态代码第二个字符意义:

<:该进程运行在高优先级上

N:该进程运行在低优先级上

L该进程有页面锁定在内存中

s该进程是个控制进程

l该进程是多线程的

+该进程运行在前端



GNU风格的ps命令参数

参数描述--deselect显示所有进程,命令行中列出的进程--Group grplist显示组ID在grplist列表中的进程--User userlist显示用户ID在userlist列表中的进程--group grplist显示有效组ID在grplist列表中的进程--user userlist显示有效组用户ID在usrlist列表中的进程--pid pidlist显示pid在pid列表中的进程--ppid pidlist显示父pid在pidlist列表中的进程--sid sidlist显示会话ID在sidlist列表中的进程--tty ttylist显示终端设备号在ttylist列表中的进程--fromat format仅显示由format指定的列--context显示额外的安全信息--cols n将屏幕宽度设置为n列--columns n将屏幕宽度设置为n列************--cumulative包含已停止的子进程的信息--forest用层级结构显示出进程和父进程之间的关系--headers在每页输出中都显示列的头--no-headers不显示列的头--lines n将屏幕高度设为n行--rows n将屏幕宽度设为n排--sort order指定将输出按哪列排序--width n将屏幕宽度设为n列--help显示帮助信息--info显示调试信息--version显示ps命令的版本号



top实时监测进程(其他top内容见#1)

top

top - 09:40:29 up 5 min,  7 users,  load average: 0.68, 0.79, 0.38

Tasks: 186 total,   1 running, 184 sleeping,   0 stopped,   1 zombie

Cpu(s):  9.2%us,  5.1%sy,  0.2%ni, 70.8%id, 13.8%wa,  0.0%hi,  1.0%si,  0.0%st

Mem:   3954168k total,  2169936k used,  1784232k free,   136224k buffers

Swap:  2899696k total,        0k used,  2899696k free,   790940k cached


  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

2332 su1216  20   0 1337m 434m  27m S   16 11.3   0:40.47 java

1035 root      20   0  212m  43m  21m S    4  1.1   0:19.01 Xorg

2158 su1216  20   0  409m  56m  25m S    3  1.5   0:13.21 chromium-browse

1499 su1216  20   0  291m  35m 9180 S    1  0.9   0:04.76 compiz

1675 su1216  20   0  332m  18m  12m S    1  0.5   0:00.37 gnome-terminal

1616 su1216  20   0  215m 9.8m 7884 S    0  0.3   0:00.34 multiload-apple

1891 su1216  20   0  526m  54m  19m S    0  1.4   0:01.24 pidgin


第一部分:系统概况

第一行:当前时间,系统运行时间,登入的用户数以及系统的平均负载

平均负载的三个值分别为:最近一分钟、最近五分钟、最近十五分钟。值越大,说明系统负载越高。通常,如果系统的负载值超过了2,就说明系统比较繁忙了

第二行:top命令的输出中进程叫做任务(task):多少进程处在运行、休眠、停止或是僵化状态

第三行:CPU信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出

第四行:系统物理内存。总共有多少,当前用了多少,还剩多少

第五行:同上,针对系统交换空间

第二部分:当前运行中的进程的详细列表

命令描述1切换单CPU状态模式和对称处理器模式B打开/关闭表中重要数字的加粗显示I切换Irix/Solaris模式Z设置表的颜色l显示/关闭平均负载信息行t显示关闭CPU信息行m显示/关闭MEM和SWAP行f添加/移除输出中的不同信息列o更改信息行的显示顺序F或O选择一列将进程排序(默认为%CPU)<或>将排序的行左移或右移一列R切换正常排序还是倒序排序H显示/关闭显示线程情况c切换显示进程的命令名还是完整的命令行输入(包括参数)i切换是否显示空闲进程S切换显示累计CPU时间还是相对CPU时间x打开/关闭高亮显示排序列y打开/关闭高亮显示运行中的任务z切换彩色模式还是单色模式b打开/关闭x和y模式的高亮模式u显示某个用户的进程n或#设置要显示的进程数k结束指定的进程(必须是进程属主或root用户)r改变指定进程是优先级(必须是进程属主或root用户)d或s改变更新的间隔(默认是3s)W把当前设置写到一个配置文件中q退出top命令

输出列的含义,部分和ps类似

PID:进程ID

USER:进程属主的名字

PR:进程的优先级

NI:进程的谦让度值

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

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

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

S:进程的状态

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

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

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

COMMAND:进程的命令行名称,也就是启动的程序名



Linux沿用UNIX进行进程间通信的方法(信号)

大多数写的好的程序都能接收和处理标准UNIX进程信号

部分Linux进程信号

信号名称描述1HUP挂起2INT中断3QUIT结束运行9KILL无条件终止11SEGV段错误15TERM尽可能终止17STOP无条件停止运行,但不终止18TSTP停止或暂停,但继续在后台运行19CONT在STOP或TSTP之后恢复执行

杀死进程

默认kill发送TERM信号

kill只能指定PID,不支持通配符

killall可以指定进程名,并支持通配符

killall http*



监测磁盘空间

挂在存储媒体

mount

mount提供下面4部分信息

媒体的设备文件名

媒体挂载到虚拟目录的挂载点

文件系统类型

已挂载媒体的访问状态

参数描述-t指定了磁盘被格式化的文件系统类型-a挂载/etc/fstab文件中指定的所有文件系统-f使mount命令模拟挂载设备,但并不真的挂载-F和-a参数一起使用,将会并行的挂载所有文件系统-v详细模式,将会说明挂载设备的每一步-I不启用任何/sbin/mount.filesystem下的文件系统帮助文件-l给ext2、ext3或XFS文件系统自动添加文件系统标签-n挂载设备,但不注册到/etc/mtab已挂载设备文件中-p num对加密文件进行挂载时,从文件描述符num中获得密码短语-s忽略该文件系统不支持的挂载选项-r将设备挂载为只读的-w将设备挂载为可读写的(默认参数)-L label将设备按指定的label挂载-U uuid将设备按指定的uuid挂载-O和-a参数一起使用,限制命令只作用到特定的一组文件系统上-o给文件系统添加特定的选项

-o参数允许在挂载文件系统时添加一些以逗号分隔的额外的选项

ro:按只读的挂载

rw:按允许读写挂载

user:允许普通用户挂载文件系统

check=none:挂载文件系统时不进行完整性校验

loop:挂载一个文件


mount -t vfat /dev/sdb1 /media/disk

将u盘(vfat格式)/dev/sdb1挂载到/media/disk

mount -t iso9660 -o loop test.iso ~/test_iso

将CD镜像文件(iso9660格式)test.iso挂载到~/test_iso


umount(卸载文件系统)

语法:

umount [directory | device]

当有卸载的设备上有文件被使用时,系统不允许卸载,会给出提示

可以使用lsof获取使用此文件的进程

lsof file



df、du(见#2)


数据处理

sort(排序)(其他sort内容见#3)

单字母全字描述-b--ignore-leading-blanks排序时忽略起始空白-C--check=quiet不排序,如果数据无序也不报告-c--check不排序,但检查输入数据是不是已有序,未排序则报告-d--dictionary-order仅考虑空白和字母,不考虑特殊字符-f--ignore-case忽略大小写(默认情况下,会将大写字母排在前面)-g--general-number-sort按通用数值来排序(与-n不同,把值当浮点数来排序,支持科学计数法表示)-i--ignore-nonprinting排序时忽略不可打印字符-k--key=POS1[.POS2]排序从POS1位置开始,如果指定了POS2,则到POS2位置结束-M--month-sort用3字符月份按月份排序-m--merge将两个已排序数据文件合并-n--numeric-sort按字符串数值来排序(并不转换为浮点数)-o--output=file将排序结果写入到指定文件中-R--random-sort按随机生成的哈希表的键值排序 --random-source=FILE指定-R参数用到的随机字节的源文件-r--reverse反序-S--buffer-size=SIZE指定使用的内存大小-s--stable禁用最后的重排序比较-T--temporary-direction=DIR指定一个位置存储临时工作文件-t--field-separator=SEP指定一个用来区分键位置的字符-u--unique和-c参数一起使用时,严格检查排序;不与-c参数一起使用时,仅输出第一例相似的两行-z--zero-terminated用NULL字符来为每一行结尾而不是用换行符



grep(搜索数据)

-e:指定多于一个模式

grep -e t -e f file

grep [tf] file

上面两条命令等同(其他grep内容见#3)



数据压缩

工具文件扩展名描述bzip2.bz2采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码compress.Z原始的Unix文件压缩工具,逐渐消失中gzip.gzGNU压缩工具,用Lempel-Ziv编码zip.zipWindows上PKZIP工具的Unix实现

1.bzip2工具

包括

bzip2:压缩文件

bzcat:显示压缩文件的文本文件内容

bunzip2:解压压缩后的.bz2文件

bzip2recover:尝试恢复损毁的压缩文件

(只管压缩,不管打包)

默认会用压缩后的文件替换原文件


2.gzip工具

包括

gzip:压缩文件

gzcat:显示压缩文件的文本文件内容

gunzip:解压文件

(只管压缩,不管打包)


3.zip工具

包括

zip:创建压缩文件,包含指定的文件和目录

zipcloak:创建一个加密的压缩文件,包含指定的文件和目录

zipnote:从zip文件中提取批注

zipsplit:将一个现有zip文件分割成多个更小的固定大小的文件

unzip:从压缩过的zip文件中提取文件和目录

(压缩并归档)



tar(归档数据)

语法:

tar function [options]object1 object2...

function参数列表

功能全字名称描述-A--concatenate将一个已有的tar归档文件追加到另一个已有tar归档文件-c--create创建一个新的tar归档文件-d--diff检查归档文件和文件系统的不同之处 --delete从已有tar归档文件中删除-r--append追加文件到已有tar归档文件末尾-t--list列出已有tar归档文件的内容-u--update将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中-x--extract从已有tar归档文件中提取文件

常用选项

选项描述-C dir切换到指定目录-f file输出结果到文件或设备file-j将输出重定向给bzip2命令来压缩内容-p保留所有文件权限-v在处理文件时显示文件-z将输出重定向给gzip命令来压缩内容



1.《Unix & Linux 大学教程》 - 第二十六章 进程和作业控制

2.《Unix & Linux 大学教程》 - 第二十四章 目录操作

3.《Unix & Linux 大学教程》 - 第十九章 过滤器:选取、排序、组合及变换



转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

原创粉丝点击