mirror of
https://github.com/troglobit/finit.git
synced 2026-10-28 12:30:44 +00:00
Fix #109: Support PID files in subdirectories to /var/run
Services, like dbus and teamd for instance, may create their PID files in a subdirectory of /var/run (today often /run). E.g., - /var/run/teamd/a1.pid -- For aggregate A1 - /var/run/dbus/pid - /var/run/lxc/foo.pid -- For container foo This patch adds support for dynamically adding inotify watchers to any new subdirectory created in /var/run (discarding too deep directories). To match services in this directory the run/task/service/sysv stanza must contain the pid:!/path/to/pidfile.pid syntax. This pid file name is also used to create the condition this service asserts using the following formula: svc/ + <dirname of service> + <subdir and file without .pid> E.g., the case of teamd (above) gives condition 'svc/usr/bin/teamd/a1' The special case of dbus is interesting, since it may not be a special case, but rather the norm for services using a subdirectory. It is handled as follows; when a new subdirectory is detected, the directory is scanned for files matching *.pid. Matching files follow the teamd case. The directory is also scanned for 'pid', which then gives us the condition 'svc/usr/bin/dbus' One last example, illustrated by lxc-start, where we want to track the condition for the LXC container foo. The service stanza: service pid:!/run/lxc/foo.pid lxc-start -n foo -F -p /run/lxc/foo.pid -- Container foo This command has no leading path so the condition is composed entirely from the PID file location: svc/ + '' + lxc/foo => svc/lxc/foo Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
1 parent
97ce0aa519
commit
54cfa74042
6 files changed
+275
-54
No files matched your search
+1
-1
@@ -1353,7 +1353,7 @@ restart:
|
||||
if (!svc_is_changed(svc)) {
|
||||
char name[MAX_COND_LEN];
|
||||
|
||||
mkcond(name, sizeof(name), svc->cmd);
|
||||
mkcond(svc, name, sizeof(name));
|
||||
cond_set_path(cond_path(name), COND_ON);
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in new issue
Block a user