Ihr subprocess Befehl ist richtig, aber nach stdout und stderr Puffer zuweisen müssen Sie von ihnen lesen. Dies ist eine Möglichkeit, das zu tun:
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
ich den Befehl als Liste Argument angegeben haben. So empfiehlt das Subprozessmodul dies zu tun. Dann iteriert die for-Schleife über den Puffer, liest jeweils 1 Byte und druckt sie auf dem Bildschirm. Dieser Stream wird geschlossen, sobald der Subprozess beendet oder geschlossen wurde.
Haben Sie versucht, mit 'os.system (your_cmd)' Ihren Befehl auszuführen? – Aditya
Was funktioniert nicht? Was ist los? – JohanL