Thanks to Ubuntu maintainers for hacking some of this, http://launchpad.net/ubuntu/+archive/primary/+files/systemd_204-0ubuntu1.debian.tar.gz --- src/login/logind.c +++ src/login/logind.c @@ -1371,9 +1371,15 @@ Seat *seat; Session *session; User *user; + Iterator i; assert(m); + /* clean up empty sessions when not running under systemd */ + HASHMAP_FOREACH(session, m->session_cgroups, i) + if (session_get_state(session) == SESSION_CLOSING) + session_add_to_gc_queue(session); + while ((seat = m->seat_gc_queue)) { LIST_REMOVE(Seat, gc_queue, m->seat_gc_queue, seat); seat->in_gc_queue = false; --- src/login/logind-session.c +++ src/login/logind-session.c @@ -642,7 +642,7 @@ r = manager_get_session_by_pid(s->manager, s->leader, &t); if (r > 0 && t == s) { - kill(s->leader, SIGTERM); /* for normal processes */ + /*kill(s->leader, SIGTERM); */ /* for normal processes */ kill(s->leader, SIGHUP); /* for shells */ kill(s->leader, SIGCONT); /* in case they are stopped */ } --- src/login/org.freedesktop.login1.service +++ src/login/org.freedesktop.login1.service @@ -7,6 +7,6 @@ [D-BUS Service] Name=org.freedesktop.login1 -Exec=/bin/false +Exec=/lib/systemd/systemd-logind User=root SystemdService=dbus-org.freedesktop.login1.service