Не работает cron.daily

Я создал 3 ежедневных задания cron для запуска.

Ниже приведены три, которые помещаются в etc / cron.daily

rkhunter.sh

#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' me@email.com

rkhunter.sh

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" me@email.com

logwatch.sh

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' me@email.com

Я заменил me@email.com, конечно, своим письмом. [!d8 ]

Если я запускаю этот cronjob вручную, он отлично работает ./nameoffile.sh

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

1
задан 26 August 2013 в 02:02

5 ответов

В соответствии с этим ответом проблема связана с расширением .sh. Удалите это (например, переименуйте свой файл из rkhunter.sh в rkhunter.

Чтобы подтвердить выполнение следующей команды run-parts --test /etc/cron.daily

Если ваш скрипт (rkhunter) включен в результаты , все это хорошо. Для получения дополнительной информации о команде run-parts прочитайте man-страницы на ней man run-parts

57
ответ дан 24 May 2018 в 18:42
  • 1
    Это ответ, который я искал, после различных тестов я понял, что выполняется другой файл сценария без расширения sh – Albert Català 10 June 2016 в 22:55
  • 2
    как сказал в своем ответе @rharriso. это не так много проблем с & quot ;.sh " как проблема с ".". любой файл с любым расширением будет пропущен. для цитирования непосредственно из man run-parts «имена должны состоять полностью из букв верхнего и нижнего регистра ASCII, цифр ASCII, подчеркиваний ASCII и минус-дефис ASCII». – northern-bradley 12 June 2017 в 15:23

В моей системе это было потому, что anacron не был установлен.

grep run-parts /etc/crontab

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Итак, либо установите anacron, либо удалите тест -x / usr / sbin / anacron

11
ответ дан 24 May 2018 в 18:42
  • 1
    +1 Не установлен ли anacron по умолчанию? Я бы ожидал этого. Думаю, это решило бы это для меня. Благодарю. – lepe 14 March 2015 в 07:15
  • 2
    Конечно, этого не было на моем .. FFS, я уверен, что это было, поскольку скрипт выполнялся несколько месяцев назад !: dpkg --get-selections | grep cron .. & lt; swears & gt; – Grizly 20 May 2015 в 01:54
  • 3
    Да, я не знаю, что произошло, так как это пакет, который обычно устанавливается при запуске. – Natim 20 May 2015 в 11:10
  • 4
    Это не совсем правильно. anacron не требуется; оператор || в командах crontab выполняет run-parts, когда anacron НЕ установлен. Когда anacron установлен, он делает эти ежедневные / еженедельные / ежемесячные run-parts команды избыточными. – TalkLittle 24 February 2017 в 02:47

Я думаю, что файлы с расширениями игнорируются.

run: run-parts --test /etc/cron.daily

Если вы не видите свои сценарии, удалите расширения .sh и повторите попытку. [ ! d2]

8
ответ дан 24 May 2018 в 18:42

Добавляя к ответу Stef, вы также должны убедиться, что у них есть исполняемый бит:

$ ls -l
-rwxr-xr-x  1 root root   268 Jun  1 08:06 00logwatch
-rwxr-xr-x  1 root root   311 May 22  2012 0anacron
-rwxr-xr-x  1 root root 15007 Jun  6 14:08 apt

Вы должны иметь возможность запускать их с помощью chmod +x filename.

4
ответ дан 24 May 2018 в 18:42

Переименуйте свой файл, чтобы не было расширения .sh

Чтобы убедиться в этом, попробуйте

sudo run-parts --list /etc/cron.daily 

, вы увидите, что его нет в списке. Поэтому запустите:

mv script.sh script

и повторите попытку. Он должен быть указан.

2
ответ дан 24 May 2018 в 18:42

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

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