Wie kann ich FFMPEG stoppen?

7

Jemand, der einen Server eingerichtet hat und über FFMPEG verfügt, versucht, ein Video zu codieren, und der Webserver wurde effektiv beendet. Ich habe es nicht eingerichtet, habe aber Sudo-Zugriff und muss FFMPEG beenden, damit der Webserver erneut reagiert. Wie kann ich das machen? Vielen Dank!

Es ist ein Ubuntu 11.10-Server mit einem Standard-LAMP-Stack.

gokujou
quelle

Antworten:

15

Unter Linux können Sie sudo killall ffmpegjeden Prozess namens "ffmpeg" beenden oder ps -ef | grep ffmpegdie Prozess-IDs abrufen und dann sudo kill <PID>jeden einzeln beenden .

Wenn sie nicht sterben, sudo kill -9 <PID>werden sie beendet.

Wenn Sie ffmpeg nicht beenden möchten, können Sie einen laufenden Prozess mit anhalten sudo kill -s SIGSTOP <PID>und erneut starten sudo kill -s SIGCONT <PID>.

Achtung: Nimmt unter Solaris killallkeine Argumente an. Es tötet einfach alles.

Ladadadada
quelle
Ich würde sie möglicherweise auch chmod a-x `which ffmpeg`daran hindern, es wieder zu tun.
Tom O'Connor
Das hat für mich geklappt, danke. Ich werde das Team erneut besuchen, um sicherzustellen, dass ein System eingerichtet ist, das FFMPEG dies nicht noch einmal zulässt.
Gokujou
Von den Optionen -s SIGCONT und SIGSTOP gesendete Signale funktionieren unter Linux Mint 19.3 Beta nicht, mit Kernel 5.0.0-37-generic aus einem unbekannten Grund. Optionen, die auch als -s CONT oder -s STOP angegeben wurden, funktionierten ebenfalls nicht. Natürlich scheinen sie zu funktionieren, denn die Reaktion von ffmpeg scheint tatsächlich gestoppt worden zu sein, ABER in der aufgezeichneten Datei war alles ohne Unterbrechung. Ich gehe also davon aus, dass möglicherweise eine Pufferung beteiligt war oder diese Signale einfach nicht funktionieren.
Piotao
ffmpeg scheint nach meinen Experimenten unter Linux wirklich -9 zu benötigen
Stefan Reich
6

Nicht ganz das, was Sie fragen, aber wenn es wichtig ist, dass der ffmpeg-Job beendet wird, reicht es möglicherweise aus, ihn neu zu definieren, um ihm eine niedrigere Priorität als den Webserverprozessen zu geben.

Führen Sie so etwas wie aus ps auxw |grep ffmpeg, um die PID des ffmpeg-Prozesses abzurufen, und geben Sie dann ein Problem ein sudo renice -n 19 PID, um die Prozesspriorität für die Prozess-PID vom ersten Befehl an zu ändern.

Diese Strategie könnte ein wenig besser funktionieren, als ffmpeg direkt zu töten. Es gibt Ihnen Raum zum Atmen für die Webprozesse, ermöglicht jedoch das Beenden des ursprünglichen Auftrags. Wenn eine Art Job-Queuer ausgeführt wird, wird ffmpeg möglicherweise erneut gestartet, nachdem festgestellt wurde, dass der ursprüngliche Job nicht erfolgreich abgeschlossen wurde.

cjc
quelle
1
ps -ef | grep ffmpeg

Notieren Sie sich die PIDs verschiedener ffmpeg-Prozesse und dann für jede PID

kill -9 PID
m0ntassar
quelle