On 01/16/2019 10:44 PM, Christopher Cox wrote:
On 01/16/2019 12:51 PM, Filipe Brandenburger wrote:
If you want to run it early in the shutdown process, then keep
DefaultDependencies=yes, in which case it will run before the base
dependencies start to get stopped.
If you need some other resources to be up, for instance network, then add
After=network.target, etc.
Remember that when shutting down, the dependencies are stopped in the
opposite order as they're started up, so if you need your script to run
*before* something else is stopped, then you need an After= dependency.
But only for services under systemd. Everything else gets sprayed a TERM
signal. Which is frustrating. So... having it execute first doesn't
guarantee (and we're talking less than a second or so) that it will have time
to do what it needs to do before the kill spray happens, and I need all
processes to be around until my script finishes.
Old sysvinit didn't have this limitation.
Adding some extra systemd clarification. Saying do this After or Before other
service doesn't mean the start/stop completes before moving on. It may execute
asynchronously before/after, but processes aren't done synchronously.
You shouldn't add any ordering regarding reboot.target and shutdown.target.
Just enable your service (so that it looks up during normal system usage),
when the system goes down it will be stopped, and then depending on its
After= dependencies it will block those other services from being stopped
until you're done.
In recent systemd versions (I think starting from v238?) you can omit the
ExecStart=/bin/true line, an unit without that line starts to be valid in one
of those versions... Though keeping it around is fine and will work with
older versions too.
Has anyone tried to do something (I'm on CentOS latest) with maybe an extra
target (post default.target)... possible. I need something that "works".
I hope this helps!
Cheers,
Filipe
On Wed, Jan 16, 2019 at 10:47 AM Christopher Cox <ccox@xxxxxxxxxxxxxx
<mailto:ccox@xxxxxxxxxxxxxx>> wrote:
I need to be able to execute a script before anything gets shutdown. That
is,
when somebody does a "reboot", "shutdown" or "poweroff", I need this
script to
run first, and for it to finish before everything gets whacked.
I know the following isn't "right"... I've tried so many different things.
Google hasn't helped only giving me many "right" solutions that didn't
work. In
this current edition, basically I get a partial capture of processes that
are
running (that is some were killed directly or indirectly).. I need them
all. My
script needs to see the state of operation before
reboot/shutdown/poweroff do
anything else. My "save" saves some information about running processes
(some
not necessarily under systemd control).
[Unit]
Description=my-service save status
DefaultDependencies=no
Before=reboot.target shutdown.target
Conflicts=reboot.target shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecStop=/usr/local/bin/my-service.sh save
StandardOutput=journal
[Install]
WantedBy=multi-user.target
_______________________________________________
systemd-devel mailing list
systemd-devel@xxxxxxxxxxxxxxxxxxxxx
<mailto:systemd-devel@xxxxxxxxxxxxxxxxxxxxx>
https://lists.freedesktop.org/mailman/listinfo/systemd-devel
_______________________________________________
systemd-devel mailing list
systemd-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/systemd-devel