Comment supprimer ou supprimer un seul travail cron à l'aide de la commande linux?

40

J'ai créé des emplois cron pour mon site (voir la liste ci-dessous) et ils fonctionnent bien. J'imprime tous les travaux cron en utilisant ce script PHP:

$cronfiles=exec('crontab -l',$output);
echo "<pre>";
print_r($output);

Quelles sorties:

[0] => 0 0 * * * wget php -q http://www.example.com/report_send.php
[1] => 0 0 * * * wget php -q http://www.example.com/event_reminder.php
[2] => 0 0 * * * wget php -q http://www.example.com/user_reminder.php
[3] => * * * * * wget php -q http://www.example.com/cleardata.php

Maintenant, je veux supprimer ou supprimer un seul travail cron de mon serveur par commande. Par exemple, je veux supprimer le travail " 0 0 * * * wget php -q http://www.example.com/event_reminder.php" du serveur.

J'ai essayé la crontab -rcommande qui supprime tous les travaux cron de mon serveur mais je veux supprimer le travail cron spécifique.

Pouvez-vous m'aider s'il vous plaît pour la solution?

Anumavu
la source

Réponses:

61
  1. Pour ajouter un travail à crontab:

    (crontab -u mobman -l ; echo "*/5 * * * * perl /home/mobman/test.pl") | crontab -u mobman -
    
  2. Pour supprimer un travail de crontab:

    crontab -u mobman -l | grep -v 'perl /home/mobman/test.pl'  | crontab -u mobman -
    
  3. Supprimer tout de crontab:

    crontab -r
    

Rien n'est compliqué: -STDOUT sous Linux!

Greg Hanis
la source
1
Greg: Bienvenue sur Ask Ubuntu! ;-) Pourriez-vous s'il vous plaît examiner mes modifications et revoir l' aide à la modification pour améliorer la lisibilité de vos réponses à l'avenir ... ;-)
Fabby
4
Veuillez remplacer 1. Pour ajouter un travail à crontab avec (crontab -u mobman -l 2> / dev / null; echo "* / 5 * * * * perl /home/mobman/test.pl") | crontab -u mobman - (ref: stackoverflow.com/questions/4880290/… )
Yasiru G
1
@YasiruG Je pense que crontab -l 2 > /dev/nullc'est seulement nécessaire si vous ne voulez pas voir le message no crontab for <user>s'il n'y a pas de tâche cron existante. En passant, nous n’avons pas besoin de cette option -u mobmansi nous voulons ajouter le travail cron pour l’utilisateur actuel.
baptx
23

A partir d'un type d'invite root

crontab -e

Vous pouvez maintenant modifier le fichier et supprimer la ligne à supprimer. Vous pouvez également utiliser ceci pour éditer la crontab pour les utilisateurs si vous avez l'invite pour cet utilisateur.

Au fait: je préfère ajouter des tâches cron à /etc/crontab. Cela me semble un peu plus flexible.

Rinzwind
la source
Cela semble plus facile et plus logique que la magie des scripts, mais j'aimerais tellement être plus sorcier.
Jason Sebring
Idéal pour les modifications manuelles, mais pour l'automatisation, vérifiez le script ci-dessus -
AFP_555
7

Voir les utilisateurs

Utilisez la syntaxe suivante pour afficher le travail cronjob de l' utilisateur waqleh:

crontab -u waqleh -l

Voir le Cronjob de l'utilisateur racine

Il suffit de taper la commande suivante:

crontab -l

Cela devrait lister le contenu du script crontab.

Afficher / etc / crontab

Une tâche cron peut également être exécutée à partir du fichier / etc / crontab. Pour le voir, entrez:

less /etc/crontab

Supprimer tous les travaux cron

Si et seulement si vous voulez arrêter tous les travaux cron, vous pouvez les supprimer entièrement avec:

crontab -r

Cela supprime la totalité du fichier crontab, donc faites attention si vous avez d'autres tâches cron répertoriées ici!

Supprimer des tâches cron spécifiques

Ouvrez le fichier cron et supprimez le ou les cron (s) que vous souhaitez supprimer

crontab -e

chaque ligne représente un travail cron. Vous pouvez supprimer n'importe quel cron en utilisant ctrl + k puis enregistrez et quittez

Waqleh
la source
1
crontab -l | grep -v 'wget php -q http://www.example.com/event_reminder.php' | crontab -

crontab -l liste les travaux crontab en cours

grep -v filtrer une ligne

crontab - ajoute tous les éléments imprimés dans le fichier crontab.

Diego D
la source
0

Vous pouvez exécuter crontabsans arguments et alimenter la nouvelle crontab via stdin.

geirha
la source
@qeirha .. Je veux supprimer un travail spécifique de mon serveur
anumavu
@anumavu, vous avez donc lu crontab -l, avec ce que vous avez déjà fait, supprimer le travail de la liste, puis le réécrire crontab.
geirha