嵌入式成长轨迹13 【嵌入式环境及基础】【Linux shell深入】【运行级别脚本介绍】

 

一、运行级别
1、运行级别目录
/etc/rcN.d N代表0、1、2...

2、查找当前运行级别
runlevel

3、运行级别目录文件格式
SXXscript,KXXscript
 S代表服务启动,K代表服务停止,XX是两位级别数字

【终端示例】

[root@localhost ~]# cd /etc/rc3.d/
[root@localhost rc3.d]# ls
K01smartd K73ypbind S15mdmonitor
K01smolt K74lm_sensors S18rpcidmapd
K02NetworkManager K74nscd S19rpcgssd
K02NetworkManagerDispatcher K74ntpd S25netfs
K05innd K84btseed S25pcscd
K05saslauthd K84bttrack S26rsyslog
K10dc_server K87multipathd S26udev-post
K10psacct K88nasd S27messagebus
K12dc_client K88wpa_supplicant S28autofs
K15httpd K89dund S28setroubleshoot
K20jetty K89netplugd S44acpid
K20nfs K89pand S50bluetooth
K20tomcat5 K89rdisc S55sshd
K24irda K91capi S80sendmail
K25squid S00microcode_ctl S85gpm
K30spamassassin S03vmware-tools S90ConsoleKit
K35dovecot S05kudzu S90crond
K35nmb S06cpuspeed S95atd
K35smb S08ip6tables S96avahi-daemon
K36lisa S08iptables S97yum-updatesd
K36mysqld S09isdn S98cups
K36postgresql S10network S98haldaemon
K50netconsole S11auditd S99anacron
K50vsftpd S12restorecond S99firstboot
K69rpcsvcgssd S13irqbalance S99local
K73named S13rpcbind
K73winbind S14nfslock

 

 

二、inittab
1、运行级别控制文件
 /etc.inittab

2、修改inittab文件

三、启动应用程序
1、启动脚本分析
start|stop|restart
cat /etc/init.d/crond

2、启动脚本
service server start|stop|restart|...
server 是脚本名字
script_name start|stop|restart


脚本实例

cpdir.sh
实现复制文件夹但不复制其中文件
当测试编程结束后,想将文件夹清空但一个个文件删除又非常麻烦,就可以复制空文件夹之后直接覆盖

 1 #! /bin/bash
2 #cpdir.sh
3 #此脚本用于将源目录下的子目录全部复制到目的目录中,不复制原目录中的文件,确保目的目录中的子目录是空目录。
4
5 #脚本用法函数
6 usage()
7 {
8 echo "cpdir.sh 源目录 目的目录"
9 }
10
11 #判断是否为两个参数,否则提示脚本用法
12 #注意$#用来列出参数个数
13 if [ $# -ne 2 ]
14 then
15 {
16 usage
17 exit 0
18 }
19 fi
20
21 srcdir=$1
22 desdir=$2
23 #判断源目录${srcdir}是否为目录,否则提示错误信息和用法
24 if [ ! -d $srcdir ]
25 then
26 {
27 usage
28 echo "错误:源目录${srcdir}不是目录"
29 exit
30 }
31 fi
32
33 #判断目的目录${desdir}是否为目录,否则提示错误信息和用法
34 if [ ! -d $desdir ]
35 then
36 {
37 usage
38 echo "错误:目的目录${desdir}不是目录"
39 exit
40 }
41 fi
42 processid=$$;
43
44 #查找源目录下的所有子目录,输出并保存到/tmp/srcdir_进程号.txt文件中
45 echo "源目录下${srcdir}所有的子目录"
46 echo "-------------------------------"
47 find $srcdir/* -type d | /usr/bin/tee /tmp/srcdir_tmp_${processid}.txt
48 sed "s/^${srcdir}/${desdir}/g" /tmp/srcdir_tmp_${processid}.txt >/tmp/srcdir_${processid}.txt
49
50 #在目的目录下建立空子目录
51 rm -rf ${desdir}/*
52 for subdir in `cat /tmp/srcdir_${processid}.txt`
53 do
54 {
55 mkdir ${subdir}
56 }
57 done
58 echo ""
59 echo "目标目录下${desdir}所有的子目录"
60 echo "-------------------------------"
61 find $desdir/* -type d | /usr/bin/tee /tmp/desdir_${processid}.txt
62 #比较在目的目录下建立空子目录后的差异
63 echo ""
64 echo "比较目标目的和源目录的差异"
65 echo "--------------------------"
66 diff /tmp/desdir_${processid}.txt /tmp/srcdir_${processid}.txt
67 rm -f /tmp/srcdir_${processid}.txt
68 rm -f /tmp/desdir_${processid}.txt
69 rm -f /tmp/srcdir_tmp_${processid}.txt

 

终端

[root@localhost ~]# cpdir.sh 图片 图片1
源目录下图片所有的子目录
-------------------------------
图片/其他
图片/桌面

目标目录下图片1所有的子目录
-------------------------------
图片1/其他
图片1/桌面

比较目标目的和源目录的差异
--------------------------

 

 

posted @ 2012-03-06 19:26  MooreZHENG  阅读(354)  评论(0编辑  收藏  举报