<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jun 26, 2015 at 4:15 PM, Lesley Kimmel <span dir="ltr"><<a href="mailto:ljkimmel99@hotmail.com" target="_blank">ljkimmel99@hotmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div dir="ltr">Hi all;<br><br>I've been working with RHEL5/6 for the past several years and have developed many init scripts/services which generally use lock files and PID files to allow for tracking of the service status. We are moving to RHEL7 (systemd) in the near future and I am looking for instruction or tutorials on how to effectively migrate these scripts to work with systemd. <br><br>I found <a href="https://wiki.archlinux.org/index.php/Systemd#Service_types" target="_blank">https://wiki.archlinux.org/index.php/Systemd#Service_types</a> which seems somewhat promising but it is fairly high-level. It looks like I may be able to use the 'forking' type with the 'pidfile' parameter to somewhat mimic what the scripts to today. However, I have a couple of questions:<br></div></div></blockquote><div><br></div><div>Usually systemd detects the main process even without PIDFile, using cgroups to keep track.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div dir="ltr">-How does systemd track whether it should be stopping a service at shutdown (analogous to the /var/lock/subsys files in SysVInit)?<br></div></div></blockquote><div><br></div><div>All service control requests<i> </i>go through the always-running init process, so it can just keep track of service status internally without having to write it out.</div><div><br></div><div>[This also means services run in a clean environment and can't ask for interactive input when starting. Upstart and even /etc/inittab also work the same way.]</div><div><br></div><div>Systemd also monitors whether the service processes are actually running – by putting each into a separate cgroup – so it generally avoids issues such as stale pidfiles.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div dir="ltr">-Are there merits to using the notify or dbus types? If so does anyone know of a tutorial I could use to get to that point? (FYI, I'm not a developer but I learn complicated things quickly).<br></div></div></blockquote><div><br></div><div>Similar to Type=forking, they both let systemd know whether the service is ready or still initializing (which can't be done with the default Type=simple).</div><div><br></div><div>Type=dbus might be best for creating DBus-activatable services compatible with regular dbus-daemon, since it has mostly the same expectations as dbus-daemon: the service doesn't fork, and is considered ready as soon as it finally claims the configured BusName.</div><div><br></div><div>Type=notify is somewhat more lightweight – the service just needs to send READY=1 over a Unix socket. (The service can also show some additional information in `systemctl status` – e.g. lldpd could send "STATUS=No neighbors"). libsystemd has <a href="http://www.freedesktop.org/software/systemd/man/sd_notify.html">sd_notify(3)</a> for this, though it could be done using regular socket API.</div><div><br></div><div>I suppose the same notify socket could be exposed to all other service types. I don't know why it isn't yet.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div dir="ltr">-If the current service logs to a custom, dedicated log is there a way to get systemd to provide the same type of output that it does for the built-in system services or must I make some modifications to integrate with journald?<br></div></div></blockquote><div><br></div><div>`systemctl status` only reads from the journal.</div><div><br></div><div>The journal, however, also receives messages sent using the traditional syslog API or written to the kernel log – in addition to its native <a href="http://www.freedesktop.org/software/systemd/man/sd_journal_send.html">sd_journal_send(3)</a> – so that already covers most services.</div><div><br></div><div>You could also use rsyslogd to feed messages from custom text logs into the journal, using its omjournal module.</div></div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Mantas Mikulėnas <<a href="mailto:grawity@gmail.com" target="_blank">grawity@gmail.com</a>></div></div>
</div></div>