Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.
Quoted
[root@htpc system]# cat /etc/systemd/system/vdr.service
[Unit]
Description=Video Disk Recorder
After=lircd.service
[Service]
ExecStart=/usr/local/src/VDR/vdr --lirc=/run/lirc/lircd -s /usr/local/bin/vdr-shutdown.sh -v /var/lib/vdr/video -w 90 -Plive -Pstreamdev-server -P 'epgsearch --config=/etc/vdr/plugins/epgsearch' -P 'xineliboutput --local=none --remote=37890'
ExecStartPost=/usr/local/bin/svdrpsend.pl remo off
Restart=on-failure
[Install]
WantedBy=multi-user.target
Quoted
[root@htpc system]# systemctl --system daemon-reload && systemctl start vdr.service
Anmerkungen:
Quoted
[root@htpc system]# systemctl status vdr.service
vdr.service - Video Disk Recorder
Loaded: loaded (/etc/systemd/system/vdr.service)
Active: active (running) since Wed, 29 Jun 2011 18:22:26 +0200; 29s ago
Process: 1434 ExecStartPost=/usr/local/bin/svdrpsend.pl remo off (code=exited, status=0/SUCCESS)
Main PID: 1433 (vdr)
CGroup: name=systemd:/system/vdr.service
└ 1433 /usr/local/src/VDR/vdr --lirc=/run/lirc/lircd -s /usr/local/bin/vdr-shutdown.sh -v /var/lib/vdr/video -w 90 -Plive -Pstreamdev-server -P epgsearch --config=/etc/vdr/plugins/epgsearch -P xineliboutput --local=none --remote=37890
This post has been edited 1 times, last edit by "loswillios" (Jun 29th 2011, 7:25pm)
ich boykottiere so eine mist wie systemd
full ack!
Quoted
Es steht dir natürlich frei, systemd zu boykottieren, aber warum
enthälst du dich dann nicht einfach? Hier schreiben Leute, die sich für
systemd interessieren, außerdem wird es mittlerweile von Suse, Fedora
und ein paar anderen Distributionen benutzt.
Dementsprechend lohnt es sich durchaus, sich damit auseinander zu setzen.
Und wenn es Mist wäre, würden die großen Distris es nicht benutzen.
finde den ansatz aber ziemlich genial.
warum ich mich nicht enthalte ....... ganz einfach
man sollte seine energie in dinge investieren die zukunft haben und nicht in einem daemon der jetzt schon wieder bei den entwicklern in frage steht ......
man sollte seine energie in dinge investieren die zukunft haben und nicht in einem daemon der jetzt schon wieder bei den entwicklern in frage steht ......
Damit startest du nur das bash-script, also im Prinzip nichts anderes als im klassischen System V auch. Die Vorteile von systemd wie z.B. job-control und restart-on-fail erhältst du damit nicht. Ich denke das interessante daran ist ja, dass man (oder ich zumindest) auf das Shellscript verzichten kann und stattdessen ein natives .service File hat - welches den Daemon mittels Abhängigkeiten, frischen Umgebungsvariablen, ExecStartPre/ExecStartPost, etc sauber aufsetzen und kontrollieren kann.Meine vdr.service in /etc/systemd/system für openSuSE12.1 sieht so aus:
![]()
Source code
1 2 3 4 5 6 7 8 9 10 11 [Unit] Descritpion=VDR After=lirc.service [Service] Type=once ExecStart=/usr/local/bin/runvdr TimeoutSec=0 [Install] WantedBy=multi-user.target
Sobald du mittels Skripten deine Kommandozeilenparameter zusammenflickst wird das ganze doch sehr anfällig? Das ist leider der Nachteil am VDR, sehr viel wird über Parameter gelöst.Wenn man von unseren upstart Erfahrungen ausgeht - sollte vdr und das frontend definitiv 2 seperate Dienste sein. - Aber sicher Geschmackssache - so wie mir scheint sind das ja eher vdr.service files für die ganz persönliche Installation. Ein Großteil der Logik aus unserem upstart Job dürfte dementsprechend in der runvdr liegen.
Hier heißt der Dienst lircd, also lircd.service. Netzwerk, Sound, etc werden von anderen .service Dateien zur Verfügung gestellt, z.B. NetworkManager.service, alsa-[store,restore].serviceWas mir auffällt: Heißt der Dienst lirc oder lircd ? Gibt es einen eine Abstraktion für "das was /var/run/lirc/lircd oder /run/lirc/lircd zur Verfügung stellt" ? Was ist mit Netzwerk, alsa etc pp ?
Sobald du mittels Skripten deine Kommandozeilenparameter zusammenflickst wird das ganze doch sehr anfällig?
Ich denke das interessante daran ist ja, dass man (oder ich zumindest) auf das Shellscript verzichten kann und stattdessen ein natives .service File hat
Im Zweifel verbringt er dann die zwei Wochen Urlaub mit nem Dauerneustart 
Nein, mit systemd und einer .service Datei hat man kein Shellscript mehr.Ein Shellscript hat man immer, ob nun /usr/local/bin/runvdr oder /etc/inti.d/vdr.
Das war bei mir noch nie nötig. Was prüfst du denn ab?Und für nen praxistauglichen Betrieb braucht der VDR ne Menge Sanity Checks, mit nem einfachen Starten des VDR mit psssenden Parametern ist es nicht getan.
Die Exitcodes werden von systemd abgefangen und behandelt. Und falls man einen längeren Timeout benötigt kann man den Parameter "RestartSec=" einsetzen, siehe http://0pointer.de/public/systemd-man/systemd.service.htmlZumindest muss man den Exit Code prüfen und entsprechend handeln, ferner brauchts nen harten Kill nach nem (längeren) Timeout. Ohne das kann man den VDR IMHO nicht alleine lassen.
Das kann dir mit einem Shellscript ebenso passieren. Und der Dauerneustart wird AFAIK von systemd abgefangen und der service dann in den Zustand "failed" versetzt.Also mit der Variante aus dem ersten Post würde ich den VDR nicht alleine lassen wollen Im Zweifel verbringt er dann die zwei Wochen Urlaub mit nem Dauerneustart
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 |
Coruscant:/etc/systemd/system # more vdr.service [Unit] Description=Video Disk Recorder [Service] Type=oneshot ExecStart=/usr/local/bin/runvdr TimeoutSec=10 [Install] WantedBy=multi-user.target |
|
|
Source code |
1 2 3 4 5 6 |
Coruscant:/etc/systemd/system # systemctl status vdr.service
vdr.service - Video Disk Recorder
Loaded: loaded (/etc/systemd/system/vdr.service; disabled)
Active: failed since Mon, 14 May 2012 18:42:23 +0200; 35s ago
Process: 8748 ExecStart=/usr/local/bin/runvdr (code=exited, status=1/FAILURE)
CGroup: name=systemd:/system/vdr.service
|
|
|
Source code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
May 14 18:42:22 Coruscant systemd[1]: Reloading. May 14 18:42:23 Coruscant vdr: [8764] VDR version 1.7.27 started May 14 18:42:23 Coruscant vdr: [8764] switched to user 'root' May 14 18:42:23 Coruscant vdr: [8764] running as daemon (tid=8764) May 14 18:42:23 Coruscant vdr: [8764] codeset is 'ISO-8859-1' - known May 14 18:42:23 Coruscant vdr: [8764] found 28 locales in /usr/src/vdr/locale May 14 18:42:23 Coruscant vdr: [8764] loading plugin: /etc/vdr/plugins/libvdr-softhddevice.so.1.7.27 May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/setup.conf May 14 18:42:23 Coruscant vdr: [8764] ERROR: unknown config parameter: PrimaryLimit = 0 May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/sources.conf May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/diseqc.conf May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/channels.conf May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/timers.conf May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/commands.conf May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/reccmds.conf May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/svdrphosts.conf May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/remote.conf May 14 18:42:23 Coruscant vdr: [8764] loading /etc/vdr/keymacros.conf May 14 18:42:23 Coruscant vdr: [8773] video directory scanner thread started (pid=8764, tid=8773) May 14 18:42:23 Coruscant vdr: [8774] video directory scanner thread started (pid=8764, tid=8774) May 14 18:42:23 Coruscant vdr: [8764] registered source parameters for 'A - ATSC' May 14 18:42:23 Coruscant vdr: [8764] registered source parameters for 'C - DVB-C' May 14 18:42:23 Coruscant vdr: [8764] registered source parameters for 'S - DVB-S' May 14 18:42:23 Coruscant vdr: [8764] registered source parameters for 'T - DVB-T' May 14 18:42:23 Coruscant vdr: [8775] epg data reader thread started (pid=8764, tid=8775) May 14 18:42:23 Coruscant vdr: [8764] probing /dev/dvb/adapter0/frontend0 May 14 18:42:23 Coruscant vdr: [8775] reading EPG data from /tmp/epg.data May 14 18:42:23 Coruscant vdr: [8764] creating cDvbDevice May 14 18:42:23 Coruscant vdr: [8764] new device number 1 May 14 18:42:23 Coruscant systemd[1]: vdr.service: main process exited, code=exited, status=1 May 14 18:42:23 Coruscant systemd[1]: Unit vdr.service entered failed state. |


This post has been edited 2 times, last edit by "obarden" (May 15th 2012, 10:25am)