Dave Sherohman:
The mention of freedesktop in one of the messages suggests that this
may be somehow X/GUI related,
No, it does not. That is not the only place where one finds such
names. Or, rather, the mechanism that uses such names is not only used
for graphical user interfaces.
It is, of course, D-Bus. The |systemd-logind| dæmon is communicating
with the |systemd| dæmon, in order to start a service, via its D-Bus
interface <https://freedesktop.org/wiki/Software/systemd/dbus/>. And
the |org.freedesktop.systemd1.TransactionIsDestructive| error code is
what the |systemd| dæmon is communicating back. You are witnessing the
undocumented interface between |systemd-logind| and |systemd|.
The problem that it indicates is that when |systemd| is trying to start
the service, which is actually a so-called /scope/ named
|session-11179.scope|, it has encountered a contradiction. As the user
manual explains, when systemd comes to start a service, it breaks it
down into a collection of /jobs/, which are individual actions to take
in order to achieve the overall goal
<https://unix.stackexchange.com/a/310775/5132>. What has happened here
is that the set of jobs necessary to start |session-11179.scope| is
self-contradictory, or contradicts existing jobs running at the time.
It involves both starting/checking/restarting/reloading something and
stopping it, simultaneously.
The people who hit this at shutdown have systems with a similar
configuration problem to yours. On yours and theirs, there's some
configured contradiction, a unit that both is wanted by and conflicts
with another unit; somewhere. That might be down a long chain connected
from the unit that you think that you are dealing with. Or there's a
contradiction with something else executing concurrently within |systemd|.
The scope unit is not something that you can do without; if you are
doing things within login sessions, that is. As you note, the failure
to start it stops |su| from working. Scope units are used by
|systemd-logind| to create /user-mode//login sessions/
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=825394#221>. It
arranges, in conjunction with PAM extension modules, that all of the
processes inside such a login session run within such a scope. It uses
the scope to place resource usage constraints upon the login session,
such as a maximum number of processes.
Unfortunately, you have a hard task ahead. You can run things like
|systemctl list-jobs|, but it is a good bet that what you are seeing is
timing-dependent because it is a contradiction between two concurrent
things. You will likely find that you have to run |systemctl list-jobs|
at just the right time, too.
That said, it does sound like, from the scant description given, you are
mis-using |su|. Do not abuse |su| to drop privileges
<http://jdebp.eu./FGA/dont-abuse-su-for-dropping-privileges.html>, from
|root| to |nobody|. There are proper tools for the job of dropping
privileges, which do not involve PAM and which will thus not hit this
problem. Moreover: do not abuse |nobody| for running dæmons
<http://jdebp.eu./FGA/dont-abuse-nobody-for-daemons.html>, if you are
doing that. Set up a proper rôle account. And, indeed, give the cron
job (whatever it is) directly to that rôle account's |crontab|.