So finden Sie heraus, was dieser Editor ist
Drücken Sie Ctrl+ Z. Dadurch wird der Editor angehalten und Sie erhalten eine Shell-Eingabeaufforderung. Führen Sie ps
an der Eingabeaufforderung aus, um zu sehen, welche Prozesse in diesem Terminal ausgeführt werden.
bash-4.3$ crontab -e
1077
^Z
[1]+ Stopped crontab -e
bash-4.3$ ps
PID TTY TIME CMD
26295 pts/10 00:00:00 bash
26297 pts/10 00:00:00 crontab
26298 pts/10 00:00:00 sh
26299 pts/10 00:00:00 ed
26302 pts/10 00:00:00 ps
bash
ist die ursprüngliche Shell, crontab
wird erwartet, sh
ist eine andere Shell, die aufgerufen worden sein muss crontab
, und ps
ist der ausgeführte ps
Befehl. Das geht ed
(bereitgestellt durch das Paket mit dem gleichen Namen ).
Wenn Sie nicht herausfinden können, wie Sie den Editor beenden können, können Sie ihn an dieser Stelle mit kill 26302
oder beenden kill %1
.
Was ist ed
Ed ist ein uralter Redakteur, der aus einer Zeit stammt, als Monitore noch keine Selbstverständlichkeit waren. Es wurde für Computer entwickelt, deren interaktives Ausgabe-Peripheriegerät ein Fernschreiber war .
Am 0
Anfang wird die Anzahl der Zeilen in der Datei angezeigt. Offensichtlich ist das eine wichtige Information.
?
bedeutet, dass ed nicht verstanden hat, was Sie eingegeben haben. Zeilendrucker sind langsam, daher verschwendet ed keine Zeit und Tinte, um sinnlose Informationen wie Fehlermeldungen anzuzeigen. Ein alter Witz (ich kenne den Ursprung nicht) lautet:
Ken Thompson hat ein Automobil, an dessen Design er mitgewirkt hat. Im Gegensatz zu den meisten Autos gibt es weder einen Tacho noch eine Tankanzeige oder eines der zahlreichen anderen idiotischen Lichter, die den modernen Fahrer plagen. Wenn der Fahrer einen Fehler macht, leuchtet ein riesiges "?" In der Mitte des Armaturenbretts auf. "Der erfahrene Fahrer", sagt Thompson, "wird normalerweise wissen, was los ist."
Wenn Sie sich unerfahren fühlen, können Sie den Befehl ausgeben H
(alle Befehle außer einem sind ein einziger Buchstabe (Datenargumente werden nicht gezählt), denn wer tippt gerne), und Sie erhalten Fehlermeldungen. Zum Beispiel, wenn Sie nur drücken Enter...
?
H
Invalid address
Klar, nicht wahr? (Eine leere Zeile ist der leere Befehl - der Befehl, bei dem es sich nicht um einen einzelnen Buchstaben handelt. Der leere Befehl wechselt in die nächste Zeile und druckt ihn aus. Wenn Sie sich am Ende der Datei befinden, ist dies bei einem leeren immer der Fall Datei gibt es keine nächste Zeile, daher ist die Adresse, zu der Sie verschoben haben, ungültig.)
Wie bekomme ich einen anderen Editor?
Der crontab
Befehl überprüft, wie die meisten Befehle, die einen Texteditor ausführen, die Umgebungsvariablen VISUAL
und EDITOR
(in dieser Reihenfolge), um zu entscheiden, welches Programm ausgeführt werden soll. Dabei wird auf einen Systemstandard zurückgegriffen. Wenn eine dieser Variablen auf gesetzt ist ed
, ändern oder entfernen Sie sie.
Unter Ubuntu (und Debian und anderen) ist der Standardeditor des Systems /etc/alternatives/editor
, der über den Alternativmechanismus verwaltet wird . Standardmäßig wird der beste installierte Editor ausgewählt, wobei der beste durch die von den Paketbetreuern festgelegten Prioritäten definiert wird. Verwenden Sie update-alternatives
diese Option, um eine Alternative zu konfigurieren. Mit können Sie sich die verfügbaren Editoren und deren Prioritäten anzeigen lassen
update-alternatives --display editor
ed
hat die Priorität -100, wohingegen alle anderen "vernünftigen" Editoren eine positive Priorität haben. Die einzige Möglichkeit, wie dies standardmäßig verwendet wird, ist, wenn kein Editor installiert wurde. Bei einer Standardinstallation von Ubuntu wird Nano als Standardeditor mit der Priorität 400 verwendet. Wenn die Alternative auf festgelegt wurde, ed
können Sie sie mit ändern
sudo update-alternatives --config editor
ed
: Standardmäßig wird eine Zeichenanzahl angegeben (in Debian-basierten Systemen ist dies normalerweise888
das erste Mal, dh die Anzahl der Zeichen in der "leeren" crontab-Vorlage). Wenn Sie eine Anzahl von 0 sehen, müssen Sie dies geändert haben. Siehe Crontab -e Befehl funktioniert nicht richtig