'outputscript | gzip> $file' не перезапись $file

Вот мой список ссылок на блоги RSS:

и Вы наклоняетесь, идут мимо: XKCD

3
задан 30 October 2009 в 14:02
5 ответов

Скорее всего, Ваш сценарий записан для использования функций Bash, но он выполняется Оболочкой Bourne. Вы имеете #!/bin/bash как первая строка Вашего сценария? Отправьте его так, мы можем лучше помочь Вам.

Править:

В сценариях, которые предназначены для выполнения как задания крона, я всегда указываю полный путь к программам (такой как mysqldump и gzip) так как переменная $PATH и вещи как псевдонимы будут отличающимися от тех, которые в Вашей интерактивной оболочке. Тем путем результаты предсказуемы.

3
ответ дан 3 December 2019 в 05:20
  • 1
    Да; добавленный сценарий к вопросу. –  Phillip B Oldham 30 October 2009 в 12:36
  • 2
    Похож на него, были полные пути к программам. Установка их решила проблему немедленно.Спасибо! –  Phillip B Oldham 31 October 2009 в 01:43

Попытайтесь добавить эту строку к верхней части Вашего сценария после строки удара

set +C

Это выключит noclobber опцию в ударе, так должен перезаписать файл.

Если дело не в этом, то это - вероятно, что-то как псевдоним к gzip, устанавливаемому или кроном или Вашей полной средой.

2
ответ дан 3 December 2019 в 05:20
  • 1
    Псевдоним не мог сделать этого. Сценарий имеет перенаправление ' > ' управляйте прямо в команде; это будет проанализировано оболочкой, прежде чем это доберется до команды gzip. –  Zac Thompson 30 October 2009 в 17:54
  • 2
    Я принимаю you' ре, говорящее об этой строке? $OPTS mysqldump | gzip-9 > $DIR/$FILE, Если it' s псевдоним, команда gzip могла быть чем-либо вообще, и ничего даже не могла бы производить на STDOUT, который будет перенаправлен, делая > избыточный? Это было бы нечетно, но затем эта проблема довольно нечетна –  Ewan Leith 2 November 2009 в 11:43

Это кажется действительно странным для меня, удар имеет noclobber опцию, которая делает его так, перенаправление не перезапишет файл. Возможно, это последняя версия новая опция, которая подобна, но создает.1 файлов вместо этого?

Действительно ли возможно, что что-то как logrotate называют в cronjob, или что-то работает прямо перед ним, который перемещает файл (logrotate)? Необходимо проверить/etc/crontab и crontab -e выполненный как корень.

Это находится на своего рода облаке или совместно использованном сайте хостинга? Возможно, поставщик создал что-то, что делает это, чтобы помочь уменьшить их загрузку билета :-)

1
ответ дан 3 December 2019 в 05:20
  • 1
    Мой сценарий дампа является единственным сценарием, который каждый час работает, таким образом, я don' t думают, что это мог быть logrotate. –  Phillip B Oldham 30 October 2009 в 13:59
  • 2
    gzip является псевдонимом, который перемещает файл сначала? Или существует gzip в пути, который перемещает файл сначала, но меня don' t действительно, несмотря на это, как это работало бы... –  Kyle Brandt 30 October 2009 в 14:09

Попытайтесь установить #!/bin/bash -x без обозначения даты пишут/path/to/bash_script 1>/path/to/log_file (где в/path/... устанавливает Ваш собственный путь в файлы).

1
ответ дан 3 December 2019 в 05:20

Это не gzip -c? Та опция для записи в stdout, а не в файл. Есть ли a GZIP или GZIP_OPT набор переменной среды (с gzip опциями в нем)?

0
ответ дан 3 December 2019 в 05:20

Теги

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