Skip to main content


Daemon ausgefallen


Und ich wundere mich schon, warum ich seit 2 Tagen so gut wie keine Reaktionen auf meine Antworten krieg...

ich hab bei meiner #Friendica Instanz nicht einen Cronjob, der die Worker startet, sondern ich habs mit dem worker-daemon gelöst. Das funktioniert ansich sehr zufriedenstellend.

Aber aus irgend einem Grund stürzt mir der Daemon immer wieder einmal ab und wird nicht mehr restartet, trotz
Restart=always
in der systemd-unit.

Ich hab es jetzt um RestartSec=10s ergänzt und lass mir außerdem, wenn er wirklich dann failed, der job, ein Email schicken.

Ich beobachte einmal.

!Friendica Support

Vielleicht kann der @utzer helfen. Er setzt auch den Daemon mit systemd ein.
@Michael Vogel @Jakob ich muss das mal ins Wiki schreiben oder so. Ich kann später gucken, aber es funktioniert super und zuverlässig und ohne cron.
@Jakob also ich hab folgendes eingestellt, müsste größtenteils von @utzer stammen
[Unit]
Description=Friendica worker daemon
After=network.target
After=mariadb.service

[Service]
Type=forking
User=USER
Group=USER
ExecStart=/var/customers/webs/USER/rollenspiel.group/bin/daemon.php start
ExecStop=/var/customers/webs/USER/rollenspiel.group/bin/daemon.php stop
TimeoutSec=60
Restart=always
RestartSec=60
PIDFile=/var/customers/tmp/USER/rollenspiel.group/friendica-daemon.pid

[Install]
WantedBy=multi-user.target

@Tealk @utzer Danke!!

Bis auf das TimeoutSec qusi gleich zu meiner.
Ich hab RestartSec auf 10s gestellt.

Bei dem Daemon ist es ja egal, ob dieser mal für ein, zwei Minuten ausfällt... Tagelang ists halt blöd.

Aber ich hab meine vorhin angepasst, und sie schaut jetzt aktuell so aus:

# /etc/systemd/system/friendicaworkerdaemon.service
[Unit]
Description=Friendica Worker Daemon
After=network.target mysqld.service
Requires=network.target remote-fs.target nss-lookup.target
OnFailure=failed-email@%n.service

[Service]
Type=forking
Restart=always
User=www-data
Group=www-data
WorkingDirectory=/var/www/soc.schuerz.at/
ExecStart=/usr/bin/php bin/daemon.php start
ExecStop=/usr/bin/php bin/daemon.php stop
StandardOutput=null
StandardError=syslog
PIDFile=friendica/daemon.pid
PrivateTmp=true
InaccessibleDirectories=/home /root /boot /opt /mnt /media
ReadOnlyDirectories=/etc /usr
Restart=always
RestartSec=10s
StartLimitIntervalSec=1m
StartLimitBurst=6

[Install]
WantedBy=multi-user.target
@Jakob Ich mache das alternativ mit einem Shell-Script:
#!/bin/sh

STATUS=$(./bin/daemon.php status | grep "Is the daemon running")

if [ -n "${STATUS}" ]
then
    echo "$0: Daemon was not running, starting it now."
    ./bin/daemon.php start 2>&1 || exit 255
    echo "$0: Re-nicing ..."
    renice 19 $(pidof php) 2>/dev/null
    echo "$0: All done."
fi

Das renice ist dafuer da, dass der Daemon nicht die Webseite beeintraechtigt.
@Jakob working for a few years now:
[Unit]
Description=Friendica worker daemon
After=network.target
#After=httpd.service
After=mariadb.service

[Service]
User=http_server_user
Type=forking
ExecStart=/path/to/friendica/daemon.php start
ExecStop=/path/to/friendica/daemon.php stop
TimeoutSec=60
Restart=always
RestartSec=60
#StartLimitInterval=350
#StartLimitBurst=10
PIDFile=/tmp/friendica_daemon.pid

[Install]
WantedBy=multi-user.target