Chinaunix首页 | 论坛 | 博客
  • 博客访问: 469630
  • 博文数量: 164
  • 博客积分: 4024
  • 博客等级: 上校
  • 技术积分: 1580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-10 16:27
文章分类

全部博文(164)

文章存档

2011年(1)

2010年(108)

2009年(55)

我的朋友

分类:

2009-10-26 16:49:14

一。日志文件
1.创建日志文件的重要性
2.以时间为标识的日志文件
#!/bin/bash
#datelog.sh
#当前的日期
current_date=`date "+%Y%m%d"`
#今天的日志文件名
todaylog="log/${current_date}.log"
#如果日志文件不存在,创建一个
if [ ! -f $todaylog ]
then
touch $todaylog
fi
#输出日志到日志文件
log_time_format=`date "+%Y-%m-%d %T"`
echo "${log_time_format}命令开始"》>>$todaylog
#command blocks
sleep 4
#输出日志到日志文件
log_time_format=`date "+%Y-%m-%d %T"`
echo "${log_time_format}命令结束"》>>$todaylog
3.以进程号为标识的临时文件
#!/bin/bash
#kill_pocess.sh
#取得当前进程号
current_PID=$$
#获得特定进程的进程号并重定向到一个临时文件中
ps -aux|grep "/usr/sbin/httpd"|grep -v "grep"|awk '{print $2}'>
         /tmp/{current_PID}.txt
#命令块开始
#for pid in `cat /tmp/${current_PID}.txt`
#do
#{
#echo "kill -9 $pid"
#kill -9 $pid
#}
#done
#命令结束
#删除临时文件
#rm -f /tmp/${current_PID}.txt
 
 
二。信号
1.信号就是系统向脚本或命令发出的消息,告知他们某个事件的发生
2。kill -l 列出所有的信号
   kill 发出信号给进程
3.
信号    信号名          含义
1      SIGUP          挂起或父进程被杀死
2      SIGINT         来自键盘的中断信号,通常是CRTL-C
3      SIGQUIT        从键盘退出
9      SIGKILL        无条件终止
11     SIGSEGV        段(内存)冲突
15     SIGTERM        软件终止(缺省杀进程)
信号0为“退出shell”信号。为了发出信号0,只要从命令行键入exit,或在一个进程或命令行使用CTRL-D即可
 
kill -l
ps -ef |grep "httpd"|grep -v "grep"
kill -s SIGKILL 7696
kill -9 7696
kill -s SIGUP 7031
kill -1 7031
exit/ctrl -D
 
 
三。trap捕捉信号
1.信号可以被应用程序或脚本捕获,并依据该信号(1、2、3和15)采取相应的行动。一些信号不能被捕获。列如,如果一个命令收到了信号9,就无法再捕获其他信号了
2.捕捉到一个信号后,它可能会采取下面三种操作之一:
  1)不采取任何行动,由系统来进行处理
 2)捕获该信号,但忽略它
 3)捕获该信号,并采取相应的行动
3.trap可以使你在脚本中捕获信号。命令形式为:
 trap name signal(s)
其中,name是捕获到信号以后所采取的一系列操作。实际中,name一般是一个专门用来处理所捕捉信号的函数。name需要用双引号(”“)引起来。
signal就是待捕捉的信号
最常见的行动包括:
1)清除临时文件
2)忽略该信号(trap ”“ 2 3)
3)询问用户是否终止该脚本的运行
 
#!/bin/bash
#trap1.sh
trap 'exitprocess' 2
loop=0
function exitprocess()
{
 echo "you just hit ,at number $loop"
 echo "i will now exit"
 exit 1
}
while:
do
loop=$[$loop+1]
echo $loop
sleep 1
done
 
 
 
#!/bin/bash
#trap2.sh
loop=0
trap 'exitprocess' 2
hold1=/tmp/hold1.$$
hold2=/tmp/hold2.$$
 
function exitprocess()
{
echo -e "\nrecieved interrupt"
echo -n "do you rearlly wish to exit?(y/n)"
read ans
case $ans in
Y|y)rm_tmp_file
    ;;
N|n);;
*)exitprocess
  ;;
esca
}
 
function rm_tmp_file()
{
 echo "detected.. Now cleaning up... wait"
 rm /tmp/*.$$ 2>/dev/null
 exit 1
}
 
while:
do
 loop=$[ $loop+1 ]
 echo $loop
 df>>$hold1
 ps -xa >>$hold2
sleep 1
done
 
 
 
四。eval
1.eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量
MYFILE=”cat myfile“;  `eval $MYFILE`
eval `cat myfile`
 
 
无。logger
1.logger命令向/var/log/message文件发送消息
2.logger命令的一般形式为:
logger -p -i message
-p:为优先级,这里只涉及到提示用户注意的优先级,这也是缺省值
-i:在每个消息中记录发送消息的进程号
 
cat /var/log/message
logger -p -i "china"
cat /var/log/message
 
阅读(736) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~