Задача Crontab не работает, когда я редактирую crontab с помощью vim вместо "crontab -e" в docker контейнере ubuntu18.04 - PullRequest
0 голосов
/ 16 января 2020

Задача Crontab не работает, когда я редактирую crontab с помощью vim вместо "crontab -e" в docker контейнере ubuntu18.04

шаг 1: используйте docker для запуска контейнера, изображение ubuntu18.04 os.

шаг 2:

vim /var/spool/cron/crontabs/root

и запись содержимого в файл root следующим образом:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * * . /etc/profile; /bin/sh /test_cron/xx.sh 2>&1

шаг 3:

cd /
mkdir test_cron 
cd test_cron

шаг 4: отредактируйте xx. sh в /test_cron/xx.sh, содержимое выглядит следующим образом:

echo "cron job has start" >> /test_cron/run.log

шаг 5:

service cron restart

шаг 6 :

В /test_cron/ нет run.log, то есть задача crontab не работает. Но если я использую "crontab -e", чтобы открыть файл /var/spool/cron/crontabs/root и ничего не менять. Просто откройте и закройте /var/spool/cron/crontabs/root, я вижу файл run.log в /test_cron/, удивительно, задача crontab сработала. Не могли бы вы сказать мне причину?

1 Ответ

1 голос
/ 16 января 2020

Несколько точек,

  1. corntab -e обеспечивает определенное форматирование и отслеживание ошибок в определенной степени.

  2. файл crontab должен содержать одну пустую строку в конце.

  3. Для crontab существует определенное разрешение chmod 600

После завершения я увидел, что ручной ввод работает. Однако не рекомендуется редактировать файл crontab напрямую, и рекомендуется использовать crontab -e

РЕДАКТИРОВАТЬ: На самом деле emptyline должно быть исправлено как символ новой строки или% согласно Страница man

В шестом поле (остальная часть строки) указывается команда для запуска. Вся командная часть строки, вплоть до новой строки или символа%, будет выполнена / bin / sh или оболочкой, указанной в переменной SHELL файла cronfile. Знаки процента (%) в команде, если они не экранированы с помощью backsla sh (), будут заменены символами новой строки, и все данные после первого% будут отправлены команде в качестве стандартного ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...