※ 引述《icetofux ()》之铭言:
: 我写了一支长时间运行的程式,在运行过程中会持续产生讯息至stdout,我不想太
: 频繁的读写储存空间,所以我目前以
: $my_app > /dev/shm/my_app.log
: 的方式运行程式,将讯息输出到内存构成的档案系统中,当想要看即时讯息时以
: $tail -f /dev/shm/my_app.log
: 的方式将输出讯息显示到终端,目前运行的还不错,但考虑到如果程式持续运行超过
: 一个月,我的/dev/shm/可能会不够,请问有没有什么方法让my_app.log在超过指定
: 行数的时候,清除最顶端开始的n行呢?
: 谢谢。
建立一个 script /usr/local/bin/log-dispatch.sh
由它帮你分档,下面的例子是以分为档案
#!/bin/sh
while read -r LINE
do
echo `date`,$LINE >> /dev/shm/`date +%Y%m%d%H%M`.log
done
根据 log 量可调整切档周期
date +%Y%m%d%H #每小时
date +%Y%m%d #每天
另外再排程清理比较旧的档