Comment effectuer une recherche pour le PID? (bash)
en supposant que je sais que le PID d'un processus et que vous voulez faire une recherche dans le sp -A, comment dois-je faire? J'ai essayé de faire ceci:
echo "Enter PID to search: "
read PID
search=$(ps -A | grep -v PID | awk '{print $1}')
Cela me renvoie à une longue liste de Pid. Alors, comment puis-je obtenir de l'utilisation de chacune des valeurs de la sortie et à faire:
if [ "$PID" = "*each_value_in_search_list*" ]; then
........
Dans ce cas, je suis en train de comparer ce que l'utilisateur entre avec la sortie de ma commande, comment dois-je faire? Suis-je en train de faire de la bonne façon en premier lieu? Ou est-il un autre moyen pour ce faire?
Merci pour votre aide, tous ceux qui ont répondu à cette question. (:
Je ne comprends pas pourquoi vous utilisez
j'ai essayé de supprimer l'en-tête
-v
drapeau de grep.j'ai essayé de supprimer l'en-tête
OriginalL'auteur Herves | 2009-05-25
Vous devez vous connecter pour publier un commentaire.
Le commutateur-v grep pour effectue une inversion de la recherche, en d'autres termes, vous obtiendrez tout ce que vous NE voulez PAS. Après une variable est définie, vous devez également référence avec le préfixe $.
essayer cette
--pid
n'est pas pris en charge sur les BSDps
. le-p
option semble préférable.OriginalL'auteur John T
Vous êtes grepping la sortie de
ps
pour toutes les lignes qui ne contiennent pas la chaîne littérale "PID". Vous souhaitez utiliser$PID
au lieu d'utiliser le variable nommé PID au lieu de la lettre "PID". En outre, puisque vous ne voulez pas faux positifs sur d'autres champs correspondant à la PID, juste répondre sur la première colonne:La
"\>"
séquence d'échappement correspond à la chaîne vide à la fin d'un mot.Certaines versions de
ps
soutenir un-p
option pour seulement vous donner l'info à propos d'un PID, de sorte que vous n'avez pas besoin de grep ou awk:OriginalL'auteur Adam Rosenfield
Votre
"grep -v PID"
est un truc standard pour supprimer l'en-tête de ligne, pas un moyen d'obtenir la réelle PID détails de la sortie.Si tout ce que vous voulez, c'est les détails de ce processus, il suffit d'utiliser:
Qui sera mis en recherche pour le PID en question si elle existe, ou la chaîne vide sinon, qui est ce que vous voulez.
Il y a un problème avec un aveugle de recherche pour le PID (par opposition à la vérification de la colonne 1 avec
awk
), c'est que vous pouvez récupérer les lignes qui PID affiche dans la chaîne de commande.OriginalL'auteur paxdiablo
Au lieu d'utiliser
grep
vous pourriez utilisation de l'option-p
pour passer le PID directement à laps
commande.OriginalL'auteur Dave Webb
Si la racine de la question est de vérifier si l'entrée PID correspond à une entrée du processus (de la racine). Plus spécifique, si vous êtes en mesure d'envoyer un signal à ce processus (de l'utilisateur):
Il pourrait l'être, bien sûr, que ce n'est pas du tout ce que vous voulez. Je me sentais libre de les "interpréter" votre question un peu 😉
OriginalL'auteur TheBonsai
OriginalL'auteur diyism