Il y a quelques années, j'ai configuré un travail cron pour envoyer automatiquement une requête ping à une URL toutes les minutes dans le cadre d'un système de surveillance (c'est une simplification excessive, mais cela suffira pour cette question). Parce que je suis une personne horrible, je n'ai documenté cela nulle part.
Aujourd'hui, des années plus tard, j'ai commencé à avoir des problèmes avec l'application à l'autre extrémité de l'URL qui fait l'objet d'un ping. Je l'ai corrigé, mais j'ai réalisé, je n'ai aucune idée d'où vient ce travail cron .
Existe-t-il un moyen de rechercher rapidement ou de supprimer toutes les crontabs d'un système particulier? J'ai un accès root, donc les autorisations ne sont pas un problème. Je n'ai jamais été un utilisateur de cron
, je n'ai jamais regardé trop en détail son implémentation, mais mes instincts * nix disent qu'il doit y avoir un groupe de fichiers texte quelque part qui contient tous les crontabs. Je ne sais tout simplement pas où ils seraient, et si j'y creusais, j'aurais peur d'en trouver certains, mais pas tous, ou de manquer une nuance étrange du système
De plus, je me rends compte avec un accès root que je
- Obtenez une liste de tous les utilisateurs du système
su
en tant qu'utilisateurcrontab -l
- Répétez avec tous les utilisateurs
mais je cherche quelque chose d'un peu moins manuel (et cherche à apprendre quelque chose sur l'implémentation de cron)
Réponses:
Il n'y a que quelques endroits que les crontabs peuvent cacher:
/etc/crontab
/etc/cron.d/*
/etc/crond.{hourly,daily,weekly,monthly}/*
ceux-ci sont appelés à partir de
/etc/crontab
, alors peut-être un astérisque sur ce/var/spool/cron/*
(parfois/var/spool/cron/crontabs/*
)Assurez-vous de vérifier
at
également, ce qui maintient ses emplois/var/spool/at/
ou/var/spool/cron/at*/
Aussi, au lieu de
Faites juste ceci:
la source
Crontabs vit dans
/etc/crontab
(et avec de nombreuses implémentations) ses composants dans/etc/cron.*/*
(tous édités par root) et dans/var/spool/cron/*
(crontabs des utilisateurs).Si vous avez du mal à localiser le travail incriminé, une autre approche consiste à en rechercher un pendant qu'il se déroule. Par exemple, vous pouvez ajouter une règle de pare-feu pour consigner l'ID utilisateur du processus ouvrant les connexions sur
example.com
le port 80:Si le travail utilise une application telle que
ping
orcurl
, masquez le binaire habituel par un wrapper qui enregistre des informations sur ce qui l'utilise, avec un script comme celui-ci dans/usr/local/bin
:la source
La manière rapide et sale:
L'emplacement exact où les crontabs sont stockés peut varier d'un système à l'autre, mais il se trouve généralement dans
/var/spool
et acrontab
quelque part dans le nom.Notez également que de nombreux systèmes ont des crontabs système (comme dans
/etc/crontab
,/etc/cron.d
) dont certains peuvent appeler plus de scripts comme/etc/cron.hourly
,.daily
...la source
Cela ressemble à un cronjob créé par crontab. Tous les crontabs n'ont pas de
-u
commutateur, mais pour GNU / Linux, il est disponible. Il s'agit d'une ligne pratique pour répertorier tous les cronjobs créés par crontab.(Exécuter en tant que root.)
la source
Si tout le reste échoue, vous pouvez créer un pot de miel à partir de l'URL qu'il demande - c'est-à-dire servir un gros fichier ou quelque chose - et rechercher le processus qui attend de recevoir les données, puis rechercher son PPID.
la source
Tout système décent doit expliquer l'emplacement précis des crontabs dans la page de manuel (généralement dans la
FILES
section près de la fin, ainsi que pour les autres démons).Sur mon système, par exemple,
cron(8)
contient les éléments suivants:Et j'appuie le conseil de tylerl de vérifier également les
at
emplois pendant que vous y êtes.la source
L'approche dans l'autre sens: cron tient un journal de ce qu'il fait, précisément pour éviter ce genre de problèmes en premier lieu. Sur mon système, le journal est conservé dans
/var/cron/log
et ressemble à ceci:Cette ligne me dit que l'instance cron avec PID 20232 sur la machine
fortress
s'exécute/home/vucar/lighttpd-watchdog
au nom de l'utilisateurvucar
. Un système qui se comporte bien n'a qu'un seul cron en cours d'exécution, ce sera donc simple.Cela fonctionne également pour
at
emplois, car ils sont généralement simplement remis à cron de toute façon:Les extraits proviennent d'un système BSD, mais le concept général est très probablement le même partout ailleurs.
la source