Manip simple du shell

Bonjour linuxiens, linuxiennes!

Je voudrais connaitre un truc sur les commandes de shell:
par exemple, comment utiliser les commandes "cut", "lpstat" et "cancel" pour que en une commande je puisse annuler toute les impressions renoyées par la commande lpstat:
Il faut récupérer la premiere colonne du resultat de lpstat
puis appliquer cancel sur chaque lignes

j'avais pensé à "lpstat | cut | cancel" mais ca marche pas
En fait, comment on fait pour que l'argument de lpstat soit l'entrée standard?

De la même facon, comment tuer tous les processus qui contiennent le nom "toto"?

Merci à tous!
--
Si tu crois etre perdu, revient sur tes pas.

2 réponses

  1. Modérateur
    Voilà un script en Perl pour tuer les processus qui contient "toto"
    #! /usr/bin/perl
    
    use warnings;
    use strict;
    
    my @toto_pid = grep { /.*/ } qx(ps -ef | grep 'toto');
    
    foreach(@toto_pid){
            my $pid=(split /\s+/,$_)[1];
            system "kill", "-9","$pid"; # tuer les processus qui contient toto
    }


    En ce qui concerne l'annulation des travaux d'impression d'une destination l'option a du cancel ne te suffit pas? Voir man cancel
    1. Modérateur
      Salut,

      Si le but recherché est, je cite "comment on fait pour que l'argument de lpstat soit l'entrée standard ?"
      Alors essaie ça :
      for i in `lpstat | awk '{ print $1 }'`; do cancel $i ; done
      Et pour les processus voilà un exemple pour afficher tous les processus de l'user "toto" :
      for i in `ps aux | grep ^toto |  awk '{ print $2 }'`; do echo $i; done;
      pour tuer tous ses processus, remplace le :
      "do echo $i"
      par :
      do kill -9 $i