GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter une commande linux à partir de python

J'utilise habituellement subprocess pour exécuter une commande externe. Pour votre cas, vous pouvez faire quelque chose comme ce qui suit

from subprocess import Popen, PIPE

p = Popen('ps -ef | grep rtptransmit | grep -v grep', shell=True,
          stdout=PIPE, stderr=PIPE)
out, err = p.communicate()

La sortie sera en out variables.


commands est obsolète, vous ne devez pas l'utiliser. Utilisez subprocess à la place

import subprocess
a = subprocess.check_output('ps -ef | grep rtptransmit | grep -v grep', shell=True)

ps limite apparemment sa sortie pour tenir dans la largeur présumée du terminal. Vous pouvez remplacer cette largeur par le $COLUMNS variable d'environnement ou avec le --columns option à ps .

Le commands module est obsolète. Utilisez subprocess pour obtenir la sortie de ps -ef et filtrez la sortie en Python. Ne pas utiliser shell=True comme suggéré par d'autres réponses, c'est tout simplement superflu dans ce cas :

ps = subprocess.Popen(['ps', '-ef', '--columns', '1000'], stdout=subprocess.PIPE)
output = ps.communicate()[0]
for line in output.splitlines():
    if 'rtptransmit' in line:
        print(line)

Vous pouvez également jeter un œil au pgrep commande par laquelle vous pouvez rechercher directement des processus spécifiques.


Linux
  1. Linux - Comment basculer de manière robuste le périphérique de sortie Pulseaudio à partir de la ligne de commande ?

  2. Commande Linux mv

  3. Linux du command

  4. Commande IP Linux

  5. Commande cd Linux

Commande W sous Linux

À la commande sous Linux

Commande iftop sous Linux

Commande lsblk sous Linux

Comment supprimer une commande de l'historique sous Linux

Exemples de commandes echo Linux