Kategoriearchive: Snippets

Tiny Tiny RSS Update Daemon INIT-Script

„Yet another Update Daemon Script“, nachdem ich nicht wirklich vernünftige gefunden habe. Die meisten töten einfach „screen“ oder PHP, wenn sie den Daemon beenden wollen. Ich habe hier eine Lösung, in der der Session-Name für „screen“ gesetzt wird und diese Session dann explizit geschlossen wird.

Script + Beschreibung

Im Prinzip ein simples INIT-Script. Über Upstart wäre es natürlich viel kleiner. Allerdings benutze ich kein Upstart (oder Systemd) auf meinem Debian Server.

#!/bin/bash
### BEGIN INIT INFO
# Provides: TT-RSS Daemon
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start TT-RSS Daemon
### END INIT INFO

UPDATEDAEMON=/var/www/path/to/update.php
RUNAS=www-data
SESSIONNAME=tinytinyrss

case "$1" in
start)
echo "Starting Tiny Tiny RSS daemon..."
su $RUNAS -c "screen -S $SESSIONNAME -d -m php $UPDATEDAEMON --daemon"
;;

stop)
echo "Stopping Tiny Tiny RSS daemon..."
su $RUNAS -c "screen -S $SESSIONNAME -X quit"
;;

*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop}"
exit 1
;;

esac

Es gibt 3 Variablen am Anfang des Scripts, die vorher natürlich angepasst werden müssen. Wer sich nicht sicher ist, ob der Webserver als www-data läuft, kann das vorher schnell prüfen:

ps aux | grep -E 'nginx|httpd|apache' | grep -v root

Sieht dann z.B. (www-data) so aus:

www-data 10430  0.0  0.0  69584  3068 ?        S    13:25   0:00 nginx: worker process

In dem Fall wäre RUNAS=www-data

UPDATEDAEMON ist selbsterklärend. Das ist der Pfad zur update.php von Tiny Tiny RSS.

SESSIONNAME muss ein eindeutiger Name für die „screen“ Session sein. Der Name ist frei wählbar. Natürlich darf keine Session mit dem selben Namen existieren.

Installation

Vorab „screen“ installieren, falls das nicht schon passiert ist:

apt-get install screen

Das Script nun einfügen. „nano“ kann mit STRG+X geschlossen werden, es wird vorher gefragt, ob gespeichert werden soll (alternativ STRG+W vorab benutzen):

sudo nano /etc/init.d/ttrssd

Das Script ausführbar machen, als Dienst installieren und direkt starten:

sudo chmod +x /etc/init.d/ttrssd && update-rc.d ttrssd defaults && sudo /etc/init.d/ttrssd start

Daemon überprüfen

Ob der Daemon läuft, kann mit mehreren Methoden überprüft werden. Der einfachste Weg wäre der über TT-RSS selbst. Alternativen für die Shell:

su www-data -c "screen -ls"

oder

ps aux | grep -i [u]pdate.php