GNU/Linux >> Tutoriels Linux >  >> Linux

regarder la sortie de ps aux | grep blah dans tmux ne fonctionnera pas?

Exécuter

watch "COLUMNS= ps aux | grep TheProcessYouWatch"

Explication :watch définit certaines variables d'environnement supplémentaires, à savoir COLUMNS et LINES . Cela peut être facilement vérifié en comparant env | grep COLUMNS et watch 'env | grep COLUMNS' .

Quand COLUMNS est défini, ps tronque sa sortie à autant de caractères dans une ligne, même si la sortie est redirigée vers grep (ou autre chose). (ps , pourquoi tu me fais ça?). Forcer COLUMNS être vide entre watch La commande de est suffisante pour faire ps travailler comme OP (et moi) prévu.

Au fait, pour éviter watch et grep processus faisant partie de votre sortie surveillée, pensez à ajouter [] comme ceci :

watch "COLUMNS= ps aux | grep [T]heProcessYouWatch"

(Bien sûr, je vous recommande de vous familiariser avec pgrep aussi. D'autres réponses seront utiles à cet égard.)


Comme mentionné dans la modification de la question et la réponse de xzfc, le problème semble être lié au retour à la ligne de tmux. Pour quelque chose de plus proche d'un remplacement immédiat de ps aux | grep [q]uote , si vous n'avez pas besoin d'informations sur l'utilisateur, essayez :

$ pgrep -af [q]uote
392 bash -c sleep 5 && echo quote
399 bash -c sleep 5 && echo second quote

$ watch pgrep -af [q]uote

Le -a flag fait que la sortie inclut les arguments de la ligne de commande, tandis que -f vous permet de rechercher les arguments de la ligne de commande ainsi que le nom du processus uniquement.


ps est un utilitaire qui produit une sortie lisible par l'homme, et s'appuyer sur le texte lisible par l'homme est une mauvaise idée. Vous devez utiliser pgrep myShittyProcess au lieu de ps aux | grep myShittyProcess . pgrep produit une liste nue de pids, et si vous voulez une sortie moins ennuyeuse, vous pouvez passer pgrep la sortie de ps :

ps -opid,user,args -p `pgrep myShittyProcess`

Pour utiliser ce one-liner avec watch vous devez l'inclure dans ' ' (pas " " ) pour empêcher la substitution précoce des commandes shell :

watch 'ps -opid,user,args -p `pgrep myShittyProcess`'

Linux
  1. Tmux ne source pas le .tmux.conf ?

  2. Vim ne fonctionne pas dans Tmux ?

  3. Comment grep avec la sortie couleur

  4. grep :commande introuvable

  5. \d n'est-il pas pris en charge par les expressions de base de grep ?

Linux - Arrêtez de regarder la sortie d'un programme particulier après avoir utilisé la commande Watch ?

Plus élégant ps aux | grep -v grep

Comment diriger la sortie de grep vers cp?

signification de la sortie ps aux

tmux Ctrl+B ne fonctionne pas

Arrêter de regarder la sortie d'un programme particulier après avoir utilisé la commande watch ?