Cron.hourly не будет работать

ок, я сделал свой скрипт, я бросил его в /etc/cron.hourly потом chmod 777 файл но он не запускается (автоматически). Если я вручную запустить его, он отлично работает. Мне нужно делать что-то еще?

48
задан 11 September 2011 в 22:50

40 ответов

Ответ DaithiF должен быть правильным ответом.

Кроме того, у моего скрипта не было #!/bin/bash в первой строке. Несмотря на то, что сценарий можно выполнить с помощью командной строки, run-parts отклонил его, указав «Ошибка формата Exec».

Изменение имени файла с scriptname.sh до scriptname и добавление #!/bin/bash в первую строку позволило запустить мой скрипт по часам.

4
ответ дан 4 August 2018 в 20:55

Когда вы запускаете

crontab -l

, это задание в списке?

, если нет, добавьте его

crontab -e

добавьте эту строку

0 * * * * yourScript

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

Пример:

bash: #!/bin/bash

Это 2 вещи всегда решали мои проблемы:)

0
ответ дан 4 August 2018 в 20:55
  • 1
    Сделал все, и сценарий хорош, он работает как шарм. Это также в списке crontab, но не почасовая задача. Спасибо, в любом случае :( – Switchkick 20 October 2010 в 13:17

Ваша проблема, вероятно, сводится к чрезмерно открытым разрешениям, что позволяет кому-либо редактировать ваш файл. Попробуйте 755 вместо этого.

Глядя в записи cron на вашем выходе syslog, вы должны подтвердить это.

4
ответ дан 6 August 2018 в 04:28

Записи в cron.hourly выполняются механизмом run-parts (man run-parts для получения дополнительной информации). И run-parts разборчиво относится к именам файлов, которые он считает действительными.

Например, если ваш сценарий расширяет его, он будет недействительным и приведет к тому, что задание не будет запущено. [a-zA-Z0-9_-] являются действительными символами, поэтому '.' делает его недействительным.

При добавлении задания в /etc/cron.hourly (или .daily, .weekly и т. д.), всегда проверяйте потом, что run-parts фактически запустит его, выполнив команду:

run-parts --test /etc/cron.hourly

Если при запуске этой команды он показывает ваш файл, это означает, что он сработал. В противном случае, если ничего не отображается, ваше имя файла недействительно.

Каково было имя вашего скрипта?

133
ответ дан 6 August 2018 в 04:28
  • 1
    Есть два: cerebro_random_response.sh и Cerebro Temperature.sh не так ли? – Switchkick 14 May 2011 в 05:41
  • 2
    правильно, не хорошо :) [a-zA-Z0-9_-] - действительные символы, поэтому '.' делает его недействительным. Это то, что я имел в виду выше, «давая вашему сценарию расширение, сделает его недействительным» – DaithiF 19 May 2011 в 21:43
  • 3
    oMG, Это просто спасло огромную головную боль. СПАСИБО! [F1] – Jonathan S. Fisher 6 December 2013 в 04:16
  • 4
    Вы также можете использовать --report для фактического запуска скриптов. – Pablo Bianchi 5 February 2018 в 20:24

Ответ DaithiF должен быть правильным ответом.

Кроме того, у моего скрипта не было #!/bin/bash в первой строке. Несмотря на то, что сценарий можно выполнить с помощью командной строки, run-parts отклонил его, указав «Ошибка формата Exec».

Изменение имени файла с scriptname.sh до scriptname и добавление #!/bin/bash в первую строку позволило запустить мой скрипт по часам.

4
ответ дан 6 August 2018 в 04:28

Когда вы запускаете

crontab -l

, это задание в списке?

, если нет, добавьте его

crontab -e

добавьте эту строку

0 * * * * yourScript

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

Пример:

bash: #!/bin/bash

Это 2 вещи всегда решали мои проблемы:)

0
ответ дан 6 August 2018 в 04:28
  • 1
    Сделал все, и сценарий хорош, он работает как шарм. Это также в списке crontab, но не почасовая задача. Спасибо, в любом случае :( – Switchkick 20 October 2010 в 13:17

Ваша проблема, вероятно, сводится к чрезмерно открытым разрешениям, что позволяет кому-либо редактировать ваш файл. Попробуйте 755 вместо этого.

Глядя в записи cron на вашем выходе syslog, вы должны подтвердить это.

4
ответ дан 7 August 2018 в 22:36

Записи в cron.hourly выполняются механизмом run-parts (man run-parts для получения дополнительной информации). И run-parts разборчиво относится к именам файлов, которые он считает действительными.

Например, если ваш сценарий расширяет его, он будет недействительным и приведет к тому, что задание не будет запущено. [a-zA-Z0-9_-] являются действительными символами, поэтому '.' делает его недействительным.

При добавлении задания в /etc/cron.hourly (или .daily, .weekly и т. д.), всегда проверяйте потом, что run-parts фактически запустит его, выполнив команду:

run-parts --test /etc/cron.hourly

Если при запуске этой команды он показывает ваш файл, это означает, что он сработал. В противном случае, если ничего не отображается, ваше имя файла недействительно.

Каково было имя вашего скрипта?

133
ответ дан 7 August 2018 в 22:36
  • 1
    Есть два: cerebro_random_response.sh и Cerebro Temperature.sh не так ли? – Switchkick 14 May 2011 в 05:41
  • 2
    правильно, не хорошо :) [a-zA-Z0-9_-] - действительные символы, поэтому '.' делает его недействительным. Это то, что я имел в виду выше, «давая вашему сценарию расширение, сделает его недействительным» – DaithiF 19 May 2011 в 21:43
  • 3
    oMG, Это просто спасло огромную головную боль. СПАСИБО! [F1] – Jonathan S. Fisher 6 December 2013 в 04:16
  • 4
    Вы также можете использовать --report для фактического запуска скриптов. – Pablo Bianchi 5 February 2018 в 20:24

ответ DaithiF должен быть правильный ответ.

кроме того, мои сценарии не было [F1] в первой строке. Хотя скрипт можно запустить с помощью командной строки, run-parts отверг его, сказав "ошибка формате exec".

изменение имени файла из [F3] для scriptname и добавить #!/bin/bash в первой строке включен мой скрипт выполняется каждый час.

4
ответ дан 7 August 2018 в 22:36

Когда вы запускаете

crontab -l

, это задание в списке?

, если нет, добавьте его

crontab -e

добавьте эту строку

0 * * * * yourScript

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

Пример:

bash: #!/bin/bash

Это 2 вещи всегда решали мои проблемы:)

0
ответ дан 7 August 2018 в 22:36
  • 1
    Сделал все, и сценарий хорош, он работает как шарм. Это также в списке crontab, но не почасовая задача. Спасибо, в любом случае :( – Switchkick 20 October 2010 в 13:17

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

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