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

第一部分: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进程ID
PPID父进程的进程ID
PRI优先级(数字越大优先级越低)
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和组ID
w为较宽屏幕显示宽输出
H将线程按进程来显示
m在进程后显示线程
L列出所有格式指定符
V显示ps命令的版本号

BSD列标题和含义

BSD标题 含义
%CPUCPU使用百分比
%MEM真实内存使用百分比
CMD正被执行的命令的名称
COMMAND正被执行的命令的完整名称
CPU短期CPU使用(调度)
JOBC作业控制统计
LIM内存使用限额
NInice值,用于设置优先级
PAGEIN总的缺页错误(内存管理)
PGID进程组号
PID进程ID
PPID父进程的进程ID
PRI调度优先级
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://blog.csdn.net/su1216/

相关推荐