Updated on 14.05.2017
Create a file called /etc/init.d/oscam with the following contents:
#!/bin/sh ### BEGIN INIT INFO # Provides: oscam # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start and stop service oscam # Description: oscam ### END INIT INFO DAEMON=/usr/local/bin/oscam PIDFILE=/var/run/oscam.pid DAEMON_OPTS="-p 4096 -r 2 -B ${PIDFILE} -c /usr/local/etc/ -t /tmp/.oscam" test -x ${DAEMON} || exit 0 . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Starting OScam..." /sbin/start-stop-daemon --start --quiet --background --name oscam --exec ${DAEMON} -- ${DAEMON_OPTS} log_end_msg $? ;; stop) log_daemon_msg "Stopping OScam..." /sbin/start-stop-daemon -R 5 --stop --name oscam --exec ${DAEMON} log_end_msg $? ;; restart) $0 stop $0 start ;; force-reload) $0 stop /bin/kill -9 `pidof oscam` /usr/bin/killall -9 oscam $0 start ;; *) echo "Usage: /etc/init.d/oscam {start|stop|restart|force-reload}" exit 1 ;; esac
This assumes that you have the oscam binary located in /usr/local/bin/oscam. Remember you have to create this file as the root user.
To “enable” the script and the starting up of oscam on reboot, use the following commands on Ubuntu/Debian:
sudo chmod +x /etc/init.d/oscam sudo update-rc.d oscam defaults
systemd compatibility
The script will also work on systemd
systems (like Ubuntu 16.04 and so on).
To force systemd to detect the service, you have to do:
systemctl daemon-reload
To enable the system to start at boot:
systemctl enable oscam
crontab checks
Furthermore, for a simple crontab script to check if oscam has crashed and didn’t restart by itself, let’s create a file and call it /usr/local/bin/oscamchk:
#!/bin/bash PIDFILE=/var/run/oscam.pid if (kill -0 `cat $PIDFILE`) then echo "it's alive!" > /dev/null else rm $PIDFILE /etc/init.d/oscam start > /dev/null echo "OSCAM restarted at `date`" >> /var/log/oscam-crash.log fi
And let’s make this run every minute:
sudo chmod +x /usr/local/bin/oscamchk sudo crontab -e
Once the crontab editor has started, add the following line:
* * * * * /usr/local/bin/oscamchk >/dev/null 2>&1