Manip simple du shell

neolistic Messages postés 93 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    0