Comment puis-je voir / arrêter les tâches crontab en cours d'exécution?


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

Est-ce [cette] question de voir les processus cron en cours d'exécution?

Oui

Pour tuer un processus manuellement, une façon consiste à utiliser pkill

J'avais pensé à pkill / killall, mais certaines de mes commandes dans le fichier crontab le sont respectivement! cela signifie qu'après avoir terminé une commande, la suivante sera démarré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 pkillproblème suivant : qu'en est-il des scripts? (J'ai importé des scripts bash dans crontab -e) ->sudo pkill ???


Votre question porte sur les processus cron en cours d'exécution? ou la liste des cron-jobs? Veuillez modifier votre question pour être plus clair à ce sujet. Pour arrêter le cron-job en cours, allez ( askubuntu.com/q/272419/66980 )
Mohammad Etemaddar

Édité; 1. oui, en regardant les processus cron en cours d'exécution? (Je veux mettre les processus au premier plan); 2. Ensuite, je veux l'arrêter manuellement?! (hors calendrier crontab)
mini

La meilleure façon d'ajouter des informations supplémentaires à votre question est de la modifier à l'aide du bouton Modifier . C'est mieux visible de cette façon, et les commentaires sont principalement à des fins secondaires et temporaires. Les commentaires sont supprimés dans diverses circonstances. Tout ce qui est important pour votre question devrait être dans la question elle-même.
guntbert

Réponses:


42

Premièrement, utilisez une seule commande par ligne dans crontab. Modifiez cette ligne crontab:

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

il ressemble donc à:

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

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

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

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

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

Deuxièmement, vous pouvez voir l'exécution des 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 démarrée par cron. Vous pouvez tuer tous les processus liés à une tâche cron spécifique en utilisant l'ID de session, donc dans l'exemple ci-dessus, vous devez tuer l'ID de session 4289:

pkill -s 4289

1
sh ps: cmd: keyword not found ps: illegal argument: afx
J'obtiens

donc cron ne donne pas un moyen "pratique" pour montrer ses processus?
Cirelli94

@alecrust: Essayez cecips -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Bulrush

0

Pour tuer un processus manuellement, une façon consiste à utiliser pkill. pkill arrêtera tous les processus qui ont le modèle suivant dans son nom. Par exemple, pour arrêter tous les processus wget, utilisez:

sudo pkill wget

J'avais pensé à pkill / killall, mais certaines de mes commandes dans le fichier crontab le sont respectivement! cela signifie qu'après avoir terminé une commande, la suivante sera démarré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 ???
mini

0

changez votre cronjob comme ça

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

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.