linux笔记3
linux笔记3
2011年06月13日
循环语句
1,break命令
break即中断的意思,用于跳出当前所在的循环体,但是并不退出程序
例:循环提示用户输入字符串,并将每次输入的内容保存到临时文件 “/tmp/input.txt 中”
当用户输入“END”字符串时退出循环体,并统计出input.txt文件中的行数、单词数、字节数等
信息,统计完后删除临时文件
[root@localhost ~]#vi inputbrk.sh
#!/bin/bash
while true
do
read -p "input a string :" STR
echo $STR >> /tmp/input.txt
if [ "$STR" ="END" ]; then //建议为STR变量使用引号,以免字符串中有空格时出错
break
fi
done
wc /tmp/input.txt
rm -f /tmp/input.txt
[root@localhost ~]#sh inputbrk.sh
input a string: benet 3.0
input a string :accp 6.0
input a string :END
3 5 23 /tmp/input.txt
2,continue 命令
continue 即“继续” 的意思,用于暂停本次循环,跳转至循环语句的顶部重新测试条件,本次执行过程
中continue后的命令序列将被忽略
例: 删除系统中的stu1~stu20 各用户帐号,但是stu8 stu18 除外
[root@localhost ~]#vi delsome.sh
#!/bin/bash
i=1
while [ $i -le 20 ]
do
if [ $i -eq 8 ]|| [ $i -eq 18 ] ; then //碰到需 要保留的用户时跳转而不删除
let i++
continue
fi
userdel -r stu$!
let i++
done
[root@localhost ~]#grep "stu" /etc/passwd //确认执行结果
shell函数的应用
函数的定义和调用
在使用一个shell函数之前,要求必须称进行定义(定义函数的语句必须在使用函数的语句之前),定义函数的语句格式如下
fuction 函数名 {
命令序列
}
或者简化成
函数名()
{命令序列
}
其中函数名称是由用户自行设置,命令序列则是需要重复使用的许多条命令,调用函数时,直接使用函数名即可(不需要加小
括号)
例: 在脚本中定义一个help函数,当用户输入的脚本参数不是"start" 或“stop”时,加载该函数并给出关于
命令用法的帮助信息,否则给出对应的提示信息。
[root@localhost ~]# vi helpfun.sh
#!/bin/bash
help(){ //定义help() 函数,用于显示脚本执行帮助
echo "usager: "$0" start|stop " //"$0" 变量用于表示本脚本文件名称
}
case "$1" in
start)
echo "starting …"
;;
stop)
echo "shutdown…"
;;
*)
help //调用前面定义的help()函数并执行其中的语句
esac
[root@localhost ~]#chmod a+x helpfun.sh
[root@localhost ~]#./helpfun.sh start
starting……
[root@localhost ~]#./helpfun.sh restart //参数不符合要求时,输出执行的帮助信息。
usage: ./helpfun.sh start | stp
函数的参数
在shell脚本中,已经定义的函数就相当于脚本内部设置的命令一样,也可以使用位置参数,如果函数中的命令序列能够
处理这些参数,则使用参数传递功能可以实现更加灵活的应用。
例:在脚本中定义一个加法函数,用于计算 两个数的和,并调用该函数分别计算12+34 56+789 的和
[root@localhost ~]#vi adderfun.sh
#!/bin/bash
adder() {
echo `expr $1 + $2`
}
adder 12 34 //将12、34作为adder函数的位置变量$1 $2
adder 56 789 //将56、789作为adder函数的位置变量 $1 $2
[root@localhost ~]#sh adderfun.sh
46
845
第九章 系统故障分析与报告
熟悉觉日志文件及其分析方法
会解决常见的启动登录类故障
会解决常见的软件包安装类故障
会解决常见的文件系统、磁盘类故障
熟悉觉的系统性能监控方法
学完本章内容,学员将能够解决以下问题
1,如何通过日志分析排除故障,查找威胁?
2,因对“/etc/fstab”文件的误操作导致无法进入系统,如何使用linux安装光盘进行修复
3,当忘记linux系统管理员的密码时,如何进入系统进行维护
4,因管理员误删了几个文件,导致系统开机后无法进入系统,仅显示一个“grub>”的提示符,
应如何解决该故障
5,对于使用windows和linux双系统主机,在重新安装windows系统后,无法启动进入linux系统中,应该如何解决
6,在安装一个软件的时候,提示缺少一个.so文件,使得安装无法继续,应如何解决
linux
主要日志文件
1,内核及系统日志
由syslog,统一管理,
2,用户日志:这种日志,数据用于linux系统用户登录及退出系统的相关信息,包括,用户名、登录的终端
登录时间 来源主机,正在使用的进程操作等
3,程序日志:
默认放在目录“/var/log”中,一部分程序共用一个日志文件,
例:列表查看“/var/log”目录中的各种日志文件及子目录
[root@localhost ~]#ls /var/log
/var/log/messages:记录linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等
对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
/var/log/cron:记录cron计划任务产生的事件信息
/var/log/dmesg:记录linux系统在引导过程中的各种事件信息
/var/log/maillog:记录进入或发出系统的电子邮件活动
/var/log/lastlog:最近几次成功登录事件和最后一次不成功登录事件。
/var/log/rpmpkgs;记录系统中安装的各rpm包列表信息
/var/log/secue:记录用户登录认证过程中的事件信息
/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。
/var/run/utmp:记录当前登录的每个用户的详细信息
例:查看日志配置文件“/etc/syslog.conf”内容
[root@localhost ~]#grep -v "^$" /etc/syslog.conf
#log all kernel messages to the console.
#loging much else clutters up the screen.
#kern.* /dev/