сценарий не пишет в файл при выполнении от крона

Когда я запускаю/bin/bash скрипт, он хорошо работает, и он входит в некоторые файлы журнала в сценарии. Но, когда я выполняю его от крона, это не регистрируется в файл! это только регистрируется к/var/mail/root, говоря это

Date: Fri, 12 Aug 2016 08:39:01 +0300 (MSK)

/bin/sh: 1: root: not found

это - сценарий:

#!/bin/bash

LOG_FILE="test-crontab.log"
echo "started testing cron" >> ${LOG_FILE}

pgrep tunnel
if [[ ${?} != 0 ]]; then
  echo "Tunnel process is not running..." | tee -a ${LOG_FILE}
  echo "initializing tunnel..." | tee -a ${LOG_FILE}
  /usr/local/bin/stunnel | tee -a ${LOG_FILE} 2>&1
fi

echo `date` >> ${LOG_FILE}

и это - крон:

45 8 * * *  /home/ubuntu/sam/scripts/sqlplus-scripts/accts-ct/test-crontab.sh > /dev/null
3
задан 12 August 2016 в 08:49

3 ответа

  1. Для получения файла журнала, где Вы ожидаете, что это будет, замена:

    LOG_FILE="test-crontab.log"
    

    С:

    LOG_FILE="/home/ubuntu/sam/scripts/sqlplus-scripts/accts-ct/test-crontab.log"
    
  2. Команда [[ ${?} != 0 ]] только для удара. Из сообщения об ошибке, что Вы заключаете в кавычки, сценарий, кажется, работает под /bin/sh. Один способ зафиксировать, который должен заменить:

    if [[ ${?} != 0 ]]; then
    

    С:

    if [ ${?} != 0 ]; then
    

    Другой подход должен работать crontab -e и добавьте следующую строку к Вашему crontab файл:

    SHELL=/bin/bash
    
  3. Кроме того, для простоты и стиля, рассмотрите замену:

    echo `date` >> ${LOG_FILE}
    

    с:

    date >> "${LOG_FILE}"
    

    Это устраняет бесполезное использование эха.

  4. Наконец, рассмотрите двойные кавычки помещения вокруг всех переменных оболочки, особенно $LOG_FILE. Поскольку текущее значение LOG_FILE не содержит пробелов или активных против оболочки символов, это не нужно теперь. Но, помещая двойные кавычки вокруг них желание предотвратит неприятные неожиданности в будущем.

5
ответ дан 1 December 2019 в 15:35

Я думаю, что Ваша crontab запись является неправильной.

формат человечности crontab файл "m h dom понедельник dow пользовательская команда", куда первые 5 записей specfy время задание выполняются. 6-я запись является пользователем, который выполняет задание (я думаю, что это отсутствует в Вашей записи), и 7-я запись является командой, которую Вы хотите выполнить.

я думаю, что необходимо исправить crontab строку к

45 8 * * * корень/home/ubuntu/sam/scripts/sqlplus-scripts/accts-ct/test-crontab.sh>/dev/null

, предполагающий, что Вы хотите, чтобы команда работала как корень

0
ответ дан 1 December 2019 в 15:35

Рабочий каталог в моем случае был /home/me, таким образом, относительный путь как test-crontab.log главным образом будет разрешенным к /home/me/test-crontab.log

, я не люблю идеи изменить пути в файлах и делаю ее менее портативной, вместо этого изменяют каталог на cronjob строке

cd /path/to/directory && ./bin/myapp
0
ответ дан 1 December 2019 в 15:35

Другие вопросы по тегам:

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