Автор Тема: crontab не запускает сервис из /etc/init.d  (Прочитано 2155 раз)

Оффлайн kea007

  • Участник
  • *
  • Сообщений: 2
Всем привет.
Суть в том, что crontab не хочет останавливать и запускать по расписанию сервис из /etc/init.d
Подозреваю, что крон просто не знает, где нужно искать.
Нашел такую статью http://www.goldfisch.at/knowledge/373
Перепробовал несколько вариантов (например добавлял в /etc/crontab указанный в статье PATH, добавлял в PATH еще и /etc/init.d).
Все безуспешно. Используется alt linux 6.0.
Подскажите, в чем может быть дело.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: crontab не запускает сервис из /etc/init.d
« Ответ #1 : 05.07.2015 05:50:10 »
Приведите конкретные строки, которые вы записали в crontab

Оффлайн kea007

  • Участник
  • *
  • Сообщений: 2
Re: crontab не запускает сервис из /etc/init.d
« Ответ #2 : 05.07.2015 08:32:41 »
Приведите конкретные строки, которые вы записали в crontab
В crontab -e:
#minute (0-59),
#|      hour (0-23),
#|      |       day of the month (1-31),
#|      |       |       month of the year (1-12),
#|      |       |       |       day of the week (0-6 with 0=Sunday).
#|      |       |       |       |       commands

PATH=/etc/init.d:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
* * * * * env > /tmp/env.output
* * * * * root /etc/init.d/ntpd stop
И в /etc/crontab:
PATH=/etc/init.d:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
ntpd запущен и ни разу не останавливался

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: crontab не запускает сервис из /etc/init.d
« Ответ #3 : 05.07.2015 08:38:48 »
В первом файле не надо root писать,  файл запускается от имени пользователя, который вызвал crontab -e
Да и пути скорей всего можно не прописываиь.
 
А потом  - почему вы не используете команлу service?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: crontab не запускает сервис из /etc/init.d
« Ответ #4 : 05.07.2015 08:41:13 »
Да не указано время, когда скрипт запускать

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: crontab не запускает сервис из /etc/init.d
« Ответ #5 : 05.07.2015 08:42:17 »
man crontab
man 5 crontab
« Последнее редактирование: 05.07.2015 14:03:42 от ruslandh »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: crontab не запускает сервис из /etc/init.d
« Ответ #6 : 05.07.2015 14:03:15 »
Цитата: man crontab
Каждый пользователь      может  иметь свои собственные файлы crontab(5), и, хотя эти файлы
     доступны в /var/spool/cron, они не предназначены для редактирования
     напрямую.
....
     -u пользователь   Указывает пользователя, чей crontab(5) должен быть
                       отредактирован.  Если эта опция не указана, crontab
                       использует “ваш” crontab(5) т.е., crontab пользователя,
                       выполняющего команду.  Обратите внимание, что su(1)
                       может “запутать” crontab и при работе через su(1)
                       всегда следует использовать опцию -u ради безопасности

     -e                Изменяет файл crontab редактором, указанным в VISUAL
                       или в EDITOR переменной окружения.  После выхода из
                       редактора, измененный файл crontab(5) будет
                       автоматически установлен.

Цитата: man 5 crontab

    Задание переменной среды

     Можно определять среду (набор переменных среды), в которой будет
     выполняться команда crontab.  Задание переменной среды осуществляется в
     следующей форме:

           имя_переменной = значение

     где пробелы вокруг знака равенства (‘=’) необязательны, и любые пробелы
     после значения будут использованы как часть значения переменной
     имя_переменной.  Строка может быть заключена в кавычки (одинарные или
     двойные) для возможности сохранения пробелов в начале и конце.

     Несколько переменных среды устанавливаются автоматически демоном cron(8).
     SHELL устанавливается в /bin/sh, а LOGNAME и HOME определяются по файлу
     /etc/passwd (в соответствии с владельцем crontab). Значения переменных
     HOME и SHELL можно переопределить директивами crontab.
......

Каждая стока в пользовательском crontab состоит из пяти полей и команды:
           минута час число месяц день_недели команда

   Поля отделяются друг от друга пробелами или символами табуляции.  Команда
     может состоять из нескольких полей.  Допустимые значения полей:

           поле          допустимые значение
           -----         --------------
           минута        * или 0-59
           час           * или 0-23
           число         * или 1-31
           месяц         *, 1-12 или имя месяца (см. ниже)
           день-недели   *, 0-7 или имя дня (воскресенье - это 0 и 7)
           пользователь  имя существующего пользователя
           команда       строка

     Допустимо указание нескольких значений (и диапазонов через тире) через
     запятую.  Примеры: “1, 2, 5, 9”, “0-4, 8-12”.
 При указании диапазона можно пропускать некоторые его значения  .....
.....
    И ещё много интересного на русском языке
......


Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: crontab не запускает сервис из /etc/init.d
« Ответ #7 : 05.07.2015 22:02:33 »
В crontab -e:
#minute (0-59),
#|      hour (0-23),
#|      |       day of the month (1-31),
#|      |       |       month of the year (1-12),
#|      |       |       |       day of the week (0-6 with 0=Sunday).
#|      |       |       |       |       commands

PATH=/etc/init.d:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

М-м...
Прочитайте мануал начиная со строки (выполнить команду в терминале):
man 5 crontab|less -p 'Вместо первых пяти полей'

К тому же, зачем такие сложности?
Всё проще (для примера):
$ cat ~/.bash_profile | tail -n 2
PATH=$PATH:/usr/local/bin
export PATH
Добавляет к переменной PATH указанные пути для профиля пользователя.

В crontab -e:
* * * * * env > /tmp/env.output

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

В crontab -e:
* * * * * root /etc/init.d/ntpd stop
ntpd запущен и ни разу не останавливался

А вы эту команду, всю целиком, интерактивно root'ом выполните.
И увидите что будет. :-)

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Re: crontab не запускает сервис из /etc/init.d
« Ответ #8 : 05.07.2015 22:05:46 »
ntpd запущен и ни разу не останавливался
Вопрос не в тему: а зачем ntpd перезапускать ? Или это абстрактный пример ?

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: crontab не запускает сервис из /etc/init.d
« Ответ #9 : 05.07.2015 22:12:08 »
ntpd запущен и ни разу не останавливался
Вопрос не в тему: а зачем ntpd перезапускать ? Или это абстрактный пример ?

:-) Он собирается останавливать каждую минуту уже стопнутый ntpd.
Ну конечно когда он стопнется нормально правильной командой.