Перейти к содержимому

Команда gzip не работает в сценарии оболочки

-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 я дал правильного пользователя и команду.

564 просмотра
damodar спросил 7 лет назад
D 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создан на этом пути.

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

damodar · 7 лет назад · 0

@damodar Попробуйте использовать полный путь к file.exp вместо $ path / file.exp

Tomasz Jakub Rup · 7 лет назад · 0
Tomasz Jakub Rup ответил 7 лет назад
T 566