summaryrefslogtreecommitdiff
path: root/src/core/service.c
AgeCommit message (Collapse)Author
2012-08-08systemd: introduced new timeout typesMichal Sekletar
Makes possible to specify separate timeout for start and stop of the service. [ Improved the manpage. Coding style fix. -- michich ]
2012-07-23sd-daemon: remove unnecessary memset callsJim Meyering
There is no point in clearing the bits of a "struct stat" when the very next statement just calls stat or fstat to fill in that same memory. [zj: two more places]
2012-07-20units: apply default resource limits to socket/mount/swap processes tooLennart Poettering
2012-07-20core: drop KillMode parameter from KillUnit() bus callLennart Poettering
It made no sense, and since we are documenting the bus calls now and want to include them in our stability promise we really should get it cleaned up sooner, not later.
2012-07-20unit: split off KillContext from ExecContext containing only kill definitionsLennart Poettering
2012-07-18service: don't print a warning if we are in autorestart state, and can't ↵Lennart Poettering
start a unit just yet
2012-07-18service: make start jobs wait, not fail, when an automatic restart is queuedLennart Poettering
When an automatic restart is already queued, then make subsequent start jobs wait until the restart can be handled (i.e. after the holdhoff time), instead of simply fail.
2012-07-16unit: set default working directory to the user's home directory when ↵Lennart Poettering
running in user mode
2012-07-13unit: rename BindTo= to BindsTo=Lennart Poettering
all other dependencies are in 3rd person. Change BindTo= accordingly to BindsTo=. Of course, the dependency is widely used, hence we parse the old name too for compatibility.
2012-07-13util: rename join() to strjoin()Lennart Poettering
This is to match strappend() and the other string related functions.
2012-07-10unit: get rid of UnitVTable.suffix, which is now unusedLennart Poettering
2012-07-04service: flush the start counter in "systemctl reset-failed"Lennart Poettering
2012-06-26service: pass via FAILED/DEAD before going to AUTO_RESTARTMichal Schmidt
With misconfigured mysql, which uses Restart=always, the following two messages would loop indefinitely and the "systemctl start" would never finish: Job pending for unit, delaying automatic restart. mysqld.service holdoff time over, scheduling restart. In service_enter_dead() always set the state to SERVICE_FAILED/DEAD first before setting SERVICE_AUTO_RESTART. This is to allow running jobs to complete. OnFailure will be also triggered at this point, so there's no need to do it again from service_stop() (where it was added in commit f0c7b229). Note that OnFailure units should better trigger only after giving up auto-restarting, but that's for another patch to solve. https://bugzilla.redhat.com/show_bug.cgi?id=832039
2012-06-26service: fix incorrect argumentMichal Schmidt
The last argument to service_enter_dead() is bool allow_restart, not a service result.
2012-06-22core: remove sysv_console optionLennart Poettering
This option never made much sense. It was originally intended to make sure that the usual startup output of sysv scripts goes to the terminal. However, since SysV scripts started from a terminal would not output to that terminal, but rather /dev/console this effect was more often than not actually taking place. Nowadays systemd has much nicer boot time status output than SysV which makes the sysv output redundant. Finally, all output of services goes to the journal anyway, and is not lost. Hence, let's drop this option, and simplify things a bit.
2012-06-22journal: set the _SYSTEMD_UNIT field for messages from terminated processesEelco Dolstra
As described in https://bugs.freedesktop.org/show_bug.cgi?id=50184 the journal currently doesn't set fields such as _SYSTEMD_UNIT properly for messages coming from processes that have already terminated. This means among other things that "systemctl status" may not show some of the output of services that wrote messages just before they exited. This patch fixes this by having processes that log to the journal write their unit identifier to journald when the connection to /run/systemd/journal/stdout is opened. Journald stores the unit ID and uses it to fill in _SYSTEMD_UNIT when it cannot be obtained normally (i.e. from the cgroup). To prevent impersonating another unit, this information is only used when the caller is root. This doesn't fix the general problem of getting metadata about messages from terminated processes (which requires some kernel support), but it allows "systemctl status" and similar queries to do the Right Thing for units that log via stdout/stderr.
2012-06-15service: timeout for oneshot servicesLukas Nykryn
Add possibility to specify timeout for oneshot services. [ https://bugzilla.redhat.com/show_bug.cgi?id=761656 Added minor fixups. -- michich ]
2012-05-24service: for Type=idle units consider START_PRE, START, START_POST all as ACTIVELennart Poettering
We want to avoid a deadlock when a service has ExecStartPre= programs that wait for the job queue to run empty because of Type=idle, but which themselves keep the queue non-empty because START_PRE was considered ACTIVATING and hence the job not complete. With this patch we alter the state translation table so that it is impossible ever to wait for Type=idle unit, hence removing the deadlock.
2012-05-22units: remove service sysv_path variable and replace it by generic unit_pathLennart Poettering
UnitPath= is also writable via native units and may be used by generators to clarify from which file a unit is generated. This patch also hooks up the cryptsetup and fstab generators to set UnitPath= accordingly.
2012-05-22service: fix auto-restart handling in service_start()David Ward
Do not bypass the SERVICE_DEAD/SERVICE_FAILED state by manually issuing a start job while an automatic restart is pending.
2012-05-22service: fix auto-restart handling in service_stop()David Ward
When service_stop() handles a service in the SERVICE_AUTO_RESTART state, it calls service_set_state() to transition it to the SERVICE_DEAD state. However if the service failed, it should transition it to SERVICE_FAILED instead, which will trigger its OnFailure units. To achieve this, we now call service_enter_dead() in place of service_set_state(), which will transition the service to either SERVICE_DEAD or SERVICE_FAILED as is appropriate. Also, some misleading comments are adjusted: service_stop() is not only called on a user request, but also during an automatic restart in order to handle dependencies. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=45511
2012-05-22service: actually delay auto-restart if another job is pendingDavid Ward
https://bugs.freedesktop.org/show_bug.cgi?id=45511
2012-05-21main: allow system wide limits for servicesFrederic Crozat
2012-05-14unit: unit type dependent status messagesMichal Schmidt
Instead of generic "Starting..." and "Started" messages for all unit use type-dependent messages. For example, mounts will announce "Mounting..." and "Mounted". Add status messages to units of types that used to be entirely silent (automounts, sockets, targets, devices). For unit types whose jobs are instantaneous, report only the job completion, not the starting event. Socket units with non-instantaneous jobs are rare (Exec*= is not used often in socket units), so I chose not to print the starting messages for them either. This will hopefully give people better understanding of the boot.
2012-05-08util: split-out path-util.[ch]Kay Sievers
2012-05-03service: explicitly remove control/ subcgroup after each control commandLennart Poettering
The kernel will only notify us of cgroups running empty if no subcgroups exist anymore. Hence make sure we don't leave our own control/ subcgroup around longer than necessary. https://bugzilla.redhat.com/show_bug.cgi?id=818381
2012-05-03service: default to Type=dbus if BusName= is specifiedLennart Poettering
2012-05-03service: warn if a dbus name is specified but the service type is not dbusLennart Poettering
2012-04-24service: introduce Type=idle and use it for gettysLennart Poettering
Type=idle is much like Type=simple, however between the fork() and the exec() in the child we wait until PID 1 informs us that no jobs are left. This is mostly a cosmetic fix to make gettys appear only after all boot output is finished and complete. Note that this does not impact the normal job logic as we do not delay the completion of any jobs. We just delay the invocation of the actual binary, and only for services that otherwise would be of Type=simple.
2012-04-13service: place control command in subcgroup control/Lennart Poettering
Previously, we were brutally and onconditionally killing all processes in a service's cgroup before starting the service anew, in order to ensure that StartPre lines cannot be misused to spawn long-running processes. On logind-less systems this has the effect that restarting sshd necessarily calls all active ssh sessions, which is usually not desirable. With this patch control processes for a service are placed in a sub-cgroup called "control/". When starting a service anew we simply kill this cgroup, but not the main cgroup, in order to avoid killing any long-running non-control processes from previous runs. https://bugzilla.redhat.com/show_bug.cgi?id=805942
2012-04-12relicense to LGPLv2.1 (with exceptions)Lennart Poettering
We finally got the OK from all contributors with non-trivial commits to relicense systemd from GPL2+ to LGPL2.1+. Some udev bits continue to be GPL2+ for now, but we are looking into relicensing them too, to allow free copy/paste of all code within systemd. The bits that used to be MIT continue to be MIT. The big benefit of the relicensing is that closed source code may now link against libsystemd-login.so and friends.
2012-04-11move libsystemd_core.la sources into core/Kay Sievers