Script sh

Fermé
medalaa Messages postés 6 Date d'inscription mercredi 25 décembre 2013 Statut Membre Dernière intervention 31 décembre 2013 - Modifié par mamiemando le 1/01/2014 à 15:45
 Utilisateur anonyme - 1 janv. 2014 à 16:53
Bonjour,
svp j'ai un problemme dans mon script
lors de l'excution il me fait une erreur
l'erreur est:
ps: unknown option -- A
Try 'ps --help' for more information.


#!/bin/sh
quitter="N"
#test sur la condition d'arret :
while [ $quitter = "N" ];
do
  #l'utilisateur entre le nom du processus qu'il veut supprimer :
  echo -n "Quel processus souhaitez-vous supprimer ? : ";
  read processus_a_supprimer;
  # La ligne de commande suivante permet de filtrer le résultat obtenu
  # par " ps -fA " comme suit mettre le résultat dans PID :
  # * grep "$USER" fait ressortir les ligne qui correspondent à l'utilisateur
  # * grep "$processus_a_supprimer" prend les lignes qui correspondent au(x)
  # processus qu'on veut supprimer
  # * grep -v grep retir les la ligne de la commande grep car elle contien
  # le nom d processus à supprimer
  # * tr -s ' ' supprime tout les espaces multiples (elle ne laisse
  # qu'un seul espace entre les champs)
  # * cut -f 2 -d ' ' prend les PIDs de chaque ligne (les PIDs du(es)
  # processus à supprimer)
  PID='ps -fA | grep "$USER" | grep "$processus_a_supprimer" | grep -v grep | tr -s ' ' | cut -f 2 -d ' '' ;
  if [ -z "$PID" ] # si le processus n'existe pas
  then
    echo "*******************************";
    echo "Aucun processus ne porte ce nom";
    echo "*******************************";
  else
    # Confirmer les supression du(es) processus :
    echo -n "êtes-vous sûr de vouloir supprimer le processus $processus_a_supprimer (O/N): ";
    read confirmer;
    if [ $confirmer == "O" ]
    then
      #suppression du(es) processus :
      kill $PID ;
    fi
  fi
  echo -n "voulez-vous quitter ? (O/N):";read quitter;
done ;
A voir également:

2 réponses

mamiemando Messages postés 33346 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 novembre 2024 7 803
Modifié par mamiemando le 1/01/2014 à 15:44
D'après le message, ton erreur vient de cette ligne :

PID='ps -fA | grep "$USER" | grep "$processus_a_supprimer" | grep -v grep | tr -s ' ' | cut -f 2 -d ' '' ;


L'option -A (qui figure dans
ps -fA
) n'est pas supportée sur ce système. Ceci peut s'expliquer assez simplement : selon le système utilisé (macOS, linux, etc...) les options de la commande
ps
ne correspondent pas toujours.

J'imagine que tu as récupéré le script de quelqu'un qui utilise un autre système d'exploitation.

Chez moi, d'après
man ps
, l'option -A correspond à :

-A     Sélectionner tous les processus. Identique à -e.

Tu peux donc essayer dans un premier temps de remplacer cette ligne par :

PID='ps -fe | grep "$USER" | grep "$processus_a_supprimer" | grep -v grep | tr -s ' ' | cut -f 2 -d ' '' ;


Bonne chance
0
Utilisateur anonyme
1 janv. 2014 à 16:53
salut,

un seul
pkill
correctement paramétré (voir la page man) tuera le processus indésirable, au lieu de cette longue pipeline.

si tu veux conserver le
PID
pour ensuite demander confirmation de la suppression du processus, utilise alors
pgrep
.
0