Назад | Перейти на главную страницу

Программная ссылка Linux на папку с датой в пути

У меня есть система ведения журналов, которая ежедневно записывает файлы журнала в подкаталоги, например:

/var/log/xyz/2015/03/10/log.log

В моем домашнем каталоге (или где-то еще) мне нужна мягкая ссылка на последний файл журнала, как это.

ln -s /var/log/xyz/CURRENT_YEAR/CURRENT_MONTH/CURRENT_DAY/log.log ~/log.log

Можно ли получить такую ​​динамическую ссылку?

Я не знаю никакого способа создать динамическую символическую ссылку, которую вы ищете напрямую, но другой вариант - установить переменную среды или псевдоним в вашем файле .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

Да, вы сможете сделать это довольно легко с помощью подстановки команд в задании cron, отредактируйте свой пользовательский cron с помощью следующей команды:

crontab -e

Затем добавьте следующие записи, которые будут запускаться в 9:00 и 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/

Надеюсь, это поможет!