Invece di avviare il processo che si desidera eliminare dall'attività exec (server di selenio nel tuo caso). Usa l'attività exec per lanciare uno script (ho usato bash ma anche ruby, python ecc.). questo script avvierà l'attività desiderata e farà eco al pid. Sostituisci il percorso e l'eseguibile richiesti che vuoi eseguire nel sotto.
#!bin/bash
./path_to_executable/process_to_run &
echo $!
Annotare il "&" questo invia il processo per lo sfondo e permette Phing di continuare a costruire il vostro progetto. L'ultima riga emette il pid che può quindi essere catturato e salvato in un file dal task exec di phing. Per salvare questa PID aggiungere l'opzione di uscita per il compito phing exec:
<exec command="your_script" spawn="true" output="./pid.txt" />
l'opzione di uscita salverà l'output dell'attività exec in un file pid.txt nella directory corrente. Nota che potrebbe essere necessario chownare questo file (all'utente che sta eseguendo phing) per consentirne la lettura in seguito.
In un'operazione separata, è possibile leggere il pid dal file e quindi utilizzare un compito exec di uccidere il processo.
<loadfile property="pid" file="./pid.txt" />
<exec command="kill ${pid}" dir="./" />
Nota: nel di cui sopra potrebbe essere necessario anteporre sudo per il comando kill (a seconda di chi possiede il processo, e come è stato avviato
opzionale, ma vale la pena considerare è l'aggiunta di un compito di rimuovere. il file pid.txt. Ciò impedirà qualsiasi possibilità di uccidere il processo sbagliato (basato su un pid stantio). Potresti anche voler controllare il contenuto del file pid.txt poiché, in caso di errore, potrebbe contenere qualcosa diverso dal pid
Mentre questa potrebbe non essere la soluzione più diretta o ottimale, funziona.
fonte
2013-06-29 20:46:40
Hai mai trovare una soluzione per questo? Mi piacerebbe uccidere anche il server di selenio dopo l'esecuzione dei test. – papaiatis