日志文章

2007年02月02日 10:32:31

Shell编程笔记(高级3\4)--运行级别脚本介绍和脚本分析

               高级第三章 运行级别脚本介绍
1.运行级别
  (1)运行级别目录(/etc/rN.d)。 (N为1,2,3,4,5,6)
  (2)查看当前运行级别,命令:runlevel
  (3)运行级别目录文件格式(SXXscript,KXXscript),S表示在这个运行级别下面这个脚本的服务是打开的,K表示这个脚本的服务是停止的。
2.inittab
  (1)运行级别控制文件(/etc/inittab)
  (2)修改inittab文件
      其中有一行"id:5:initdefault" 5是X11的启动模式,可以在此处更改启动模式,一般服务器是选择3(带网络连接的多用户模式),0-6的运行级别表示如下:
       0   关机(不要设置initdefault为0)
        1     单用户模式
       2   不带网络连接的多用户模式
       3   带网络连接的多用户模式
       4   暂时没用到
       5   X11
        6     重起(不要设置initdefault为6)
      其中有一行"# Things to run in every runlevel"该行下面可以添加各个级别下的运行脚本。比如添加"checkdisk:3:once:/sbin/checkdisk.sh >/dev/console 2>&1"
      checkdisk:服务名称
      3:表示当用户启动模式3时自动运行该脚本(不写的话表示所有模式下自动启动)
    once:启动一次
    /sbin/checkdisk.sh:脚本
    >/dev/console 2>&1 将标准错误和标准输出重定向到文件/dev/console中
3.启动应用程序 
  (1)启动脚本分析(start|stop|restart)
    cat /etc/init.d/crond
  (2)启动脚本
    service server start|stop|restart| ....
    script_name start|stop|restart
  举例:service crond restart 重起crond服务
     service crond status 查看crond服务的状态

           高级第四章 脚本实例分析
1.cpdir.sh
#!/bin/bash
#cpdir.sh
#此脚本用于将源目录下的子目录全部复制到目的目录中,不复制目录中的文件,确保目的目#录中的子目录是空目录。
 #脚本用法函数
 usage()
{
  echo "cpdir.sh 源目录 目的目录"
 }
#判断是否为两个参数,否则提示脚本用法
 #if [ $# -ne 2]
then
{
  usage
  exit 0
}
fi
srcdir =$1
desdir=$2
#判断源目录${srcdir}是否为目录,否则提示错误信息和用法
 if[ ! -d ${srcdir} ]
then
{
  usage
  echo "错误:源目录${srcdir}不是目录"
  exit
}
fi
#判断目的目录${desdir}是否为目录,否则提示错误信息和用法
 if[ ! -d ${desdir} ]
then
{
  usage
  echo "错误:目的目录${desdir}不是目录"
  exit
}
fi
 processid=$$
#查找源目录下所有的子目录,输出并保存到/tmp/srcdir_pid.txt文件中
 echo "源目录${srcdir}下的所有子目录"
 echo "***********************************"
find ${srcdir}/* -type d |tee /tmp/srcdir_tmp_${processid}.txt
sed "s/^${srcdir}/${desdir}/g}" /tmp/srcdir_tmp_${processid}.txt >/tmp/srcdir_${processid}.txt
#在目的目录下建立空目录
rm -rf ${desdir}/*           
for subdir in `cat /tmp/srcdir_${processid}.txt`
do
{
  mkdir ${subdir}
}
done
echo "目标目录${desdir}下的所有的子目录"
echo "***********************************"
find ${desdir}/* -type d | tee /tmp/desdir_${processid}.txt
echo "比较目标目录和源目录的差异"
 echo "***********************************"
diff /tmp/desdir_${processid}.txt /tmp/srcdir_${processid}.txt 
rm -f /tmp/desdir_${processid}.txt /tmp/srcdir_${processid}.txt #删除临时文件

Tags: 运行级别   脚本   shell  

类别: 技术文章 |  评论(0) |  浏览(1506) |  收藏
发表评论
看不清楚,换一张