ubuntuusers.de

sudo/cron - Zwickmühle?

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Emma2

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

Ich würde gern einen Befehl mit "sudo" aus meiner crontab heraus ausführen... oder ist das automatisch "sudo"? Was kann ich sonst tun?

Hintergrund: Ich möchte ein NFS-Laufwerk mounten, das auch korrekt in der /etc/fstab eingetragen ist. Wenn aber der Rechner startet, kann er das Ziel noch nicht finden.
(Hintergrund für den Hintergrund: Der Rechner ist ein Host, auf diesem läuft die OPNsense als VM, und erst diese baut den Tunnel zum mount-Ziel auf.)
Wenn der Rechner gestartet ist, ist das Ziel deshalb nicht gemountet, ein sudo mount -a funktioniert jedoch sofort.

Meine Idee ist deshalb, die Zeile 0 1 * * * mount -a in meine crontab einzutragen. Wird das funktionieren? (NB: mount -a in der Shell wird ja abgewiesen, denn es muss sudo mount -a sein.) Meine Frage ist deshalb: Ist die crontab eines admin-Users automatisch "sudo"? Oder muss oder wie kann ich das davorschreiben?

Oder bin ich völlig auf dem Holzweg? Danke für jeden Tipp.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11237

Wohnort: München

Nimm Systemd, das kennt u.a. Automount-Units, die man mit anderen Systemd-Units schön verzahnen und Abhängigkeiten und Reihenfolgen definieren kann.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14271

Emma2 schrieb:

Ich würde gern einen Befehl mit "sudo" aus meiner crontab heraus ausführen... oder ist das automatisch "sudo"?

Wenn Du eine root-crontab benutzt, ist es automatisch sudo.

Emma2 schrieb:

Was kann ich sonst tun?

Du könntest auch die systemweite /etc/crontab benutzen und dort den user (root) angeben und den auszuführenden Befehl, ohne sudo.

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

lubux schrieb:

Emma2 schrieb:

Ich würde gern einen Befehl mit "sudo" aus meiner crontab heraus ausführen... oder ist das automatisch "sudo"?

Wenn Du eine root-crontab benutzt, ist es automatisch sudo.

Sorry, aber ich bin immer noch "neu bei Linux": Mein User ist Admin, er DARF also Befehle mit sudo ausführen. Ist seine crontab damit eine "root-crontab"?

lubux schrieb:

Emma2 schrieb:

Was kann ich sonst tun?

Du könntest auch die systemweite /etc/crontab benutzen und dort den user (root) angeben und den auszuführenden Befehl, ohne sudo.

Wie komme ich an die dran?

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

seahawk1986 schrieb:

Nimm Systemd, das kennt u.a. Automount-Units, die man mit anderen Systemd-Units schön verzahnen und Abhängigkeiten und Reihenfolgen definieren kann.

Puh, das übersteigt vermutlich meine Kenntnisse... ☹ Hast Du einen Lese-Tipp dazu für mich?
(Weiter unten habe ich auch schon dieses entdeckt: https://forum.ubuntuusers.de/topic/service-nach-dem-booten-verzoegern/, von daher wäre es natürlich schöner, wenn ich irgendwie formulieren könnte: "mache mount -a erst dann, wenn der Tunnel steht" (dass er steht könnte ich z.B. durch ein erfolgreiches ping auf die Gegenseite ermitteln? oder wie sonst?))

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14271

Emma2 schrieb:

Sorry, aber ich bin immer noch "neu bei Linux": Mein User ist Admin, er DARF also Befehle mit sudo ausführen. Ist seine crontab damit eine "root-crontab"?

Mit z. B. "sudo -i" kannst Du auch root werden und/oder "sudo crontab -e" sollte auch eine root-crontab angelegt und editiert werden.

Emma2 schrieb:

Wie komme ich an die dran?

Mit z. B.:

cat /etc/crontab

bzw. zum editieren, mit:

sudo nano /etc/crontab

(oder einen gleichwertigen Editor, statt nano).

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

lubux schrieb:

bzw. zum editieren, mit:

sudo nano /etc/crontab

Ist das gleichwertig mit sudo crontab -e? Ich habe eine Erinnerung, dass man die crontab-Datei nicht direkt editieren solle. Stimmt das etwa nicht?

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

Emma2 schrieb:

Hast Du einen Lese-Tipp dazu für mich?

Hab's schon: https://wiki.ubuntuusers.de/systemd/ ... dann lese ich mal los...

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14271

Emma2 schrieb:

lubux schrieb:

bzw. zum editieren, mit:

sudo nano /etc/crontab

Ist das gleichwertig mit sudo crontab -e?

Naja, in der /etc/crontab musst Du auch den user eintragen und mit "sudo crontab -e" erstellst Du (nur) eine root-crontab.

Emma2 schrieb:

Ich habe eine Erinnerung, dass man die crontab-Datei nicht direkt editieren solle. Stimmt das etwa nicht?

Doch das stimmt, wenn es um eine user- bzw. um eine root-crontab geht. BTW: Weißt Du evtl. wie man die systemweite "/etc/crontab" "indirekt" editieren kann?

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

lubux schrieb:

BTW: Weißt Du evtl. wie man die systemweite "/etc/crontab" "indirekt" editieren kann?

Mit "indirekt" meinte ich, nicht einen Editor aufzurufen, sondern eben crontab -e bzw. sudo crontab -e. Es könnte ja gut, sein, dass dieser Befehl vor nach nano noch etwas anderes tut.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14271

Emma2 schrieb:

Mit "indirekt" meinte ich, nicht einen Editor aufzurufen, sondern eben crontab -e bzw. sudo crontab -e.

Nein, denn ein Editor wird immer benötigt bzw. auch aufgerufen (auch mit crontab -e). Z. B.:

The  -e  option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environ-
       ment variables.

Quelle: manpage für crontab

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

systemd ist schon der bessere Weg.

Der Rechner ist ein Host, auf diesem läuft die OPNsense als VM.

Wie und wann wird die VM mit OPNsense denn gestartet? Wenn dafür auch systemd zuständig ist, dann kannst du deine mount-Unit in Abhängigkeit von der Service Unit, die die VM startet, starten.

Gruß, noisefloor

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 14271

Emma2 schrieb:

Hintergrund: Ich möchte ein NFS-Laufwerk mounten, das auch korrekt in der /etc/fstab eingetragen ist. Wenn aber der Rechner startet, kann er das Ziel noch nicht finden.

Wie ist die Ausgabe von:

cat /etc/fstab

? BTW: Wenn der Eintrag in der /etc/fstab nicht weiter optimiert/verbessert werden kann, kannst Du die generierte mount-unit, mit einer drop-in-Datei evtl. ergänzen bzw. optimieren (... wenn es um dein 20.04 gehen sollte).

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

lubux schrieb:

Nein, denn ein Editor wird immer benötigt bzw. auch aufgerufen (auch mit crontab -e). Z. B.:

Das ist mir klar, dass ein Editor benötigt und gestartet wird. Deshalb schrieb ich ja auch "vor nano". Es könnte ja sein, dass z.B. vor dem Editieren der Dienst gestoppt und danach wieder gestartet wird. (Ja, ich weiß, dass ich den Dienst nach dem Editieren neu starten muss.)

Oder andersherum: Warum wird denn crontab -e über nano /etc/crontab empfohlen?

Emma2

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2018

Beiträge: 603

noisefloor schrieb:

Wie und wann wird die VM mit OPNsense denn gestartet? Wenn dafür auch systemd zuständig ist, dann kannst du deine mount-Unit in Abhängigkeit von der Service Unit, die die VM startet, starten.

Ganz plump per

1
@reboot vboxmanage startvm svr-opn --type headless

in meiner crontab.

... wenn schon so plump, wäre ja vielleicht sogar

1
0 0 * * * vboxmanage startvm svr-opn --type headless

besser... für den Fall, dass es beim Booten aus irgend einem Grund fehlschlägt.

Sehr gern nehme ich Eure Verbesserungsvorschläge an! (Aber über systemd muss ich erst noch lesen...)

Antworten |