killtec
Goto Top

Crontab einmalig ausführen und danach den Befehl wieder löschen

Hallo,
ich habe ein Suse Linux laufen und möchte gern einmalig einen Befehl ausführen. Ich dachte hierbei an die Crontab.
Via Crontab soll ein Script aufgerufen werden, dass sich per SSH auf einem anderen Server verbindet, um diesen herunter zu fahren und anschließend sich selbst auch herunter fährt.
Einschließlich löschen in der Crontab.

also sowas wie
#crontab löschen

# Remotesystem ausschalten
ssh remote 'poweroff'  

# Local ausschalten
poweroff

An der Ecke Crontab löschen weiß ich nicht wie das funktioniert. Ich würde den Cron gern Freitag einmalig ausführen.

  1. Edit: Meine Crontab würde dann nachher so aussehen
# crontab for dayly tools
# Min Std Tag Mon WTag Befehl
0 22 * * * /home/update/blupdate.sh
0 18 * * 5 /home/cron.sh

Ich müsste also nur die Zeile 0 18 * * 5 /home/cron.sh löschen, bzw Editieren / Auskommentieren.
Es könnte vorkommen, dass dieses Script öfters benötigt würde.

Gruß

Content-ID: 278590

Url: https://administrator.de/forum/crontab-einmalig-ausfuehren-und-danach-den-befehl-wieder-loeschen-278590.html

Ausgedruckt am: 20.04.2025 um 02:04 Uhr

StefanKittel
Lösung StefanKittel 29.07.2015 aktualisiert um 10:15:51 Uhr
Goto Top
Moin,

ich würde es anders machen.
Also wie gehabt im crontab ein Aufruf von Shutdown.sh

Shutdown.sh prüft ob es die Datei "bitte.ausfuehren" gibt.
Wenn ja, Datei löschen und Befehl ausführen
Sonst beenden.

So musst Du nur die Datei "bitte.ausfuehren" erstellen.

Du kannst Sie auch umbennen statt löschen.

Viele Grüße

Stefan
122990
122990 29.07.2015 aktualisiert um 09:12:46 Uhr
Goto Top
Könntest du so machen:
grep -v '/home/cron\.sh'>/etc/crontab  
Das schreibt alles außer deiner Zeile mit dem Skript wieder zurück ins Crontab-File

Oder im Skript einfach eine externe Datei prüfen und anhand dessen entscheiden was gemacht wird und dann umbenennen/löschen
-edit- selber Gedanke von Stefan

Gruß grexit
Arano
Lösung Arano 29.07.2015 aktualisiert um 10:16:04 Uhr
Goto Top
Moin,

oder in /etc/crond.daily/ eine separate Datei mit dem Cronjob erstellen, die kann dann einfach gelöschen werden und das wars rm /etc/crond.daily/dateiname


~Arano
freeker
freeker 29.07.2015 um 09:34:48 Uhr
Goto Top
Hallo,
Schau dir mal den Befehl "at" an.
"Das Kommandozeilenprogramm at kann dazu genutzt werden, Programme zu einem bestimmten Zeitpunkt (einmalig) auszuführen, diese Aufträge abzurufen oder zu löschen."
killtec
killtec 29.07.2015 um 10:15:40 Uhr
Goto Top
So,
ich habe das jetzt so gemacht:

#Filecheck
if [ -f runcron ]; then
	mv runcron runcron.disable
	# Remote ausschalten
	ssh remotesystem 'poweroff'  

	# lokal ausschalten
	poweroff

else

	echo "Not Allowed."  

fi

via touch einfach die Datei angelegt.

Crontab dann den Eintrag wie oben hinzugefügt.
Geht glaube ich am schnellsten. Den AT schaue ich mir auch noch mal an.

Danke an euch.

Gruß