web-dev-qa-db-fra.com

Comment voir / arrêter les tâches crontab en cours?

  1. Comment puis-je voir les tâches crontab en cours?
  2. Comment puis-je arrêter manuellement les tâches crontab en cours, manuellement?

Est-ce que cette question concerne les processus cron en cours?

Oui

Tuer un processus manuellement, c'est utiliser pkill

J'avais pensé à pkill/killall, mais certaines de mes commandes dans le fichier crontab sont respectivement! cela signifie qu'après avoir fini une commande, la suivante sera lancée! par exemple:

Sudo crontab -e

00 10 * * * /usr/bin/wget LINK ; shutdown -h now

Donc, si je tue wget, l'ordinateur sera éteint !!! -> Je veux tuer une tâche cron complètement, pas une partie!

le prochain problème de pkill: qu'en est-il des scripts? (J'ai importé des scripts bash dans crontab -e) -> Sudo pkill ???

20
mini

Tout d'abord, utilisez une seule commande par ligne dans crontab. Changer cette ligne de crontab:

00 10 * * * /usr/bin/wget LINK ; shutdown -h now

donc ça ressemble à:

00 10 * * * /path/to/my/crontab/script1.sh

et créez /path/to/my/crontab/script1.sh avec ce contenu:

#!/bin/bash
/usr/bin/wget LINK
shutdown -h now

Bien sûr, n'oubliez pas de lui donner une autorisation d'exécution:

chmod +x /path/to/my/crontab/script1.sh

Deuxièmement, vous pouvez voir exécuter les tâches crontab, dans un format utile et lisible, dans la sortie de:

ps -o pid,sess,cmd afx | egrep -A20 "( |/)cron( -f)?$"

Ils apparaîtront dans les premières lignes, quelque chose comme ceci:

1108  1108 cron
4288  1108 \_ CRON
4289  4289     \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290  4289         \_ /bin/bash /path/to/my/crontab/script1.sh
4295  4289             \_ /usr/bin/wget LINK

La première colonne est PID, la deuxième est l'ID de session et la troisième est la commande lancée par cron. Vous pouvez supprimer tous les processus liés à une tâche périodique spécifique à l'aide de l'ID de session. Par conséquent, dans l'exemple ci-dessus, vous devez supprimer l'ID de session 4289:

pkill -s 4289
40
Eric Carvalho

change ton cronjob comme ça

00 10 * * * /usr/bin/wget LINK && shutdown -h now

Cela devrait fonctionner, car && signifie que la deuxième commande n'est exécutée que lorsque la première a été correctement terminée (en renvoyant le statut 0 à la console/système), ce qui ne devrait pas être le cas (car le processus a été tué par l'utilisateur et il devrait retourner une autre valeur alors 0).

0
s1mmel

Tuer un processus manuellement est l’un des moyens d’utiliser pkillname__. pkill arrêtera tous les processus dont le nom correspond au modèle suivant. Par exemple, pour arrêter tous les processus wget, utilisez:

Sudo pkill wget
0
Mohammad Etemaddar