Ist es schlecht, die Cron-Datei manuell zu bearbeiten?

12

Es wird normalerweise angewiesen, neue Cron-Jobs über Befehlszeilen einzuführen. Ich fand es jedoch einfacher (mit einer besseren Kontrolle über die aktuellen Cron-Aufgaben), die Benutzer-Cron-Datei manuell (im Texteditor) zu bearbeiten /var/spool/cron/crontabs/root.

Ist es gefährlich, die Datei im Texteditor zu bearbeiten?

Die Kommentare in der Standarddatei sind verwirrend. In der ersten Zeile steht

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

Aber die vierte Zeile sagt

# Edit this file to introduce tasks to be run by cron.
Googlebot
quelle
2
Warum nicht einfach etwas unter /etc/cron.d ablegen?
Zoredache
Es kann eine gute Idee sein; Aber ich wollte nicht, welche Datei bearbeitet werden soll. Ich vergleiche die Bearbeitungsdatei mit dem Editor oder führe den Befehl crontab aus.
Googlebot
@Alle ich denke, der einzige Unterschied ist die Syntaxprüfung von crontab-e. Es ist nur ein Textpuffer mit Syntaxprüfung. Sie können auch Ihren gewohnten Editor ändern und crontab-e würde in diesen laden. Die Bedeutung der Xyntax liegt darin, dass alle Dateien ignoriert werden, wenn Sie einen Fehler machen. Auch wenn Sie ein externes Tool verwenden, sollten Sie die Datei mit crontab-e lesen und sie nach Abschluss an crontab-e zurücksenden. Dabei müssen Sie sich nicht mehr um die Syntax kümmern. Es ist besser, die Dateien von Benutzer- und Systemaufgaben zu trennen, daher sollten Sie besser /etc/cron.d für Benutzer- / Testaufgaben verwenden.
m3nda

Antworten:

22

Wenn Sie die Benutzerdatei unter crontabs ändern, sollte dies funktionieren. Es sind jedoch zwei Aspekte zu berücksichtigen:

  1. Wenn Sie den Cron-Eintrag in der Datei falsch eingegeben haben, werden Sie nicht gewarnt, anstatt den crontab -eBefehl zu verwenden.
  2. Sie können Ihre Benutzerdatei nicht direkt unter crontabs bearbeiten, ohne sich als root anzumelden oder sudo zu verwenden. Sie erhalten den Fehler "Erlaubnis verweigert".

Bearbeiten

Ein weiterer Punkt zum Hinzufügen. Wenn Sie die Datei direkt bearbeiten, werden Sie möglicherweise vom Texteditor gewarnt, wenn Sie die Datei zweimal geöffnet haben (zwei Benutzer greifen auf dieselbe Datei zu). Die Cron-Liste wird jedoch überschrieben, wenn crontab -ezwei verschiedene Shell-Sitzungen desselben Benutzers verwendet werden. Dies ist ein weiterer Unterschied.

Khaled
quelle
sehr subtile Punkte! Ich habe mich nie mit dem zweiten Problem auseinandergesetzt (wusste es), da ich immer als Root arbeite.
Googlebot
4
Das "Nicht bearbeiten" in der Standarddatei liegt auch daran, dass ein Upgrade / eine Neuinstallation diese Datei möglicherweise überschreibt.
Chris S
Sie haben nicht erwähnt, dass ein Benutzer, der die Crontab direkt bearbeitet, die bereitgestellte Santax-Überprüfung verliert crontab -e.
Adam F
1
@AdamF: Dies ist, worüber Punkt 1 spricht!
Khaled
8

Wenn ich das richtig verstehe, bearbeiten Sie die Datei manuell mit einem Texteditor, da Sie crontab -e nicht verwenden möchten. Ich schätze, das liegt daran, dass es vi als Editor verwendet und Sie damit nicht vertraut sind.

Sie ändern crontab -e (und andere Dinge, die einen Editor benötigen), um den bekannteren Nano-Editor zu verwenden, indem Sie ihn ausführen

export EDITOR=nano

Vor

crontab -e

Sie können nano zum dauerhaften Standardeditor machen, indem Sie Ihre Datei ~ / .bash_profile so bearbeiten, dass sie export EDITOR=nanoam Ende eingefügt wird .

Um Ihre Frage zu beantworten, sollten Sie die Datei nicht direkt bearbeiten, da sie möglicherweise überschrieben wird, ohne dass Sie es merken. In der vierten Zeile steht, was dort steht, weil es von der Crontab kommt, die Sie manuell bearbeiten sollen (das würde man als erste Zeile bezeichnen).

Jonathan Amend
quelle
Vielen Dank für die beschreibende Antwort. Ich bin mit dem crontab command vi editor bestens vertraut. aber ich benutze gedit (nicht im ssh terminal), da ich von meinem linux desktop direkt eine verbindung zum server herstelle.
Googlebot
Ich empfehle außerdem, den Befehl export EDITOR in Ihre bashrc-Datei aufzunehmen, um zu vermeiden, dass er jedes Mal geschrieben wird, wenn Sie sich bei ssh anmelden.
m3nda
1
export VISUAL=vi

Dies ist der richtige Weg, um den Editor für crontab zu ändern.

user981836
quelle