读书笔记《Linux命令行shell脚本编程大全》第24-26章
原创- 2023-12-21 15:16:57
- 687
本篇目录
一、归档
1. 需要的功能
Linux中归档数据的主要工具是tar命令。tar命令可以将整个目录归档到单个文件中。下面的例子是用tar命令来创建工作目录归档文件。
tar命令会显示一条警告消息,表明它删除了路径名开头的斜线,将路径从绝对路径名变成相对路径名。这样就可以将tar归档文件解压到文件系统中的任何地方了。
这样就可以将tar归档文件解压到文件系统中的任何地方了。你很可能不想在脚本中出现这条消息。这种情况可以通过将STDERR重定向到/dev/null文件来实现。
由于tar归档文件会消耗大量的磁盘空间,最好能够压缩一下该文件。这只需要加一个-z选项就行了。它会将tar归档文件压缩成gzip格式的tar文件,这种文件也叫作tarball。
2. 创建逐日归档文件的存放位置
如果你只是备份少量文件,那么将这些归档文件放在你的个人目录中就行了。但如果要对多个目录进行备份,最好还是创建一个集中归档仓库目录。
二、管理用户账号
1、需要的功能
删除账户在管理账户工作中比较复杂。在删除账户时,至少需要4个步骤:
(1) 获得正确的待删除用户账户名;
(2) 杀死正在系统上运行的属于该账户的进程;
(3) 确认系统中属于该账户的所有文件;
(4) 删除该用户账户。
2、查找属于账户的文件
要找到用户文件,你可以用find命令。find命令用-u选项查找整个文件系统,它能够准确查找到属于该用户的所有文件。该命令如下:
find / -user $USER_ACCOUNT > $REPORT_FILE
删除账户
从系统中真正地删除该用户账户。这里用到了userdel命令:
userdel $USER_ACCOUNT
运行脚本
在测试脚本前,需要为脚本文件设置适合的权限。
chmod u+x yunxing.sh
说明 要运行这种脚本,你必须以root用户账户的身份登录,或者使用sudo命令以root用户账户身份运行脚本。
Sudo ./yunxing.sh
检测磁盘空间
如果你的Linux系统应用于生产环境,那么就不能依赖磁盘空间报告来避免服务器的磁盘空间被填满。应该考虑使用磁盘配额。如果已经安装了quota软件包,可以在shell提示符下输入man –k quota获得有关磁盘限额管理的更多信息。如果没有安装这个软件包,可以使用任何你喜欢的搜索引擎获取进一步的信息。
MySQL 数据库
mysql命令:mysql程序使用两种不同类型的命令:
(1) q 特殊的mysql命令(2) q 标准SQL语句
mysql程序使用它自有的一组命令,方便你控制环境和提取关于MySQL服务器的信息。这些命令要么是全名(例如status),要么是简写形式(例如\s)。你可以从mysql命令提示符中直接使用命令的完整形式或简形式。
Show databases;查看创建的数据库
我们用SQL命令SHOW来显示当前在MySQL服务器上配置过的数据库,然后用SQL命令USE来连接到单个数据库。mysql会话一次只能连一个数据库。
在处理长命令时,这个功能很有用。你可以在一行输入命令的一部分,按下回车键,然后在下一行继续输入。这样一条命令可以占任意多行,直到你用分号表明命令结束。
3、创建数据库
创建一个新的数据库要用如下SQL语句。
CREATE DATABASE name;
创建数据表。
插入和删除数据
DELETE命令的基本格式如下。
DELETE FROM table;
查询数据
SELECT语句的基本格式如下。
SELECT datafields FROM table
在脚本中使用数据库。
三、向服务器发送命令
在建立起到服务器的连接后,接着就可以向数据库发送命令进行交互。有两种实现方法:
(1) 发送单个命令并退出;(2) 发送多个命令。
1. 确定系统中都有谁
要用到的第一个工具就是who命令。该命令可以告诉你当前系统中所有的登录用户。可用信息的简略版本。这些信息包括:
(1) 用户名(2) 用户所在终端
(3) 用户登入系统的时间
2. 启用消息功能
检查是否允许发送消息,结果中显示is n表明消息发送功能被关闭了,结果是y,表明允许发送消息。
3. 向其他用户发送消息
使用write命令通过其他登录用户的用户名和当前终端向其发送消息。
四、获取格言
1. 学习wget
wget是一款非常灵活的工具,它能够将Web页面下载到本地Linux系统中。要通过wget下载Web页面,只需要使用wget命令和网站的地址就行了。
注意,输出的最后仍然是OK。但是Web地址的结尾是error404.html。这才表示Web地址是无效的。
五、创建脚本
1. 检查所传递的URL
脚本仍旧使用wget和--spider选项来检查Web地址的有效性。但是结果必须保存到变量中,以便随后使用if语句进行检查。
check_url=$(wget -nv --spider $quote_url 2>&1)
网站URL的状态消息被保存在了变量check_url中。要从变量中找出错误指示error404,需要使用参数扩展和echo命令。
bad_url=$(echo ${check_url/*error404*/error404})
允许对保存在check_url中的字符串进行搜索。可以把字符串参数扩展视为sed的另一种简单快速的替代形式。在搜索关键词周围加上通配符(*error404*),这样可以搜索整个字符串。如果找到了,echo命令会使得字符串error404被保存在bad_url变量中。要是没有找到,bad_url变量中包含的就是check_url变量中的内容。
2. 获取Web页面信息
在脚本中使用本章先前讲过的wget命令。将日志文件和包含页面信息的HTML文件保存在/tmp目录中。
wget -o /tmp/quote.log -O /tmp/quote.html $quote_url
3. 解析出需要的信息
使用sed和gawk超出html文件中的格言信息脚本首先从保存着Web页面信息的/tmp/quote.html文件中删除所有的HTML标签。
sed 's/<[^>]*//g' /tmp/quote.html
删掉标签后,还是会有一些无用的信息,格言正好位于日期的右边,可以使用当前日期作为搜索关键字。这里需要用到grep命令、$()以及date命令。sed命令的输出通过管道传入grep命令。grep命令经过格式化的当前日期来匹配格言页面中的日期。找到日期文本之后,使用-A2选项提取出另外两行文本。
sed 's/<[^>]*//g' /tmp/quote.html | grep "$(date +%B' '%-d,' '%Y)" -A2
完整脚本如下: