pguardiario hat mich geschlagen, obwohl seine Implementierung ein bisschen gefährlich ist, da sie SIGKILL
anstelle der (empfohlenen) verwendet SIGINT
. Hier ist eine Rechenaufgabe, die ich in meine Entwicklungsprojekte importiere:
lib / task / stopserver.rake
desc 'stop server'
task :stopserver do
pid_file = 'tmp/pids/server.pid'
if File.file?(pid_file)
print "Shutting down WEBrick\n"
pid = File.read(pid_file).to_i
Process.kill "INT", pid
end
File.file?(pid_file) && File.delete(pid_file)
end
Dies führt nur dann zu einer Unterbrechung des Servers, wenn die PID-Datei vorhanden ist. Es werden keine unschönen Fehler ausgegeben, wenn der Server nicht ausgeführt wird, und es benachrichtigt Sie, wenn der Server tatsächlich heruntergefahren wird.
Wenn Sie feststellen, dass der Server mit dieser Aufgabe nicht heruntergefahren werden soll, fügen Sie nach der Process.kill "INT"
Zeile die folgende Zeile hinzu und versuchen Sie, ein Upgrade auf einen Kernel durchzuführen, bei dem dieser Fehler behoben ist.
Process.kill "CONT", pid
( Hutspitze : Jackr )
kill -9
nur dann , wenn der Dämon hing. Andernfalls verlieren Sie Ihre nicht gelöschten Daten aus Active Directory-Caches.