Manip simple du shell

Fermé
neolistic Messages postés 93 Date d'inscription samedi 7 mai 2005 Statut Membre Dernière intervention 10 juillet 2007 - 27 févr. 2006 à 16:59
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 27 févr. 2006 à 18:58
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!
A voir également:

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 févr. 2006 à 18:37
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 févr. 2006 à 18:58
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