linux screen打印日志

需求:公司某后台程序是在screen下执行的,只能通过恢复到窗口进行查看并且无法查看全部信息;由于更新后台程序后需要重启后台,通过查看后台程序的执行过程来判断此次更新是否成功,现需要将后台程序的screen运行信息打印到日志,并提供给开发者调试。

实现思路:1.将screen日志输出到某文件,并给开发者开通读文件权限;

    2.将日志名称加上时间,以通过日志名称就可轻易辨认后台是否重启成功;

    3.每次重启后台都要将原日志删除,以便节省空间并重新生成带有时间的日志名

实现过程:

要点:1.更改screen配置文件/etc/screenrc  在最后加上一行logfile /root/screenlog/%t-20140905-163549.log

         2.启动screen命令   需要加上相关参数

 /usr/bin/screen -L -t aa1-dmS aa1 ./aa1 

这里我一脚本的方式实现,日志文件名字会根据时间生成。

#!/bin/bash
export LANG=zh_CN.UTF-8
declare -i port
killall screen
rm -rf /root/screenlog/*.log
echo "logfile /root/screenlog/%t-`date +%Y%m%d-%H%M%S`.log" >> /opt/sjzq/screenrc_temp
\cp -rf /opt/sjzq/screenrc_temp /etc/screenrc
for i in `seq 1 6`
do
        n=`pgrep aa$i |wc -l`
        if [ $n -eq 0 ];then
                cd /fb$i
                /usr/bin/screen -L -t aa$i -dmS aa$i ./aa$i >/dev/null 2&1
        fi
done
sed -i '$d' /opt/sjzq/screenrc_temp


每次执行guard1.sh,会重启screen,我们看到会在/root/screenlog下生成以会话名称+时间组合而成的日志,这样根据时间我们可以判断日志重启,并能够查看相关日志了.
[root@localhost sjzq]# bash guard1.sh 
[root@localhost sjzq]# ls /root/screenlog/
aa1-20140905-165056.log  aa2-20140905-165056.log  aa3-20140905-165056.log  aa4-20140905-165056.log  aa5-20140905-165056.log  aa6-20140905-165056.log
[root@localhost sjzq]# bash guard1.sh
[root@localhost sjzq]# ls /root/screenlog/
aa1-20140905-165127.log  aa2-20140905-165127.log  aa3-20140905-165127.log  aa4-20140905-165127.log  aa5-20140905-165127.log  aa6-20140905-165127.log


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值