Měl bych dotaz zrovna k tomu mpd. Zjistil jsem, že po startu systému mi začne mpd naslouchat na 6600, ale už nevím, pod jakým uživatelem (snad dokonce root).
Nevím, jak mu to vymluvit, protože si startuji mpd pod svým uživatelem a klasické "autostart disable" skripty nezávisle od distribuce nefungují. Zatím se mi žádným způsobem nepovedlo ten autostart vypnout (třeba Ubuntu 16.04 nebo CentOS 7). Jaká magie na systemd platí v tomto případě?
Momentálně mi běží práve ten mpd pod non-root účtem, který jsem spustil ručně. "systemctl status mpd" hlásí "inactive".
Tipnul bych si, že to, co se spouští po startu systému a nevím, jak to vypnout, je v /usr/lib/systemd/system/mpd.socket:
[Socket] ListenStream=/run/mpd/socket ListenStream=6600 Backlog=5 KeepAlive=true PassCredentials=true [Install] WantedBy=sockets.target
Dokud totiž to "něco" poslouchá, odmítá se mpd pod non-root uživatelem spustit, protože port je obsazen (ale ani mpd klient se k tomu nepřipojí, což bych očekával, že tato magie má nějak zaručit autostart reálného daemona).
Výstup z systemctl status mpd po restartu:
● mpd.service - Music Player Daemon
Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-05-30 10:43:32 CEST; 13h ago
Main PID: 1175 (mpd)
CGroup: /system.slice/mpd.service
└─1175 /usr/bin/mpd --no-daemon
May 30 10:43:32 sylvan systemd[1]: Started Music Player Daemon.
May 30 10:44:13 sylvan pulseaudio[2656]: [pulseaudio] server-lookup.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
May 30 10:44:13 sylvan pulseaudio[2656]: [pulseaudio] main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
May 30 10:44:13 sylvan pulseaudio[2656]: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 2 matched rules; type="method_call", sender=":1.91"
Výstup z systemctl status mpd.socket:
● mpd.socket
Loaded: loaded (/lib/systemd/system/mpd.socket; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-05-30 10:43:32 CEST; 13h ago
Listen: /run/mpd/socket (Stream)
[::]:6600 (Stream)
May 30 10:43:32 sylvan systemd[1]: Listening on mpd.socket.
BTW takhle vypadá mpd.service soubor:
[Unit] Description=Music Player Daemon After=network.target sound.target [Service] EnvironmentFile=/etc/default/mpd ExecStart=/usr/bin/mpd --no-daemon $MPDCONF # allow MPD to use real-time priority 50 LimitRTPRIO=50 LimitRTTIME=infinity # disallow writing to /usr, /bin, /sbin, ... ProtectSystem=yes [Install] WantedBy=multi-user.target Also=mpd.socket
(Sorry za ty zbalený výpisy z code tagů, takhle to dělá root.)
Pokud chci pustit po tomto mpd jako uživatel, musím dát "service mpd stop" jako root ("systemctl stop mpd" nestačí) a pustit "mpd" pod uživatelským non-root účtem.
Se "systemctl stop mpd" ukazuje netstat, že pak na portu 6600 poslouchá init process.