Je veux utiliser pkill -f myPattern
dans le sous-processus d'un python:Python subprocess pkill
import subprocess as sp
def stop_process(name,host):
host = host.strip()
if host == socket.gethostname():
sp.call ([ 'pkill -f', name ])
else:
sp.call ([ 'ssh', host, 'pkill -f ' + name ])
quand je l'appelle stop_process
avec tous les nœuds cluster, il fonctionne pour tous les nœuds, mais le noeud courant. Autrement dit, lorsque host == socket.gethostname()
l'application imprime Terminated
et quitte.
Est-ce la bonne façon d'arrêter le processus avec un modèle donné? Si oui, comment puis-je résoudre ce problème?
Merci
Pourrait-il être que dans le premier appel vous utilisez une liste alors que dans la seconde vous utilisez une chaîne pour la commande pkill? Puis-je vous suggérer d'utiliser shlex.split? –
Êtes-vous sûr que 'host == socket.gethostname()' est 'True'? –
Oui, même sans aucune condition si, il se bloque. J'ai testé avec 'os.system ('pkill -f' + nom)'. Encore une fois, l'application s'arrête avec le message 'Terminated' –