我有每30分钟一班,以产生与时间戳这样的日志文件,一个cron作业:shell脚本每天创建文件夹时间戳和推时间戳生成的日志
test20130215100531.log,
test20130215102031.log
我会喜欢每天用日期时间戳创建一个文件夹,并在生成时将日志文件推入相应的日期文件夹。
我需要在AIX服务器上用bash实现这一点。
我有每30分钟一班,以产生与时间戳这样的日志文件,一个cron作业:shell脚本每天创建文件夹时间戳和推时间戳生成的日志
test20130215100531.log,
test20130215102031.log
我会喜欢每天用日期时间戳创建一个文件夹,并在生成时将日志文件推入相应的日期文件夹。
我需要在AIX服务器上用bash实现这一点。
也许你正在寻找一个这样的脚本:
#!/bin/bash
shopt -s nullglob # this line is so that it does not compain when no logfiles are found
for filename in test*.log; do # Files considered are the ones startign with test and ending in .log
foldername=$(echo "$filename" | awk '{print (substr($0, 5, 8));}'); # The foldername is characters 5 to 13 from the filename (if they exist)
mkdir -p "$foldername" # -p so that we dont get "folder exists" warning
mv "$filename" "$foldername"
echo "$filename $foldername" ;
done
我只跟你的样品进行测试,因此使用在包含重要的东西目录前做了正确的测试。
编辑回应评论:
更改原始脚本这样的:
foldername=$(date +%Y%m%d)
mkdir -p /home/app/logs/"$foldername"
sh sample.sh > /home/app/logs/"$foldername"/test$(date +%Y%m%d%H%M%S).log
或者是创建其他地方的目录,只是这样做:
sh sample.sh > /home/app/logs/$(date +%Y%m%d)/test$(date +%Y%m%d%H%M%S).log
非常感谢!如果我可以在一天开始时只创建一次目录,并且将同一天的日志写入目录,那将如何呢?现在..我正在通过一个放置在带有时间戳的位置的脚本形成日志。 – user1746666 2013-02-15 14:19:09
你可以发布你的脚本创建日志文件的时间戳部分吗?从此工作更容易。 _(如果你编辑你的问题,也在这里留下评论,所以我得到通知)_ – user000001 2013-02-15 14:26:56
//我在这里做一些配置的东西,然后执行另一个脚本来创建文件如下。 sh sample.sh>/home/app/logs/test $(日期+%Y%m%d%H%M%S).log 上面每30分钟运行一次,每天生成48个日志 – user1746666 2013-02-15 14:38:14
你应该使用logrotate!它可以为你做到这一点,你可以写入相同的日志文件。
检查他们的手册页信息: http://linuxcommand.org/man_pages/logrotate8.html
怎么样,在00.00创建目录,每天晚上一个cronjob?然后修改实际的cronjob将文件推送到这个目录。 – fedorqui 2013-02-15 12:34:11
我会建议'mkdir -p'每次创建丢失的目录,而不会抱怨它已经存在。如果00:00工作因某种原因(系统停机)失败而运行,我们是否希望所有日常工作因此而失败? – 2013-02-15 12:36:26
是的,你是对的。我更喜欢你的选择。 – fedorqui 2013-02-15 12:42:21