2

Я установил его в машине на работе, и он ничего не делал, независимо от того, что я делал. Так что теперь у меня есть это на virtualbox дома, и это также не работает. Вот что я пытаюсь сделать:

Есть файл в /home /john /Desktop с именем test.sh. Его содержание:

#!/ Бен / Баш
эхо "Бинг!"> / tmp / cronjob

Сделали chmod 777 test.sh и можете его запустить. Перечисление это показывает как rwx для пользователей / группы / глобальные. Затем я делаю crontab -e и добавляю следующую строку:

* * * * * john /home/john/Desktop/test.sh

Но это не работает. Файл никогда не пишется. Я также попытался использовать определенное время (например, сейчас 9 часов вечера, поэтому я установил час на 05 21 и подождал), но оно не работает так же хорошо. Я также пытался без пользователя "Джон" в crontab, но без игры в кости. Я тоже пытался использовать crontab -e -u john . Ничего не работает

Делая service cron status я получаю, что он запущен / работает. Я попытался перезапустить это также.

Что я делаю неправильно?

Кроме того, если мне нужно запустить некоторые команды от имени пользователя root, я должен использовать его с crontab -e -u <username> right?

3 ответа3

2

Просто чтобы убедиться:

crontab -e

затем

30 21 * * * /home/john/Desktop/test.sh

РЕДАКТИРОВАТЬ: я имею в виду, что вам не нужно никакого "Джон" рядом с разделом времени cron и путь к команде.

2

Есть три разных способа использования cron.

  1. Помещение скриптов в папки /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly или /etc/cron.monthly
    Затем система запустит их в назначенное время с привилегиями root.
  2. Редактирование /etc /crontab
    Это использует синтаксис, подобный тому, который вы пытались использовать в crontab -e, потому что здесь вы можете указать, какой пользователь должен отвечать за запланированное задание, в вашем случае, john.
  3. Команда crontab, которая сохраняет вкладку cron для пользователя, который выполнил задание, в /var /spool /cron /crontabs

Если вы используете третий метод, вам не нужно говорить, что вы Джон, он уже знает. Однако вы можете указать это с помощью флага -u, чтобы сохранить задание на чьей-либо вкладке cron.
Используя третий метод, вам не нужно иметь Джона в * * * * * john /home/john/Desktop/test.sh

1
* * * * * john /home/john/Desktop/test.sh

"Джон" здесь не так. Только системный crontab имеет поле имени пользователя; crontabs для каждого пользователя, которые вы редактируете с помощью crontab -e, не имеют его (пользователь неявный). Просто оставь это.

Кроме того, если мне нужно запустить некоторые команды от имени пользователя root, я должен использовать его с crontab -e -u, верно?

Нет, если вы хотите, чтобы cronjob запускался с правами root, просто сделайте

sudo crontab -e

(или поместите его в системный crontab с именем пользователя "root").

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .