Генерируем уникальное имя файлу
Очень часто скрипты создают какие-то файлы, с которыми потом иногда приходится работать. Нам нужно получить условия, при которых каждый созданный файл был бы уникально назван, в не зависимости от сторонних факторов.
Первое что приходит на ум — система префиксов и суффиксов. Название файла условно разбивается на несколько составных логических частей, комбинируя которые получается финальное имя.
Например:
название_дата_время
file1_17.11.2015_16.51
Приведенный пример является одним из самых популярных и логичных, в данной ситуации.
Но, допустим, что нам нужно получать по несколько файлов каждую минуту, или даже секунду.
В этом случае так же можно было бы дополнить существующую систему, но в данной статье хотелось бы разобрать немного другой метод. Он тоже иногда бывает довольно полезным.
Для генерации суффикса имени файла мы используем программу mcookie, которая генерирует случайную строку.
#!/bin/bash prefix_name="file_" suffix_name='mcookie' full_filename=$prefix_name.$suffix_name echo "Имя файла = \"$full_filename\"" exit 0
Запускаем наш скрипт и делаем его исполняемым. При желании сюда же в название можно добавить дату и время создания файла. Такие конструкции часто используются для создания Бекапов.
ОООчень актуально сейчас для меня. Я тоже столкнулась с проблемой, когда суффиксов не хватает. Будем пробовать данный метод )))
Недавно писал скрипт для автоматического поднятия игра в случае завершения, получилось следущее:
#!/bin/sh
log=samp.log
dat=`date`
samp=»/SERVER/samp03svr»
cd /SERVER
echo «${dat} watchdog script starting.» >>${log}
while true; do
echo «${dat} Server exited, restarting…» >>${log}
mv /SERVER/server_log.txt /SERVER/server_log.`date ‘+%m%d%y%H%M%S’`
${samp} >> $log
sleep 2
done
Довольно долго парился, ибо постоянно писало, что не хватало то одной библиотеки, то другой.
CentOS 6.
Я обычно через PHP-файл генерю. Так как-то привычней. Годы программинга позади сказываются Хотя по скорости не замерял, через баш может и быстрее оказаться. Но для мелких задач пока самое быстрое и оптимальное решение для меня.
Автору, огромное спасибо, как до меня это только не дошло, буду пользоваться этим, еще раз спасибо