Restarting FFMPEG Using Monit

Restarting FFMPEG Using Monit


How to monitoring and restarting ffmpeg using “Monit” utility.

Monit is a free, open source process supervision tool for Unix and Linux. With Monit, system status can be viewed directly from the command line, or via the native HTTP(S) web server.

Create FFMPEG Start Script

We will start our ffmpeg from script – Create new file and fill with code:

killall -9 ffmpeg
ffmpeg -v 0 -loglevel 0 -i StreamSource Your_Ffmpeg_Commands udp:// &
echo $ffmpeg_pid
echo $ffmpeg_pid > $pid_file
exit 0

Change ffmpeg -v 0 -loglevel 0 -i StreamSource Your_Ffmpeg_Commands udp://  row content as you need.

Install and Configure Monit

For Ubuntu/Debian/Mint:

$ sudo apt-get install monit

On CentOS/RedHat/Fedora:

# yum install monit

Start Monit:

# service monit start

Display Monit’s Status Details:

# monit status

Example output:

The Monit daemon 5.5 uptime: 1h 24m

Process 'ffmpeg'
status Running
monitoring status Monitored
pid 17650
parent pid 1
uptime 1h 23m
children 0
memory kilobytes 53200
memory kilobytes total 53200
memory percent 1.3%
memory percent total 1.3%
cpu percent 8.3%
cpu percent total 8.3%
data collected Thu, 07 Jun 2018 15:06:06

System ''
status Running
monitoring status Monitored
load average [0.34] [0.29] [0.21]
cpu 8.7%us 1.1%sy 0.0%wa
memory usage 247776 kB [6.1%]
swap usage 0 kB [0.0%]
data collected Thu, 07 Jun 2018 15:06:06


Edit the main configuration file of Monit with any text editor. Configuration file located at /etc/monit.conf (RedHat/CentOS) or /etc/monitrc (Ubintu).

In configuration below Monit will monitoring 2 things: ffmpeg process availability and CPU (user) usage. If no ffmpeg process in the system Monit will start script (ffmpeg restart), or if CPU usage goes below 5% for 2 testing cycles ffmpeg will be restarted.

And add next text.  Monit will write logs in monit.log file. Change “udp://” to yours destination. PATH_TO_START_SCRIPT – patch to your ffmpeg start script Also you will need change  CPU usage percent for your case. set daemon 3 this is the 3 seconds interval Monit runs its checks.

# vi /etc/monit.conf

set daemon 3 
set logfile /var/log/monit.log
check process ffmpeg
matching "udp://"
start program = "PATH_TO_START_SCRIPT/"
stop program = "/usr/bin/killall -9 ffmpeg"

check system
start program = "PATH_TO_START_SCRIPT"
stop program = "/usr/bin/killall -9 ffmpeg"
if cpu usage (user) < 5% for 2 cycles then restart


After installing and configuring Monit, check  configuration file syntax for errors.

# monit -t

If everything is OK command will return: “Control file syntax OK“.

Now you can need restart Monit for reloading new configuration:

# service monit restart

Log file output example how Monit restarts ffmpeg process when CPU usage below configured threshold:

Monit Restarting FFMPEG



Leave a Reply