Чи погано редагувати файл cron вручну?


12

Зазвичай вказується вводити нові завдання cron через командні рядки; але мені було легше (з кращим контролем поточних завдань cron) вручну редагувати (у текстовому редакторі) файл cron користувача, як /var/spool/cron/crontabs/root.

Чи небезпечно редагувати файл у текстовому редакторі?

Коментарі у файлі за замовчуванням заплутані. Перший рядок говорить

# DO NOT EDIT THIS FILE - edit the master and reinstall.

Але четвертий рядок говорить

# Edit this file to introduce tasks to be run by cron.

2
Чому б просто не помістити речі під /etc/cron.d?
Зоредаче

Це може бути хорошою ідеєю; але я не мав на увазі, який файл редагувати, я порівнюю файл редагування за редактором або запускаю команду crontab.
Googlebot

@ Я думаю, єдиною різницею є перевірка синтаксису, зроблена crontab-e. Це лише текстовий буфер із перевіркою синтаксису. Ви також можете змінити ваш звичайний редактор і crontab-e завантажиться в це. Важливість ксинтаксу полягає в тому, що при помилці весь файл буде ігнорований. Навіть якщо ви використовуєте зовнішній інструмент, вам слід використовувати crontab-e для читання файлу, а після завершення відправити його назад в crontab-e. Так ви не повинні більше турбуватися про синтаксис. Краще розділити файли від користувачів та системних завдань, тому вам слід краще /etc/cron.d використовувати для користувачів / тестових завдань.
м3нда

Відповіді:


22

Якщо ви модифікуєте файл користувача під crontabs, він повинен працювати. Однак слід врахувати два питання:

  1. Якщо ви помилково введете запис крона у файл, вас не попередить на відміну від використання crontab -eкоманди.
  2. Ви не можете редагувати свій користувацький файл під crontabs безпосередньо без входу як root або за допомогою sudo. Ви отримаєте дозвіл, яким відмовлено в помилці.

Редагувати

Ще один момент, який потрібно додати. Редагуючи файл безпосередньо, вас може попередити текстовий редактор, якщо ви відкрили файл двічі (двоє користувачів, що мають доступ до одного файлу). Однак список cron буде перезаписаний при використанні crontab -eз двох різних сесій оболонок одного користувача. Це ще одна відмінність.


дуже тонкі моменти! Я ніколи не стикався (знав) з другою проблемою, оскільки завжди працюю як root.
Googlebot

4
Крім того, "не редагувати" у файлі за замовчуванням тому, що оновлення / перевстановлення може замінити цей файл.
Кріс Ш

Ви не зазначили, що користувач, який редагує crontab, безпосередньо втрачає перевірку santax, що crontab -eнадається.
Адам Ф

1
@AdamF: Про це йдеться в пункті 1!
Халед

8

Якщо я правильно розумію, ви редагуєте файл вручну за допомогою текстового редактора, оскільки не хочете використовувати crontab -e. Я думаю, це тому, що ви використовуєте vi як редактор, і ви з ним незнайомі.

Ви змінюєте crontab -e (та інші речі, які потребують редактора), щоб скористатися більш звичним наноредактором, запустивши

export EDITOR=nano

раніше

crontab -e

Ви можете зробити нано редактор за замовчуванням за замовчуванням, відредагувавши свій файл ~ / .bash_profile, який буде включено export EDITOR=nanoв кінці.

Щоб відповісти на запитання, не слід редагувати файл безпосередньо, оскільки він може бути перезаписаний, не знаючи про це. Четвертий рядок говорить про те, що він говорить, оскільки він походить від crontab, який ви повинні вручну редагувати (це буде говорити, що як перший рядок).


Дякуємо за описову відповідь. Я повністю знайомий з редактором команд crontab vi; але я використовую gedit (не в ssh-терміналі), оскільки я безпосередньо підключаюся до сервера зі свого робочого столу Linux.
Googlebot

Я також рекомендую додати команду експорту EDITOR у файл bashrc, щоб не писати її кожного разу при вході в ssh.
м3нда

1
export VISUAL=vi

Це правильний спосіб змінити редактор для crontab.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.