cron.daily заданий не работает

16

Я создал 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)' [email protected]

chkrootkit.sh

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" [email protected]

logwatch.sh

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' [email protected]

Я заменил [email protected], конечно, своим письмом.

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

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

    
задан sonicboom 25.08.2013 в 22:55
источник

6 ответов

5

Есть два возможных подозреваемых, которые обычно приводят к невозможности выполнения cron заданий.

Во-первых, это проблемы с разрешениями, то есть пользователь может запускать скрипт / команду, но демона cron не может, потому что задание выполняется не в заданиях пользователя cron. Например, пользователь создает сценарий или запускает команду с повышенными привилегиями, используя sudo , а затем добавляет проверенный скрипт / команду в свой список заданий cron ( crontab ). В результате задание cron пользователя не сможет работать, так как оно требует повышенных привилегий.

  • Поместить задание cron в тип crontab текущего пользователя crontab -e
  • Чтобы установить задание cron в корневом каталоге crontab sudo crontab -e

Вторая причина - это пути, чтобы убедиться, что скрипт будет выполнен, пользователь должен добавить полный путь к скрипту, который будет выполнен в crontab. Другим решением было бы расширить переменную PATH корневых пользователей, поставив следующую строку вверху своего файла crontab:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

как сообщество wiki упоминает .

Вы можете прочитать вики сообщества о cron, поскольку он предоставляет дополнительную информацию об этом выше.

    
ответ дан Stef K 26.08.2013 в 01:00
источник
55

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

Для подтверждения выполните следующую команду run-parts --test /etc/cron.daily

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

    
ответ дан user19366 04.02.2014 в 22:04
11

В моей системе это было потому, что 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

    
ответ дан Natim 15.09.2014 в 13:57
7

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

run:

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

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

    
ответ дан rharriso 21.03.2014 в 00:21
4

Добавив в ответ 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 .

    
ответ дан Braiam 26.08.2013 в 01:53
1

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

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

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

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

mv script.sh script

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

    
ответ дан Elan Kivity 04.04.2017 в 15:55