Skip to content

Tiny Tiny RSS update daemon und systemd ...

Um den update daemon von Tiny Tiny RSS unter systemd (CentOS 7) auch bei einem Serverneustart direkt verfügbar zu haben, habe ich das unten stehende Unitfile geschrieben, vielleicht hilft es auch Euch.

Man kann von systemd halten, was man möchte, ich finde es aber deutlich eleganter als System V Initskripte.

[Unit]
Description=Tiny Tiny RSS update daemon
After=network.target mariadb.service
Requires=mariadb.service

[Service]
User=apache
Group=apache
WorkingDirectory=/⁠var/⁠www/⁠html/⁠ttr
Type=simple
StandardOutput=null
StandardError=syslog
ExecStart=/⁠usr/⁠bin/⁠php ./⁠update_daemon2.php
PrivateTmp=true
InaccessibleDirectories=/⁠home /⁠root /⁠boot /⁠opt /⁠mnt /⁠media
ReadOnlyDirectories=/⁠etc /⁠usr

[Install]
WantedBy=multi-⁠user.target


Einfach nach /lib/systemd/system/ttrss-update.service kopieren und mittels systemctl daemon-reload einlesen (den Befehl muss man auch ausführen, wenn man das Skript manuell ändert).

Testen mit
systemctl start ttrss-update
systemctl status ttrss-update


und, wenn alles erfolgreich war mit dem folgenden Befehl aktivieren:
systemctl enable ttrss-update

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Trolli Schmittlauch am :

*Selbst geschriebene oder veeänderte service files gehören nach Konvention eigentlich nach /etc/systemd/system/. /lib/systemd/ ist der Ablageort für die mit den Paketen ausgelieferten Dateien.

Dirk Deimeke am :

*Vielen Dank für den Tipp.

Hast einen Link, wo die Konventionen beschrieben sind?

Florian Bruhin am :

*In der systemd.unit(5)-manpage ist /etc/systemd/system als "Local configuration" und /usr/lib/systemd/system als "Units of installed packages" aufgeführt.

Aber auch sonst ist das eine gängige Konvention, vermutlich auch im FHS ähnlich erwähnt.

Christian M. Grube am :

*Aus google+

ps:
/etc/systemd/system/multi-user.target.wants/
ist das richtige Verzeichnis
Wobei jenes auch wieder auf /usr/lib/systemd/system/ verweist., per Links.
Ausgehend davon, setze das Script in
/etc/systemd/system/multi-user.target.wants/
alle anderen sind vom System selbst ausgehend und werden bei einem Update gekillt, gehe ich mal von aus ;-)

Fehler:
Apr 09 10:36:50  systemd[1]: Started Tiny Tiny RSS update daemon.
Apr 09 10:36:50  systemd[3395]: Failed at step NAMESPACE spawning /⁠usr/⁠bin/⁠php: Operation not permitted
Apr 09 10:36:50 systemd[1]: ttrss-update.service: main process exited, code=exited, status=226/NAMESPACE
Apr 09 10:36:50 systemd[1]: Unit ttrss-update.service entered failed state.

PrivateTmp=true
entfernen, dann sollte es gehen

Grüsse

Dirk Deimeke am :

*Danke Christian!

Ich habe bei mir SELinux auf Permissive stehen und wollte das mal "die Tage" aufräumen, deswegen ist das bei mir nicht aufgepoppt.

Florian Bruhin am :

*Du hast da glaub ich die code-tags vergessen - das File sieht im Blogpost ziemlich vermurkst aus (Leerzeichen nach Schrägstrichen und so) ;-)

So zum Vergleich: Das, was mit dem Archlinux-Package mitkommt, sieht so aus:

CODE:
[Unit]
Description=Tiny Tiny RSS feeds update daemon
After=network.target mysqld.service postgresql.service

[Service]
ExecStart=/usr/bin/php /usr/share/webapps/tt-rss/update.php --daemon
User=http
StandardOutput=null
StandardError=syslog

[Install]
WantedBy=multi-user.target


Ich glaube, ich muss mir InaccessibleDirectories und ReadOnlyDirectories mal genauer angucken!

Dirk Deimeke am :

*Florian, Kannst Du mir ein Beispiel geben?

Ich finde keinen Fehler in der Darstellung.

Quirin am :

*Ein zusätzliches:

*ExecStop=/bin/kill -15 $MAINPID*

stoppt den Service auch wieder.

Dirk Deimeke am :

*Das ist ein guter Punkt.

Das macht systemd implizit, aber es anzugeben, ist in jedem Fall sinnvoll.

Kommentar schreiben

Gravatar, Favatar, Pavatar, Identica, Twitter, MyBlogLog Autoren-Bilder werden unterstützt.
BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
:'(  :-)  :-|  :-O  :-(  8-)  :-D  :-P  ;-) 
Formular-Optionen