一。日志文件
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
阅读(778) | 评论(0) | 转发(0) |