我爱电脑技术论坛's Archiver

小迷糊 发表于 2008-6-10 10:18

Linux下判断是否正常关机的一个简单方法

思想:系统启动的时候生成一个文件,正常关机的时候则删除这个文件,则可以根据系统开机时有没有那个文件来判断是不是非正常关机。
2qVVGV:R%f~~y
h\E*c#P;XK;Q^ Cq3Q!Uy:[q5k#P~
步骤:
%w]Ey-X 9VT]9\7|+B
9K%Y _@2k"t X#H3B W1~
在/etc/rc.d/init.d/下编程脚本。 d*q7h:W-Z4lj\%k
-Ai3X P0V

(S.yn5B!K Z$h,o 判断是否正常关机,和生成文件的脚本:touch-file.sh
q+Lv%T K4] i!~ 1NLt3v l8P

:rd)b0{8E'`QKX H 5_Vn9{,F%J]_
#!/bin/sh
"L e8~[Y'l1i g2b file=/tmp/check C!SK+X)w5\T
if [ -e ${file} ];thenc+Dzw;hk o#zN;HY
echo "this is not normal shutdown" >>/var/log/checkmessage
Qu+c(w|N4Fk_ else
0Z)h\R KA6S m echo "this is normal shutdown and touch file" >>/var/log/checkmessagen6A!a ~F\X_.B
touch ${file}Y3X)w:AU gzE W
fi
1YtH0jZ] 1FP(Ki;Pa

'w|\qh
EY2YkNAVh` 正常关机删除文件的脚本:rm-file.sh
?`4Ge$y V s8^H[0g8\)l
LE!i Ka]
4I7c%fyQ
#!/bin/sh }Yl`4K-aWAq-m
file=/tmp/check
Sx%s2mT echo "this is normal shutdown and rm file" >>/var/log/checkmessagez;^J^U(S(A3y.ly4I
rm -rf ${file}
2WV@uh
cd%g-YW1\|^A7P
/ws0W4iL~ x;O(['h U:o
让脚本自动执行。 &j2rT8@:~}-E,J{h$X:N

xMZ:pV*FB%` qL5K'P6V

PA6C5Db6C ln -s /etc/rc.d/rc0.d/K01rm-file /etc/rc.d/init.d/rm-file.sh
BM8@:Is Y Mb+|0Q S0ZqE
|0i$qd0M

9y^1~v DZ1G^ V 注意:
[%j)J&r QW
nj'HG6K1g|wz O5e'?1I B,b

;TK0U Q:\u`M9hT #ll /etc/rc.d/rc0.d/O7p(Sb%V"dv1})pQ

h7B R R9z*S\4M E*\X 5G'_N!l[ ZJ

'hnM`'YI K#` 软连接两边的名字不哪呢个相同,后一个可以用绝对路径或是相对路径,千万保证两边的名字不一样。
,qvEZ)W.p.B X{ 4H+gumfQ-t*A?

o;h0R'Ruy F7Nu?!I*r3h
!Pn%p P0M3rUWV+` X ln -s /etc/rc.d/rc6.d/K01rm-file /etc/rc.d/init.d/rm-file.sh3@UvX1?
ln -s /etc/rc.d/rc3.d/S01touch-file /etc/rc.d/init.d/touch-file.sh
Jr gJ.R!u2_&vk f5zf9?\0U
G-w3FHhN
2L@G lr)~"S
我的系统没用到x-window,所以没有level5,也就是不用在/etc/rc.d/rc5.d/下放脚本。
{o-z t3JL
,C^8H)?eG"T!] PmR Q(T(X+c^5W't
特别注意: U}B;d!Ihl B
sY#F,A1s!xJ,j9c
+R S9Tz~ O/G
K开头的代表系统关闭的时候执行,S开头的代表开机的时候执行。注意服务器脚本编写的规范,因为有K开通的软链接并不一定会在关机的时候自动去执行,这是为什么呢?执行K脚本的时候会查询/var/lock/subsys/下是否有与K开头脚本同名的空文件名,如果没有就不去执行,所以要按照服务器脚本编写的规范,启动的时候要在/var/lock/subsys/先touch一个与K01后面同名的空文件:
Hg5E#WQ
q GF'h:qS hWr+u(a;o,P9L'R-W8`

g)j3g:F{0fDk | #/var/lock/subsys
:`4\ nr(U-p7A&uv6vm #touch fm-file

页: [1]
   

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.