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-Key: 278590

Url: https://administrator.de/contentid/278590

Printed on: April 24, 2024 at 12:04 o'clock

Member: StefanKittel
Solution StefanKittel Jul 29, 2015 updated at 08:15:51 (UTC)
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
Mitglied: 122990
122990 Jul 29, 2015 updated at 07:12:46 (UTC)
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
Member: Arano
Solution Arano Jul 29, 2015 updated at 08:16:04 (UTC)
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
Member: freeker
freeker Jul 29, 2015 at 07:34:48 (UTC)
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."
Member: killtec
killtec Jul 29, 2015 at 08:15:40 (UTC)
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ß