《兄弟连linux学习笔记.4140.pdf》由会员分享,可在线阅读,更多相关《兄弟连linux学习笔记.4140.pdf(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、4.1.1 文件处理命令 命令格式 命令+选项+参数 ls-la/etc 命令 ls 显示目录文件 语法:-a 显示所有文件 -l 详细信息显示 -d 查看目录属性-rw-r-r-文件类型(-文件 d 目录 l 软链接文件)rw-r-r-u g o u 所有者 g 所属组 o 其他人 r 读 w 写 x 执行 4.1.2 目录处理命令 mkdir 创建新目录 语法:mkdir-p(目录名)递归创建 cd 切换目录 语法:cd(目录)pwd 显示当前目录 语法 pwd 4.1.2.4 rmdir 删除空目录 语法:rmdir(目录)cp 复制文件或者目录 语法:cp-rp(源文件或目录)(目标目
2、录)-r 复制目录 -p 保留文件属性 mv 剪切文件、改名 语法:mv(原文件或目录)(目标目录)rm 删除文件 语法:rm-rf(文件或目录)-r 删除目录 -f 强制执行 4.1.3 文件处理命令 touch 创建空文件 语法:touch(文件名)cat 显示文件内容 语法:cat(文件名)-n 显示行号 tac 显示文件内容(反向)语法:tac(文件名)more 分页显示文件内容 语法:more(文件名)(空格)翻页 (Enter)换行 q 退出 less 分页显示文件内容(可向上翻页)语法:less(文件名)head 显示文件前面几行 语法 head(文件名)-n 指定行数 tail
3、 显示文件后几行 语法 tail(文件名)-n 指定行数-f 动态显示文件末尾内容 4.1.4 链接命令 ln 生成链接文件 语法:ln-s(源文件)(目标文件)-s 创建软连接 软链接特征:类似 Windows 快捷方式 lrwxrwxrwx l 软链接 软链接文件权限都为 rwxrwxrwx 文件大小-只是符号链接 /tmp/issue.soft-/etc/issue 箭头指向原文件 4.2.1 权限管理命令 chmod 改变文件或目录权限 语法:chmod ugoa+-=rwx(文件或目录)mode=421(文件或目录)-R 递归修改 权限的数字表示 r-4 w-2 x-1 rwx rw
4、-r-7 6 4 范例:$chmod g+w testfile 赋予文件 testfile 所属组写权限$chmod-R 777 testdir 修改目录 testfile 及其目录下文件为所有用户具有全部权限 文件目录权限总结 代表字符 权限 对文件的含义 对目录的含义 r 读 可以查看文件 可以列出目录 内容 中的内容 w 写 可以修改文件 可以在目录 内容 中创建或删除 文件 x 执行 可以执行文件 可以进入目录 chgrp 改变文件或目录的所属组 语法:chgrp(用户组)(文件或目录)范例:$chgrp lampbrother fengjie 改变文件 fengjie 的所属组为 l
5、ampbrother umask 显示,设置文件的缺省权限 语法:umask -S 以 rwx 形式显示新文件的缺省权限 4.3 文件搜索命令 find 文件搜索 语法 find(搜索范围)(匹配条件)$find/etc-name init 在目录/etc 中查找文件 init-iname 不区分大小写$find/-size+204800 在根目录下查找大于 100MB 的文件+n 大于-n 小于 n 等于$find/home-user shenchao 在家目录下查找所有者为 shenchao 的文件-group 根据所属组查找$find/etc-size+163840-a-size-204
6、800 在/etc 下查找大于 80MB 小于 100MB 的文件-a 两个条件同时满足-o 两个条件满足任意一个即可$find/etc-name inittab-exec ls-l ;在/etc 下查找 inittab 文件并显示其详细信息-exec/-ok 命令 ;对搜索结果执行操作-type 根据文件类型查找 f 文件 d 目录 l 软链接文件-inum 根据 i 节点查找 locate 在文件资料库中查找文件 语法 locate 文件名 which 搜索命令所在目录及别名信息 语法 which 命令 whereis 搜索命令所在的目录及帮助文件路径 语法 whereis 命令 grep
7、 在文件中搜索字符串匹配的行并输出 语法 grep-iv 指定字串 文件 -i 不区分大小写 -v 排除指定字串 4.5 用户管理命令 useradd 添加新用户 语法 useradd 用户名 passwd 设置用户密码 语法 passwd 用户名 w 查看登陆用户详细信息 语法 w 4.6 压缩解压命令 gzip 压缩文件 语法:gzip 文件 压缩后的文件格式:.gz gunzip 解压缩.gz 的压缩文件 语法:gunzip(压缩文件)tar 打包目录 语法:tar-zcvf(压缩后的文件名)(目录)-c 打包 -v 显示详细信息 -f 指定文件名 -z 打包同时压缩 压缩后的文件格式:
8、.tar.gz -x 解压 tar-zxvf 4.7 网络命令 last 列出目前与过去登入系统的用户信息 语法 last traceroute 显示数据包到主机间的路径 语法:traceroute 网络地址 setup 配置网络 语法:setup mount 挂载设备 语法:mount(-t 文件系统)设备文件名 挂载点 范例:#mount-t iso9660/dev/sr0/mnt/cdrom 4.8 关机重启命令 shutdown 语法:shutdown 时间-c 取消前一个关机命令-h 关机-r 重启 5.1 vim 常用操作 命令 作用 :set nu 设置行号 :set nonu
9、取消行号 gg 到第一行 G 到最后一行 nG 到第 n 行 :n 到第 n 行 x 删除光标所在处字符 nx 删除光标所在处后 n 个字符 dd 删除光标所在行,ndd 删除 n 行 :n1,n2d 删除指定范围的行 yy 复制当前行 nyy 复制当前行以下 n 行 dd 剪切当前行 ndd 剪切当前行以下 n 行 p 粘贴在当前光标所在行下 ZZ 快捷键,保存修改并退出 6.2 RPM 包管理-rpm 命令管理 RPM 包命名原则 httpd-2.2.15-15.el6.centos.1.i686.rpm httpd 软件包名 2.2.15 软件版本 15 软件发布的次数 el6.cent
10、os 适合的 Linux 平台 i686 适合的硬件平台 rpm rpm 包扩展名 包全名与包名 包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径 包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库 RPM 安装 rpm ivh 包全名 选项:-i 安装-v 显示详细信息 -h 显示进度-nodeps 不检测依赖性 RPM 卸载 rpm-e 包名 选项:-e 卸载-nodeps 不检查依赖性 查询是否安装 rpm -qa 包名 -q 查询 -a 所有 查询软件包详细信息 rpm -qi 包名 -i 查询软件信息 -p 查询未安装包信息 查询包中文
11、件安装位置 rpm -ql 包名 -l 列表 -p 查询未安装包信息 查询系统文件属于哪个 rpm 包 rpm -qf 系统文件 rpm 包中文件的提取 rpm2cpio 包全名|cpio-idv.文件绝对路径 rpm2cpio#将 rpm 包转换为 cpio 格式的命令 cpio#是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件 rootlocalhost#rpm-qf/bin/ls#查询 ls 命令属于哪个软件包 rootlocalhost#mv/bin/ls/tmp/#造成 ls 命令误删除假象 rootlocalhost#rpm2cpio/mnt/cdrom/Package
12、s/coreutils-8.4-19.el6.i686.rpm|cpio-idv./bin/ls#提取 RPM 包中 ls 命令到当前目录的/bin/ls 下 rootlocalhost#cp/root/bin/ls/bin/#把 ls 命令复制会/bin/目录,修复文件丢失 6.3.2 yum 命令 yum list 查询所有可用软件包列表 yum y install 包名 安装 yum 包 yum-y remove 包名 卸载 yum 包 6.3.3 光盘 yum 源搭建 1.挂载光盘 monunt /dev/cdrom /mnt/cdrom 2.让网络 yum 源文件失效 rootloc
13、alhost#cd/etc/yum.repos.d/rootlocalhost yum.repos.d#mv CentOS-Base.repo CentOS-Base.repo.bak rootlocalhost yum.repos.d#mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak rootlocalhost yum.repos.d#mv CentOS-Vault.repo CentOS-Vault.repo.bak 3.修改光盘 yum 源文件 rootlocalhost yum.repos.d#vim CentOS-Media.rep
14、o c6-media name=CentOS-$releasever-Media baseurl=file:/mnt/cdrom#地址为你自己的光盘挂载地址#file:/media/cdrom/#file:/media/cdrecorder/#注释这两个不存在的地址 gpgcheck=1 enabled=1#把 enabled=0 改为 enabled=1,让这个 yum 源配置文件生效 gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 6.4.1 源码包和 rpm 包的区别 区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 r
15、pm 包默认安装位置/etc/配置文件安装目录/usr/bin/可执行的命令安装目录/usr/lib/程序所使用的函数库保存位置/usr/share/doc/基本的软件使用手册保存位置/usr/share/man/帮助文件保存位置 源码包安装在指定位置当中,一般是/usr/local/软件名/7.3 用户管理命令 用户添加命令 useradd 修改用户密码 passwd 修改用户信息 usermod 修改用户密码信息 chage 删除用户 userdel 用户切换命令 su useradd 命令格式 useradd(选项)用户名-u UID:手工指定用户的 UID 号-d 家目录:手工指定用户
16、的家目录-c 用户说明:手工指定用户的说明-g 组名:手工指定用户的初始组-G 组名:指定用户的附加组 passwd 命令格式 passwd(选项)用户名-S 查询用户密码的密码状态。仅 root 用户可用。-l 暂时锁定用户。仅 root 用户可用-u 解锁用户。仅 root 用户可用 userdel 命令格式 userdel(-r)用户名 -r 删除用户的同时删除用户家目录 手动删除用户 vi/etc/passwd vi/etc/shadow vi/etc/group vi/etc/gshadow rm-rf/var/spool/mail/lamp rm-rf/home/lamp/9.1
17、分区和文件系统 分区类型 主分区:总共最多只能分 4 个 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。逻辑分区:逻辑分区是在扩展分区中划分的,如果是 IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘Linux最多支持 11 个逻辑分区 分区的设备文件名 主分区 1 /dev/sda1 主分区 2 /dev/sda2 主分区 3 /dev/sda3 扩展分区 /dev/sda4 逻辑分区 1 /dev/sda5 逻辑分区 2 /dev/sda6 逻辑分区 3 /dev/sda7 9.
18、2 文件系统常用命令 df 文件系统查看 语法:df(选项)(挂载点)-a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs-h 使用习惯单位显示容量,如 KB,MB 或 GB 等-T 显示文件系统类型-m 以 MB 为单位显示容量-k 以 KB 为单位显示容量。默认就是以 KB 为单位 du 统计目录或者文件大小 语法:du(选项)(目录或文件名)-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量-h 使用习惯单位显示磁盘占用量,如 KB,MB 或 GB 等-s 统计总占用量,而不列出子目录和子文件的占用量 du 命令和 df 命令的区别 df 命令是从文件系
19、统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)du 命令是面向文件的,只会计算文件或目录占用的空间 fsck 文件系统修复 语法:fsck(选项)(分区设备文件名)-a:不用显示用户提示,自动修复文件系统-y:自动修复。和-a 作用一致,不过有些文件系统只支持-y mount-l 查询系统中已经挂载的设备,-l 会显示卷标名称 mount-a 依据配置文件/etc/fstab 的内容,自动挂载挂载光盘 mount-t iso9660/dev/cdrom/mnt/cdrom/mount/dev/sr0/mnt/cdrom/卸
20、载光盘 umount 设备文件名或挂载点 umount/mnt/cdrom 挂载 U 盘 查看 U 盘设备文件名 fdisk-l 挂载 mount-t vfat/dev/设备文件名/mnt/usb/Linux 默认是不支持 NTFS 文件系统的 fdisk 命令分区挂载新硬盘 fdisk-l 查看新硬盘 fdisk/dev/sdb 分区 partprobe 重新读取分区表信息 mkfs-t ext/dev/sdb1 格式化分区 mkdir/disk1 建立挂载点 mount/dev/sdb1/disk1/挂载 分区制动挂载/etc/fstab 文件 第一字段:分区设备文件名或 UUID(硬盘通
21、用唯一识别 码)第二字段:挂载点 第三字段:文件系统名称 第四字段:挂载参数 第五字段:指定分区是否被 dump 备份,0 代表不备份,1 代表每天备份,2 代表不定期备份 第六字段:指定分区是否被 fsck 检测,0 代表不检测,其 他数字代表检测的优先级,那么当然 1 的优先级比 2 高 例如:/dev/sdb5 /disk5 ext4 defaults 1 2/etc/fastab 文件修复 mount-o remount,rw/分配 swap 分区 fdisk /dev/sdb 新建 swap 分区 把分区 ID 改为 82 mkswap /dev/sdb1 格式化 swapon /d
22、ev/sdb1 加入 swap 分区 swapoff /dev/sdb1 取消 swap 分区 vi/etc/fstab/dev/sdb1 swap swap defaults 0 0 swap分区开机自动挂载 free 查询内存与 swap 分区使用状况 cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程 buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减少磁盘碎片和硬盘的反复寻道,加速了数据的写入过程 10.2 shell 脚本的执行方式 echo 输出命令
23、echo(选项)(输出内容)-e 支持反斜线控制的字符转换 控制字符 作用 输出本身 b 退格键,也就是向左删除键 n 换行符 t 制表符,也就是 Tab 键 v 垂直制表符 第一个脚本 rootlocalhost sh#vi hello.sh#!/bin/Bash#The first program#Author:shenchao(E-mail:)echo-e Mr.Shen Chao is the most honest man in LampBrother 脚本执行权限 赋予执行权限,直接运行 chmod 755 hello.sh./hello.sh 通过 Bash 调用执行脚本 bas
24、h hello.sh history 历史命令 语法:history(选项)(历史命令保存文件)-c 清空历史命令-w 把缓存中的历史命令写入历史命令保存文件 历史命令的调用 使用上、下箭头调用以前的历史命令 使用“!n”重复执行第 n 条历史命令 使用“!”重复执行上一条命令 使用“!字串”重复执行最后一条以该字串开头的命令 多命令执行顺序 例如:ls;date;cd/user;pwd 命令&echo yes|echo no 管道符 命令 1|命令 2#命令 1 的正确输出作为命令 2 的操作对象 例如 ll-a/etc/|more grep(选项)“搜索内容”文件名-i:忽略大小写-n:输
25、出行号 通配符 例如 rootlocalhost tmp#touch abc rootlocalhost tmp#touch abcd rootlocalhost tmp#touch 012 rootlocalhost tmp#touch 0abc rootlocalhost tmp#ls?abc rootlocalhost tmp#ls 0-9*rootlocalhost tmp#ls 0-9*Bash 中其他特殊符号 例如 反引号与$()rootlocalhost#echo ls rootlocalhost#echo$(date)单引号与双引号 rootlocalhost#name=sc
26、rootlocalhost#echo$name rootlocalhost#echo$name rootlocalhost#echo$(date)rootlocalhost#echo“$(date)10.4 Bash 的变量 变量设置规则 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。在 Bash 中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。变量用等号连接值,等号左右两侧不能有空格。变量的值如果有空格,需要使用单引号或双引号包括。在变量的值中,可以使用“”转义符。如果需要增加变量的值,那么可以进行变量值的叠加
27、。不过变量需要用双引号包含“$变量名”或用$变量名包含 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。环境变量名建议大写,便于区分。变量分类 用户自定义变量 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。预定义变量:是 Bash 中已经定义好的变量,变量名不能自定义,变量作用也是固定的。本地变量 变量定义 rootlocalhost#name=shen chao 变量叠加 rootlocalhost#aa=123 rootlocalhost#aa=$aa456
28、rootlocalhost#aa=$aa789 变量调用 rootlocalhost#echo$name 变量查看 rootlocalhost#set 变量删除 rootlocalhost#unset name 位置参数变量 例子 1:#!/bin/bash num1=$1 num2=$2 sum=$($num1+$num2)#变量 sum 的和是 num1 加 num2 echo$sum#打印变量 sum 的值 例子 2:#!/bin/bash echo A total of$#parameters#使用$#代表所有参数的个数 echo The parameters is:$*#使用$*代表
29、所有的参数 echo The parameters is:$#使用$也代表所有参数 例子 3:$*与$的区别#!/bin/bash for i in$*#$*中的所有参数看成是一个整体,所以这个 for 循环只会循环一次 do echo The parameters is:$i done x=1 for y in$#$中的每个参数都看成是独立的,所以“$”中有几个参数,就会循环几次 do echo The parameter$x is:$y x=$($x+1)done 接受键盘输入 read(选项)(变量名)-p“提示信息”:在等待 read 输入时,输出提示信息-t 秒数:read 命令会一
30、直等待用户输入,使用此选项可以指定等待时间-n 字符数:read 命令只接受指定的字符数,就会执行-s:隐藏输入的数据,适用于机密信息的输入 例如#!/bin/bash#Author:shenchao(E-mail:)read-t 30-p Please input your name:name#提示“请输入姓名”并等待 30 秒,把用户的输入保存入变量 name 中 echo Name is$name read-s-t 30-p Please enter your age:age#年龄是隐私,所以我们用“-s”选项隐藏输入 echo-e n echo Age is$age read-n 1-
31、t 30-p Please select your genderM/F:gender#使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)echo-e n echo Sex is$gender 10.5 Bash 的运算符 declare 声明变量类型$运算式 运算符 举例:rootlocalhost#aa=$(11+3)*3/2)#虽然乘和除的优先级高于加,但是通过小括号可以调整运算优先级 rootlocalhost#bb=$(14%3)#14 不能被 3 整除,余数是 2 rootlocalhost#cc=$(1&0)#逻辑与运算只有想与的两边都是 1,与的结果才是 1,否则与
32、的结果是 0 11.1 基础正则表达式 正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed 等命令可以支持正则表达式。通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp 这些命令不支持正则表达式,所以只能使用 shell 自己的通配符来进行匹配了 基础正则表达式 例如:“*”前一个字符匹配 0 次,或任意多次 grep a*test_rule.txt#匹配所有内容,包括空白行 grep aa*test_rule.txt#匹配至少包含有一个 a 的行 grep aaa*test_rule.txt 匹配最少包含两个连续 a
33、的字符串 grep aaaaa*test_rule.txt#则会匹配最少包含四个个连续 a 的字符串 “.”匹配除了换行符外任意一个字符 grep s.d test_rule.txt#“s.d”会匹配在 s 和 d 这两个字母之间一定有两个字符的单词 grep s.*d test_rule.txt#匹配在 s 和 d 字母之间有任意字符 grep.*test_rule.txt#匹配所有内容 “”匹配行首,“$”匹配行尾 grep M test_rule.txt#匹配以大写“M”开头的行 grep n$test_rule.txt#匹配以小写“n”结尾的行 grep-n$test_rule.txt
34、#会匹配空白行 “”匹配中括号中指定的任意一个 字符,只匹配一个字符 grep saoid test_rule.txt#匹配 s 和 i 字母中,要不是 a、要不是 o grep 0-9 test_rule.txt#匹配任意一个数字 grep a-z test_rule.txt#匹配用小写字母开头的行 “”匹配除中括号的字符以外的 任意一个字符 grep a-z test_rule.txt#匹配不用小写字母开头的行 grep a-zA-Z test_rule.txt#匹配不用字母开头的行 “”转义符 grep.$test_rule.txt#匹配使用“.”结尾的行 “n”表示其前面的字符恰好出现
35、 n 次 grep a3 test_rule.txt#匹配 a 字母连续出现三次的字符串 grep 0-93 test_rule.txt#匹配包含连续的三个数字的字符串 “n,”表示其前面的字符出现不小于 n 次 grep 0-93,a-z test_rule.txt#匹配最少用连续三个数字开头的行 “n,m”匹配其前面的字符至少出现 n 次,最多出现 m 次 grep sa1,3i test_rule.txt#匹配在字母 s 和字母 i 之间有最少一个 a,最多三个 a 11.2 字符截取命令 cut(选项)文件名 -f 列号:提取第几列 -d 分隔符:按照指定分隔符分割列 例如 rootl
36、ocalhost#vi student.txt ID Name gender Mark 1 Liming M 86 2 Sc M 90 3 Gao M 83 rootlocalhost#cut-f 2 student.txt rootlocalhost#cut-f 2,3 student.txt rootlocalhost#cut-d:-f 1,3/etc/passwd printf 输出类型 输出格式输出内容 printf 是标准格式输出命令,并不会自动加入换行符,如果需要换行,需要手工加入换行符 输出类型:%ns:输出字符串。n 是数字指代输出几个字符%ni:输出整数。n 是数字指代输出几
37、个数字%m.nf:输出浮点数。m 和 n 是数字,指代输出的整数位数和小数位数。如%8.2f 代表共输出 8 位数,其中 2 位是小数,6 位是整数。输出格式:a:输出警告声音 b:输出退格键,也就是 Backspace 键 f:清除屏幕 n:换行 r:回车,也就是 Enter 键 t:水平输出退格键,也就是 Tab 键 v:垂直输出退格键,也就是 Tab 键 例如 rootlocalhost#printf%s 1 2 3 4 5 6 rootlocalhost#printf%s%s%s 1 2 3 4 5 6 rootlocalhost#printf%s%s%s 1 2 3 4 5 6 ro
38、otlocalhost#printf%s%s%sn 1 2 3 4 5 6 11.4 条件判断 按照文件类型进行判断 例如:rootlocalhost#-e/root/install.log rootlocalhost#-d/root&echo yes|echo no#第一个判断命令如果正确执行,则打印“yes”,否则打 印“no”按照文件权限进行判断 例如:rootlocalhost#-w student.txt&echo yes|echo no#判断文件是拥有写权限的 两个整数之间比较 例如 rootlocalhost#23-ge 22&echo yes|echo no yes#判断 23
39、 是否大于等于 22,当然是了 rootlocalhost#23-le 22&echo yes|echo no no#判断 23 是否小于等于 22,当然不是了 字符串的判断 例如 aa=11 bb=22#给变量 aa 和变量 bb 赋值$aa=bb&echo yes|echo no no#判断两个变量的值是否相等,明显不相等,所以返回 no 多重条件判断 例如 aa=11 -n$aa-a$aa-gt 23&echo yes|echo no no#判断变量 aa 是否有值,同时判断变量 aa 的是否大于 23#因为变量 aa 的值不大于 23,所以虽然第一个判断值为真,返回的结果也是假 11.
40、5 流程控制 单分支 if 条件语句 if 条件判断式 then 程序 fi 单分支条件语句需要注意几个点 if 语句使用 fi 结尾,和一般语言使用大括号结尾不同 条件判断式 就是使用 test 命令判断,所以中括号和条件判断式之间必须有空格 then 后面跟符合条件之后执行的程序,可以放在之后,用“;”分割。也可以换行写入,就不需要“;”了 例如:判断分区使用率#!/bin/bash#统计根分区使用率 rate=$(df-h|grep/dev/sda3|awk print$5|cut-d%-f1)#把根分区使用率作为变量值赋予变量 rate if$rate-ge 80 then echo
41、Warning!/dev/sda3 is full!fi 双分支 if 条件语句 if 条件判断式 then 条件成立时,执行的程序 else 条件不成立时,执行的另一个程序 fi 例如:备份 mysql 数据库#!/bin/bash#备份 mysql 数据库。date=$(date+%y%m%d)#把当前系统时间按照“年月日”格式赋予变量 date size=$(du-sh/var/lib/mysql)#统计 mysql 数据库的大小,并把大小赋予 size 变量 if -d/tmp/dbbak then echo Date:$date!/tmp/dbbak/dbinfo.txt echo
42、Data size:$size /tmp/dbbak/dbinfo.txt cd/tmp/dbbak tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt&/dev/null rm-rf/tmp/dbbak/dbinfo.txt else mkdir/tmp/dbbak echo Date:$date!/tmp/dbbak/dbinfo.txt echo Data size:$size /tmp/dbbak/dbinfo.txt cd/tmp/dbbak tar -zcf mysql-lib-$date.tar.gz /var/li
43、b/mysql dbinfo.txt&/dev/null rm-rf/tmp/dbbak/dbinfo.txt 例如:判断 apache 是否启动#!/bin/bash port=$(nmap-sT 192.168.1.156|grep tcp|grep http|awk print$2)#使用 nmap 命令扫描服务器,并截取 apache 服务的状态,赋予变量 port if$port=open then echo“$(date)httpd is ok!”/tmp/autostart-acc.log else /etc/rc.d/init.d/httpd start&/dev/null e
44、cho$(date)restart httpd!/tmp/autostart-err.log fi 多分支 if 条件语句 if 条件判断式 1 then 当条件判断式 1 成立时,执行程序 1 elif 条件判断式 2 then 当条件判断式 2 成立时,执行程序 2 省略更多条件 else 当所有条件都不成立时,最后执行此程序 fi 例如#!/bin/bash#判断用户输入的是什么文件 read-p Please input a filename:file#接收键盘的输入,并赋予变量 file if -z$file#判断 file 变量是否为空 then echo Error,please
45、 input a filename exit 1 elif !-e$file#判断 file 的值是否存在 then echo Your input is not a file!exit 2 elif -f$file#判断 file 的值是否为普通文件 then echo$file is a regulare file!elif -d$file#判断 file 的值是否为目录文件 then echo$file is a directory!else echo$file is an other file!fi while 循环 while 循环是不定循环,也称作条件循环。只要条件判断式成立,循环
46、就会一直继续,直到条件判断式不成立,循环才会停止。这就和 for 的固定循环不太一样了。while 条件判断式 do 程序 done 例如#!/bin/bash#从 1 加到 100 i=1 s=0 while$i-le 100#如果变量 i 的值小于等于 100,则执行循环 do s=$($s+$i)i=$($i+1)done echo The sum is:$s until 循环 until 循环,和 while 循环相反,until 循环时只要条件判断式不成立则进行循环,并执行循环程序。一旦循环条件成立,则终止循环 until 条件判断式 do 程序 done 举例#!/bin/bash
47、#从 1 加到 100#Author:shenchao(E-mail:)i=1 s=0 until$i-gt 100#循环直到变量 i 的值大于 100,就停止循环 do s=$($s+$i)i=$($i+1)done echo The sum is:$s 12.2RPM 包安装服务的管理 RPM 包安装服务的位置 RPM 安装服务和源码包安装服务的区别就是安装位置的不同 源码包安装在指定位置,一般是/usr/local/RPM 包安装在默认位置中/etc/init.d/:启动脚本位置/etc/sysconfig/:初始化环境配置文件位置/etc/:配置文件位置/etc/xinetd.conf
48、:xinetd 配置文件/etc/xinetd.d/:基于 xinetd 服务的启动脚本/var/lib/:服务产生的数据放在这里/var/log/:日志 独立服务的启动 /etc/init.d/独立服务名 start|stop|status|restart|service 独立服务名 start|stop|restart|status 独立服务的自启动 chkconfig-level 运行级别 独立服务名 on|off 修改/etc/rc.d/rc.local 文件 使用 ntsysv 命令管理自启动 12.3 源码包安装服务的管理 源码包安装服务的启动 使用绝对路径,调用启动脚本来启动。不
49、同的源码包的启动脚本不同。可以查看源码包的安装说明,查看启动脚本的方法。例如:/usr/local/apache2/bin/apachectl start|stop 源码包服务的自启动 例如:rootlocalhost#vi/etc/rc.d/rc.local 加入/usr/local/apache2/bin/apachectl start 让源码包服务被服务管理命令识别 让源码包的 apache 服务能被 service 命令管理 启动 ln-s/usr/local/apache2/bin/apachectl/etc/init.d/apache 让源码包的 apache 服务能被 chkco
50、nfig 与 ntsysv 命令管理自启动 vi/etc/init.d/apache#chkconfig:35 86 76#指定 httpd 脚本可以被 chkconfig 命令管理。格式是:chkconfig:运行级别 启动顺序 关闭顺序#description:source package apache#说明,内容随意 rootlocalhost#chkconfig-add apache#把源码包 apache 加入 chkconfig 命令 13.1 进程管理 查看系统中所有进程 rootlocalhost#ps aux#查看系统中所有进程,使用 BSD 操作系统格式 rootlocal