Vor ein paar Jahren habe ich einen Cron-Job eingerichtet, um im Rahmen eines Überwachungssystems automatisch jede Minute einen Ping-Befehl an eine URL zu senden. Weil ich eine schreckliche Person bin, habe ich das nirgendwo dokumentiert.
Heute, Jahre später, bekam ich Probleme mit der Anwendung am anderen Ende der URL, die als Ping gesendet wird. Ich habe es behoben, aber dann festgestellt, dass ich keine Ahnung habe, woher dieser Cron-Job kommt .
Gibt es eine Möglichkeit, alle Crontabs auf einem bestimmten System schnell zu durchsuchen oder zu durchsuchen? Ich habe Root-Zugriff, sodass Berechtigungen kein Problem darstellen. Ich war bisher nur ein Benutzer von cron
. Ich habe mir die Implementierung noch nie so genau angesehen, aber meine * nix-Instinkte sagen, dass es irgendwo eine Gruppe von Textdateien geben muss, die alle Crontabs enthalten. Ich weiß nur nicht, wo sie sich befinden würden, und wenn ich mich darum kümmern würde, hätte ich Angst, einige zu finden, aber nicht alle, oder irgendeine merkwürdige Nuance des Systems zu verpassen
Außerdem erkenne ich mit root-Zugriff, dass ich könnte
- Rufen Sie eine Liste aller Benutzer im System ab
su
als Benutzercrontab -l
- Wiederholen Sie mit allen Benutzern
aber ich bin auf der Suche nach etwas weniger Handbuch (und auf der Suche nach etwas über die Implementierung von cron zu lernen)
Antworten:
Es gibt nur wenige Stellen, an denen sich Crontabs verstecken können:
/etc/crontab
/etc/cron.d/*
/etc/crond.{hourly,daily,weekly,monthly}/*
diese werden von angerufen
/etc/crontab
, also vielleicht ein sternchen dazu/var/spool/cron/*
(manchmal/var/spool/cron/crontabs/*
)Achten Sie
at
auch darauf, welche Jobs in/var/spool/at/
oder erhalten bleiben/var/spool/cron/at*/
Auch anstelle von
Mach einfach folgendes:
quelle
Crontabs leben in
/etc/crontab
und (mit vielen Implementierungen) seinen Komponenten in/etc/cron.*/*
(alle bearbeitet von root) und in/var/spool/cron/*
(Benutzer-Crontabs).Wenn Sie Probleme bei der Suche nach dem betreffenden Job haben, können Sie einen anderen Ansatz wählen, während er ausgeführt wird. Sie können beispielsweise eine Firewall-Regel hinzufügen, um die Benutzer-ID des Prozesses zu protokollieren, der Verbindungen zu
example.com
Port 80 herstellt:Wenn der Job eine Anwendung wie
ping
oder verwendetcurl
, spiegeln Sie die übliche Binärdatei mit einem Wrapper, der Informationen über die Verwendung protokolliert, mit einem Skript wie dem folgenden in/usr/local/bin
:quelle
Der schnelle und schmutzige Weg:
Der genaue Ort, an dem Crontabs aufbewahrt werden, kann von System zu System unterschiedlich sein, befindet sich jedoch im Allgemeinen in
/var/spool
und hatcrontab
irgendwo im Namen.Beachten Sie, dass viele Systeme haben System crontabs (wie in
/etc/crontab
,/etc/cron.d
) von denen einige mehr Skripte aufrufen wie/etc/cron.hourly
,.daily
...quelle
Das klingt nach einem Cronjob, den crontab erstellt hat. Nicht alle Crontabs haben einen
-u
Switch, aber für GNU / Linux ist er verfügbar. Dies ist eine praktische Zeile, um alle von crontab erstellten Cronjobs aufzulisten.(Als root ausführen.)
quelle
Wenn alles andere fehlschlägt, können Sie aus der angeforderten URL einen Honeypot erstellen, dh eine große Datei oder etwas anderes bereitstellen. Suchen Sie dann nach dem Prozess, der auf den Empfang der Daten wartet, und schlagen Sie die PPID nach.
quelle
Jedes anständige System sollte die genaue Position der Crontabs in der Manpage erklären (normalerweise im
FILES
Abschnitt am Ende und auch für andere Dæmons).cron(8)
Enthält beispielsweise auf meinem System Folgendes:Und ich rate tylerl, auch unterwegs nach
at
Jobs zu suchen .quelle
Umgekehrt: cron protokolliert, was es tut, gerade um solche Probleme überhaupt zu vermeiden. Auf meinem System wird das Protokoll gespeichert
/var/cron/log
und sieht folgendermaßen aus:Diese Zeile sagt mir , dass die cron - Instanz mit PID 20232 auf der Maschine
fortress
ausgeführt werden/home/vucar/lighttpd-watchdog
im Namen des Benutzersvucar
. Auf einem gut funktionierenden System läuft nur ein einziger Cron. Dies ist also unkompliziert.Dies funktioniert auch für
at
Jobs, da diese normalerweise sowieso nur an cron übergeben werden:Die Snippets stammen aus einem BSD-System, aber das allgemeine Konzept ist wahrscheinlich überall gleich.
quelle