linuxscreen打印日志

本文发布时间: 2019-Mar-22
需求:公司某后台程序是在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/bashexport LANG=zh_CN.UTF-8declare -i portkillall screenrm -rf /root/screenlog/*.logecho "logfile /root/screenlog/%t-`date +%Y%m%d-%H%M%S`.log" >> /opt/sjzq/screenrc_temp\cp -rf /opt/sjzq/screenrc_temp /etc/screenrcfor 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 fidonesed -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


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:10pm
栏目列表