- 论坛徽章:
- 0
|
多谢,不过觉得这个方法还是比较没有效率,用户太多的话会启动很多进程
还是有几个问题,进程如果被kill -9杀掉,运行标志不会被清除,不知道为什么,kill可以,貌似9信号捕捉不到
没有使用HISTFILE变量,那样会导致set -o vi后,esc+k的结果输出时间
所以实现方法改为,刷新.sh_history到另外一个文件,再加入时间戳
root@f80:[/tmp]#cat timeinsert
trap "do_exit" 1 2 3 9 15
do_exit()
{
rm /tmp/$LOGNAME/timeinsert.flag
exit 0
}
>/tmp/$LOGNAME/timeinsert.flag
while [ 1 = 1 ]
do
echo `date` >> $my_HISTFILE
sleep 3
done
root@f80:[/tmp]#cat sh_sync
trap "do_exit" 1 2 3 9 15
do_exit()
{
rm /tmp/$LOGNAME/sh_sync.flag
exit 0
}
>/tmp/$LOGNAME/sh_sync.flag
tail -f ~/.sh_history >> $my_HISTFILE
root@f80:[/tmp]#tail -20 /etc/profile
cd /tmp
if [ ! -d $LOGNAME ];then
mkdir $LOGNAME
fi
my_HISTFILE=/tmp/$LOGNAME/sh.out
export my_HISTFILE
if [ ! -f /tmp/$LOGNAME/timeinsert.flag ];then
nohup /tmp/timeinsert &
fi
if [ ! -f /tmp/$LOGNAME/sh_sync.flag ];then
nohup /tmp/sh_sync &
fi |
|