Votre commande est correcte sous-processus, mais après avoir affecté stdout et tampons stderr vous avez besoin de lire d'eux. C'est une façon de faire cela:
1 #!/usr/env/python
2
3 import subprocess
4 import sys
5
6 cmd = ['watch', '-d', 'tail', '-n', '1', '/var/log/messages']
7
8 p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
9
10 for line in iter(lambda: p.stdout.read(1), ''):
11 sys.stdout.write(line)
12 sys.stdout.flush()
13
J'ai indiqué la commande comme un argument de liste. C'est ainsi que le module de sous-processus recommande de le faire. Ensuite, la boucle for itère sur le tampon, lisant 1 octet à la fois et l'imprimant à l'écran. Ce flux sera fermé une fois que le sous-processus meurt ou se ferme.
Avez-vous essayé d'utiliser 'os.system (your_cmd)' pour exécuter votre commande? – Aditya
Qu'est-ce qui ne fonctionne pas? Qu'est-ce qui se passe? – JohanL