您的位置:首页 > 运维架构 > Shell

《linux shell 脚本编程入门》读后记录

2017-02-03 09:52 239 查看
说明:这本书是[韩] 金泰龙 著 金香 译,2014年10月第一版,人民邮电出版社。

这本书仅仅记录了一些命令的用法,本文仅仅记录我个人不懂的命令和内容,请知悉。

第一张 linux shell 和基本命令

[root@localhost ~]# du -h * | sort -nr > $HOME/script.txt

[root@localhost ~]# ls

anacoda-ks.cfg install.log install.log script.txt scsrun.log

[root@localhost ~]#cat script.txt

40K install.log

12K install.log.syslog

8.0K scsrun.log

8.0K anaconda-ks.cfg

0 script.txt

[root@localhost ~]#

sort命令的-n(--numeric-sort) 选项根据数值进行升序排列,-r选项具有逆向排序功能(--reserve),用于降序排列。因为同时使用了以上2个选项,所以得出以数值为准的降序运行结果。

表1-2 /dev 目录设备

设备名用途
/dev/tty正在运行程序的终端窗口或控制台
/dev/dsp 在声卡上执行AU声音文件的界面
/dev/fd0第一个软驱
/dev/had1IDE硬盘的第一个分区
/dev/sda1SCSI、S-ATA硬盘的第一个分区
1.shell脚本构成要素

if~else和for、while等shell循环(loop)指令
grep、awk、cut等文本处理实用工具
w、who、free等二进制可执行程序

2.shell脚本使用目的

接收用户或文件传来的指令并在屏幕上显示数据
可自动重复执行相同操作
节约时间
创建自己的powerTool和power实用工具
管理员工作个性化(Customizing)
减少设置服务环境和添加用户等操作中产生的错误(Error)
shell脚本实际用途如下

Linux系统监控

数据备份和创建快照(snapshot)
针对Oracle、Mysql数据库备份的转储(dump)工作
接收系统警告提示邮件
搜索耗费系统资源的进程
查询闲置内存和用量
查询已登录的所有用户和当前操作内容
查询网络服务是否正常。例如,Web服务器操作有误就给管理员发送邮件或短信
查询所有登录失败信息。例如,从相同IP地址反复登录时,防火墙就自动阻止IP连接。
根据安全策略管理用户
BIND(DNS服务器)服务器环境下添加zone项
如果需要高级编程操作,就使用gcc(c/c++)或Python语言代替shell脚本
3.禁止使用shell脚本(必须使用c/c++/Python等编程语言)

资源占用较大的操作,特别是对速度要求高的操作(排序、散列等)
高级算数运算操作,特别是任意精度运算(arbitrary precision)或需要使用复数的情况(请使用C++)
平台间需要可移植性(请使用C语言)
需要结构化编程的复杂的应用程序(需要检查变量类型或函数原型(prototype)时)
确实非常重要或能决定公司未来的应用程序
为高度保证安全及系统完整性,需要防止外部入侵或破解、破坏等时
具有紧密关系的众多组件组成的项目
需要运算大量文件时(Bash Shell 允许访问受限的串联文件,特别是允许访问不方便的、不充分的行单位)
需要多维数组时
需要链表或树等数据结构时
需要制作并修改图形图像或GUI时
需要直接访问系统硬盘时
需要端口或套接字I/O时
必须使用利用已写代码的目录或界面时
必须开发独一无二、不公开源代码的应用程序时(shell脚本的源代码是公开的)

1.3.6. 使用多重指令(;、&&、||)

在一行中想要连续执行多个命令时,使用分隔符(;)标识一个命令的结束。记住,即使第一个命令执行失败,也会依旧执行第二个命令。
如果在指令之间输入&&,那就只能在第一个命令正常执行的情况下才执行第二个命令。也就是说,第一个命令执行失败时无法执行下一个命令。
使用“||”标识当第一个命令执行失败时,才执行后一个命令。
1.3.7 临时命令( history、!)
使用感叹号(!)重新执行最近执行的命令。在“!”后面输入需要查询命令的首字符或字符串,技能搜寻出符合该字符(串)的最近执行的命令。
1.5.2 标准输入
大部分linux指令都通过标准输入(standard input)执行输入工作。
标准输入是指通过键盘输入数据。也可以不适用键盘,而通过文件输入,此时需要使用“<”字符(小于号或左尖括号)。它的文件描述符的数值是0
格式sort < 【要输入的文件名】
样例 [root@localhost ~]#sort < ls.txt
[root@localhost ~]#sort < ls.txt >sorted_ls.txt

1.8.3 watch
使用watch命令在指定的时间单位内重新执行指定命令,并全屏显示结果值。按ctrl+c快捷键退出watch页面。
执行以下命令,每5秒显示1次/var/log/messages 文件的内容
[root@localhost ~]#wath -n 5 tail /varlog/messages

执行以下命令,每60秒查看一次邮件
[root@localhost ~]#watch -n 60 from

执行以下命令,监控目录内修改的文件
[root@localhost ~]#watch -d ls -l

本文参考:《《linux shell 脚本编程入门》》
文章生成时间:2017年2月3日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: