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

Переменные среды по самой своей природе доступны для всех процессов, запускаемых процессом/оболочкой, которые устанавливают переменные среды.

Переменная среды в Unix — это переменная оболочки, которая экспортируется с помощью export, например

MYVAR="my value"
export MYVAR

Обычно переменные среды задаются в файле запуска оболочки. В случае bash это находится в ~/.bash_profile, и многие другие оболочки используют ~/.profile.

В /etc (например, /etc/profile) есть общесистемные сценарии инициализации оболочки, которые можно использовать для настройки среды для всех пользователей.

Переменные среды также могут быть установлены глобально для всех пользователей независимо от оболочки, но это делается по-разному в зависимости от вашего варианта Unix. Большинство BSD могут сделать это, изменив /etc/login.conf, в то время как некоторые Linux используют /etc/environment или другие механизмы.

1
25.08.2016, 20:18
1 ответ

Вместо создания файла abc.xyz создайте символическая ссылка на (реальный) файл abc.xyz.YYYYMMDD :

linkname="abc.xyz"

today="$( date +"%Y%m%d" )"
filename="$linkname-$today"

if [[ ! -e "$filename" ]] || [[ ! -e "$linkname" ]]; then
    touch "$filename"
    ln -s -f "$filename" "$linkname"
fi

Это создаст

lrwxr-xr-x  1 kk  kk  16 Feb  2 11:16 abc.xyz -> abc.xyz-20170202
-rw-r--r--  1 kk  kk   0 Feb  2 11:16 abc.xyz-20170202

, и ваша программа, записывающая в abc.xyz , фактически будет записывать в abc.xyz-20170202 .

На следующий день, когда вы запустите это, вы получите

lrwxr-xr-x  1 kk  kk  16 Feb  2 11:31 abc.xyz -> abc.xyz-20170203
-rw-r--r--  1 kk  kk   0 Feb  2 11:16 abc.xyz-20170202
-rw-r--r--  1 kk  kk   0 Feb  2 11:31 abc.xyz-20170203
0
28.01.2020, 01:12

Теги

Похожие вопросы