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 ???
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
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).
Tuer un processus manuellement est l’un des moyens d’utiliser pkill
name__. 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