Linux 软链接到路径中带有日期的文件夹

Linux 软链接到路径中带有日期的文件夹

我有一个日志系统,它每天将日志文件写入以下子目录中:

/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/

希望有帮助!

相关内容