日期:2014-05-16  浏览次数:20636 次

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/