Используя системную дату / время в Сценарии Крона

Попробуйте эту строку:

readlink -f `which command`

Если command находится в Вашем $PATH переменная, иначе необходимо указать путь, который Вы знаете.

37
07.01.2012, 17:52
5 ответов

Необходимо смочь использовать date.
Ввести info date или man date для деталей.

Что-то как следующее могло бы подойти, Вы (измените формат даты на свои потребности),

yourcommand > filepathandnameprefix$(date +"\%d-\%m-\%Y").extension
7
27.01.2020, 19:36
  • 1
    Снова, старайтесь выйти из всех % символы в кроне. –  glenn jackman 04.03.2011, 20:37
  • 2
    @glenn: ой, уверенный. Относительно лексикографического порядка, я просто соответствовал формату даты OP. Мне лично нравится формат ISO, как Вы. –  asoundmove 04.03.2011, 20:55

Вы могли попробовать что-то вроде этого (как glenn jackmann примечания ниже, необходимо выйти из всех % символы):

15 11 * * * touch "/tmp/$(date +\%d-\%m-\%Y).sql"

Видеть, выполнит ли Ваш конкретный крон команду из crontab как сценарий в и себя, или если необходимо записать сценарий, который выясняет дату как строку и затем выполняет команду mysqldump.

Не выходя %, "крон" на Redhat Enterprise Linux 5.0 (я думаю) продолжал давать мне ошибки о не нахождении соответствия ). Это вызвано тем, что все после незавершенного % отправляется в стандартный вход команды.

Я также взял бы рекомендацию использовать формат даты ISO8601 (yyyy-mm-dd, который является %F) заставить имена файлов заказать по дате при лексической сортировке.

45
27.01.2020, 19:36
  • 1
    Должны быть осторожными с date в cronfile: некоторые кроны (все?) обработка % как конец команды. (так $() не была проблема). Необходимо выйти из всех знаков процента: ... touch "/tmp/$(date +\%Y-\%m-\%d)" (более хороший использовать формат даты это сортирует лексикографически) –  glenn jackman 04.03.2011, 20:36
  • 2
    glenn jackman корректен: выход из символов '%' в crontab записи выше работ. Запись RHEL 5.0 crontab похожа на this:50 11 * * * касание "/tmp/backup. $ (дата + \%Y-\% m-\% d) .sql" –  Bruce Ediger 04.03.2011, 21:11
  • 3
    , стоит отметить, что использование подоболочки не работает в переменной среды. Так, DATE=$( date -I ) и затем использование ${DATE} позже результаты в использовании литерала $( date -I ) в командной строке задания. –  Christopher Schultz 07.04.2016, 21:17
  • 4
    Это кажется тем выходом % необходимо на OpenSuse 42 также. –  kgadek 18.04.2016, 18:07

Вот сценарий удара, который я использовал:

#!/bin/bash
mysqldump -u user1 -p DatabaseName | gzip > BackupFolder/backup`date +%F_%T`.sql.gz

Файлы похожи:

backup2011-03-02_15:16:46.sql.gz

Укажите на задание крона на это для выполнения ночью или независимо от того, что Вы предпочитаете.

1
27.01.2020, 19:36
  • 1
    , Это работает как очарование. Хотя, я не вполне понимаю то, что происходит в здесь. Обратные галочки позволяют включение вывода других программ или чего-то? Что относительно форматирования (как + %F и такой)? –  AeroCross 06.03.2011, 21:25
  • 2
    Да обратные галочки выполняют замену команды, где выводом заменяют саму команду. Относитесь для Разделения 3.4.5, Вот более всесторонний список модификаторов для канала передачи данных –   11.03.2011, 22:28
  • 3
    О, ничего себе, это - удивительный ресурс. Замечательно всегда продолжать учиться. Большое спасибо за ссылку! –  AeroCross 11.03.2011, 23:23

Запишите маленький сценарий обертки, который использует date управляйте и называет Вашу команду резервного копирования.

#!/bin/bash
NOW=`/bin/date +"%m%d%Y-%H%M%S"`
if [[ "$?" != "0" ]]; then
 NOW="UNKNOWN_DATE"
 fi
mysqldump -u username -ppassword database > /path/to/file/$NOW.sql
if [[ "$?" != "0" ]]; then
 echo "$0: backup failed with error code $?"
 fi
0
27.01.2020, 19:36

Чтобы иметь такую команду, работающую соответственно, мы должны будем выйти из %, и затем она будет работать как ожидалось.

См.: http://www.ducea.com/2008/11/12/using-the-character-in-crontab-entries/

4
27.01.2020, 19:36

Теги

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