-2

Если я запускаю свой скрипт через crontab, gzip не работает нормально. Если я запускаю тот же скрипт вручную, gzip работает.

Команда, которую мы имеем в нашем скрипте:

gzip -vf $path/file.eee

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

gzip -vf $PATH/file.exp

После этого ожидаемого file.exp.gz но gzip не работает, я увидел состояние gzip, которое он возвращает 141. Помимо gzip этот скрипт работает нормально, другие команды работают нормально.

$PATH - это путь к file.exp . Я скопировал file.exp в /root папку. В корневую папку я поместил один тестовый скрипт с командой gzip -vf /root/file.exp . Этот тестовый скрипт я добавил в crontab, который работает нормально. После завершения crontab я увидел вывод в корневой папке, и я смог увидеть файл file.exp.gz В crontab я дал правильного пользователя и команду.

1 ответ1

1

Код выхода:

В выходных значениях значение выше 128 указывает завершение из-за сигнала, а значение выше 128 указывает, какой сигнал вызвал завершение. Итак, если мы вычтем 128 из кода выхода OP 141, мы получим 13, что соответствует SIGPIPE (man 7 signal для списка стандартных сигналов и их соответствующих целочисленных значений).

Страница man содержит комментарий SIGPIPE как "Сломанная труба: пишите в трубу без читателей".

Переменная:

Вы действительно используете путь $PATH / $path?

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/bin
echo $path
/usr/local/sbin /usr/local/bin /usr/bin

О работе cron:

Задания Cron работают в минимальной среде. $PATH отличается в сеансах cron и shell.

Частичный ответ на основании Ваших данных:

Я предполагаю, что последняя запись в $PATH в сеансе вашей оболочки содержит путь к вашему сценарию. file.exp создается по этому пути.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .