我有一个日志系统,它每天将日志文件写入以下子目录中:
/var/log/xyz/2015/03/10/log.log
在我的主目录(或其他任何地方)中,我想要一个指向最新日志文件的软链接,就像这样。
ln -s /var/log/xyz/CURRENT_YEAR/CURRENT_MONTH/CURRENT_DAY/log.log ~/log.log
有可能获得这样的动态链接吗?
答案1
我不知道有什么方法可以创建您正在寻找的动态符号链接,但另一种选择是在 .bashrc 文件中设置环境变量或别名(假设您使用 bash)。
export currentlog=$(date '+/var/log/xyz/%Y/%m/%d/log.log')
然后要使用环境变量,只需说 $currentlog 而不是 ~/log.log 。
例如(将文件放在我的主目录而不是 /var/log 中):
# export currentlog=$(date '+/home/userid/%Y/%m/%d/log.log')
# echo "TEST LOG INFO" > /home/userid/2015/03/11/log.log
# cat $currentlog
TEST LOG INFO
# ls -l $currentlog
-rw-rw-r--. 1 userid userid 0 Mar 11 13:16 /home/userid/2015/03/11/log.log
# grep TEST $currentlog
TEST LOG INFO
答案2
是的,您应该能够使用 cron 作业中的命令替换轻松完成此操作,请使用以下命令编辑您的用户 cron:
crontab -e
然后添加以下条目,分别在上午 9 点和上午 9:01 运行。
0 9 * * * rm ~/log.log
1 9 * * * ln -s /var/log/xyz/$(date +%Y)/$(date +%m)/$(date +%d)/log.log ~/log.log
或者,也可以同时按顺序运行它们:
0 9 * * * rm ~/log.log; ln -s /var/log/xyz/$(date +%Y)/$(date +%m)/$(date +%d)/log.log ~/log.log
这将产生如下的符号链接:
/var/log/xyz/2015/03/11/log.log => ~/log.log
如果格式与上面的不同(例如使用单词 March 而不是数字 03),请查看本指南以了解如何更改格式:
http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/
希望有帮助!