Существует ли специальное ограничение на команды, выполняемые кроном? [дубликат]

Если код работает в браузере, вы можете использовать эту функцию для преобразования HTML-символов в реальные символы:

function decodeHtmlChars(instr) {
    const textarea = document.createElement('textarea')
    textarea.innerHTML = instr;
    return textarea.value;
}

events = decondeHtmlChars(events[0][0])
6
задан Hank Gay 12 December 2008 в 15:27
поделиться

2 ответа

Необходимо выйти из знаков процента с обратной косой чертой:

0 0 * * * pg_dump DB_NAME > /path/to/dumps/`date +\%Y\%m\%d`.dmp

От man 5 crontab:

''Шестое'' поле (остальная часть строки) указывает команду, которая будет выполнена. Вся часть команды строки, до новой строки или символа %, будет выполняться/bin/sh или оболочкой, указанной в переменной SHELL crontab файла. Знаки процента (%) в команде, если не оставлено с обратной косой чертой (\), будут изменены в символы новой строки и все данные после того, как первый % будет отправлен в команду как стандартный вход. Нет никакого способа разделить единственную командную строку на несколько строк, как запаздывание оболочки "\".

11
ответ дан 8 December 2019 в 17:29
поделиться

Существует другая характерная проблема, которая может влиять на программы, запущенные cron по сравнению с командной строкой (кроме интерпретации'%'знаки, описанные Robert Gamble).

То различие находится в среде. Если прогон программы будет полагаться на специальные переменные среды, то он будет работать при выполнении его из командной строки со средой Вы обычно используете, и он будет, вероятно, работать при выполнении его с at потому что это получает среду при создании задания. Но cron не делает никакого специального параметра среды.

Я обычно, поэтому, настраиваю cron запускать скрипты абсолютным путем и тот сценарий делает параметр среды, в котором я нуждаюсь (добавляет мой $HOME/bin каталог для СОЕДИНЕНИЯ КАНАЛОМ, например). У меня даже есть стандартизированная инфраструктура для этого - сценарий оболочки, который устанавливает среду и запускает другие программы.

#   @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
#   Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min     Hour    Day     Month   Weekday Command
#-----------------------------------------------------------------------------
0        *       *       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1        1       *       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23       1       *       *       1-5     /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2        3       *       *       0       /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21       3       1       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/monthly

Сценарий в /work1/jleffler/bin/Cron устанавливает среду и затем запускает скрипт того же имени в /work1/jleffler/bin сделать реальную работу. Имена в Cron подкаталог является на самом деле всеми ссылками на тот же сценарий.

3
ответ дан 8 December 2019 в 17:29
поделиться
Другие вопросы по тегам:

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