当前位置: 技术问答>linux和unix
关于日志的写法
来源: 互联网 发布时间:2015-05-20
本文导语: 我需要记录一个程序的运行日志 用了这么一个命令: nohup ./run.sh >server.log 2>&1 & 但过了几天后, 就发现server.log就上了1000M, 请教各位高手, 有没有什么方法可以按日期每天生成类似于 server.yyyy.mm.dd.log这种日志, 这...
我需要记录一个程序的运行日志
用了这么一个命令:
nohup ./run.sh >server.log 2>&1 &
但过了几天后, 就发现server.log就上了1000M,
请教各位高手, 有没有什么方法可以按日期每天生成类似于 server.yyyy.mm.dd.log这种日志, 这样的话, 一天也最多也只有几十M的日志.
谢谢.
用了这么一个命令:
nohup ./run.sh >server.log 2>&1 &
但过了几天后, 就发现server.log就上了1000M,
请教各位高手, 有没有什么方法可以按日期每天生成类似于 server.yyyy.mm.dd.log这种日志, 这样的话, 一天也最多也只有几十M的日志.
谢谢.
|
这个问题有很多种解决方案,比较通用的是在你的程序里截获SIGHUP信号,然后将你的日至关闭然后重新打开,但是文件名不变,然后运行你的程序,在cron里每天定时运行一个shell,shell的功能就是先将log改名(也就是你说的 server.yyyy.mm.dd.log),通过mv就可以,然后向你的程序发送SIGHUP信号,这样你的fd关闭以后重新开始,就会又生成新的log了。注意顺序不能变,必须是先mv,然后kill -SIGHUP,否则会丢失部分日至内容的。
|
CoolQ的方法可行,不过不需要改应用截获SIGHUP。用cp或ln改变/部分文件名后,用>server.log清空日志文件即可。
|
run.sh不是脚本吗? 为什么改不了? 没明白。
如果这个脚本是可以停一下的,那很简单,写个脚本,定时重启,每次重新生成一个文件名,启动时重新重定向到新文件名就可以了。
如果这个脚本是可以停一下的,那很简单,写个脚本,定时重启,每次重新生成一个文件名,启动时重新重定向到新文件名就可以了。
|
用date命令动态生成日志文件名称不就行了。