2016-06-28 11 views
0

Ich habe versucht, einen Prozess mit Schale in Ubuntu zu töten, die mit wie geschaffen ist:tötet einen Hintergrundprozess mit Shell in Ubuntu

#!/bin/bash 
<!--There should be codes which can kill my app(run in the background) 
echo "app will be run." 
java -jar path/to/my/jar/file.jar /arguman/of/myApp.txt & << 'ENDAPP' 
disown ENDAPP 

Ich weiß, wie eine App mit manuel zu töten, die wie ist:

ps -ax -u | grep appName

und finden processid dann,

töten [processId]

Ist es möglich, zu tun? Wenn ja, wie? Danke.

+0

Ich brauche einen Bash-Skript Diese App zu töten. –

Antwort

0

Sie können tatsächlich Beispiele finden, wie Sie dies tun hier, auf dieser Website, indem Sie eine einfache Suche. (Oder Google es: "bash shell wait.") Wenn Sie einen Hintergrundprozess ausführen, können Sie die PID ("Prozess-ID") des neuen Kinds erhalten. Sie können warten, bis das Kind fertig ist. Sie können es auch töten.

Shell-Befehle, die Ihnen die Ausführung von jobs zeigen, liefern auch ihre PID.

jedoch bedenken, dass „ein Kind zu töten“ ... während es nicht, dass Sie in Gefängnis landen wird in diesem Fall ;-) ... „ist in der Regel nicht eine gute Sache zu tun. " Sie haben keine Ahnung, was das Kind getan hat, was es getan hat oder noch nicht getan hat, welche Daten in einem inkonsistenten Zustand sein könnten, wenn Sie diese Kugel durch sein Gehirn stecken. Es ist unmöglich, einen Prozess zuverlässig zu debuggen, der darauf basiert, seine Kinder zu ermorden.

Sie können „ein verschiedenes Signal senden“, wie SIGHUP oder SIGUSR1, ein Verfahren, den gleichen kill Befehl, und entwerfen das Kind Prozess für dieses Signal als Hinweis zu hören, dass es muss „shut selbst runter, schnell. " Immer gibt einem Prozess ein Signal „setzen seine eigenen Angelegenheiten in Ordnung, und dann zu verlassen‚diese sterbliche Hülle‘...“