How can a systemd service detect that system is going to power off?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
4
down vote

favorite












I have a systemd service controlling some hardware, let's take lamps as a good example. It is OK to restart the service, or reboot the PC, because it is safe that the lamps are left switched on for some while.



However if (and only if) the system is going to halt (power off), I want to do not only the regular cleanup, but also to switch the lights off, i.e. to stop the service in a sligthly different way.



In all mentioned cases (service restart, reboot, halt) the ExecStop command is executed the same way. How can I distinguish between these cases or otherwise know if systemd is doing poweroff or not?







share|improve this question


















  • 2




    The target will differ.
    – Ignacio Vazquez-Abrams
    Oct 29 '17 at 15:44










  • @IgnacioVazquez-Abrams Yes, but I don't know a way to the get the current target: serverfault.com/a/835648
    – VPfB
    Oct 29 '17 at 15:58






  • 1




    Hint: Write a second service file.
    – Ignacio Vazquez-Abrams
    Oct 29 '17 at 15:59














up vote
4
down vote

favorite












I have a systemd service controlling some hardware, let's take lamps as a good example. It is OK to restart the service, or reboot the PC, because it is safe that the lamps are left switched on for some while.



However if (and only if) the system is going to halt (power off), I want to do not only the regular cleanup, but also to switch the lights off, i.e. to stop the service in a sligthly different way.



In all mentioned cases (service restart, reboot, halt) the ExecStop command is executed the same way. How can I distinguish between these cases or otherwise know if systemd is doing poweroff or not?







share|improve this question


















  • 2




    The target will differ.
    – Ignacio Vazquez-Abrams
    Oct 29 '17 at 15:44










  • @IgnacioVazquez-Abrams Yes, but I don't know a way to the get the current target: serverfault.com/a/835648
    – VPfB
    Oct 29 '17 at 15:58






  • 1




    Hint: Write a second service file.
    – Ignacio Vazquez-Abrams
    Oct 29 '17 at 15:59












up vote
4
down vote

favorite









up vote
4
down vote

favorite











I have a systemd service controlling some hardware, let's take lamps as a good example. It is OK to restart the service, or reboot the PC, because it is safe that the lamps are left switched on for some while.



However if (and only if) the system is going to halt (power off), I want to do not only the regular cleanup, but also to switch the lights off, i.e. to stop the service in a sligthly different way.



In all mentioned cases (service restart, reboot, halt) the ExecStop command is executed the same way. How can I distinguish between these cases or otherwise know if systemd is doing poweroff or not?







share|improve this question














I have a systemd service controlling some hardware, let's take lamps as a good example. It is OK to restart the service, or reboot the PC, because it is safe that the lamps are left switched on for some while.



However if (and only if) the system is going to halt (power off), I want to do not only the regular cleanup, but also to switch the lights off, i.e. to stop the service in a sligthly different way.



In all mentioned cases (service restart, reboot, halt) the ExecStop command is executed the same way. How can I distinguish between these cases or otherwise know if systemd is doing poweroff or not?









share|improve this question













share|improve this question




share|improve this question








edited Oct 29 '17 at 16:40

























asked Oct 29 '17 at 15:39









VPfB

40528




40528







  • 2




    The target will differ.
    – Ignacio Vazquez-Abrams
    Oct 29 '17 at 15:44










  • @IgnacioVazquez-Abrams Yes, but I don't know a way to the get the current target: serverfault.com/a/835648
    – VPfB
    Oct 29 '17 at 15:58






  • 1




    Hint: Write a second service file.
    – Ignacio Vazquez-Abrams
    Oct 29 '17 at 15:59












  • 2




    The target will differ.
    – Ignacio Vazquez-Abrams
    Oct 29 '17 at 15:44










  • @IgnacioVazquez-Abrams Yes, but I don't know a way to the get the current target: serverfault.com/a/835648
    – VPfB
    Oct 29 '17 at 15:58






  • 1




    Hint: Write a second service file.
    – Ignacio Vazquez-Abrams
    Oct 29 '17 at 15:59







2




2




The target will differ.
– Ignacio Vazquez-Abrams
Oct 29 '17 at 15:44




The target will differ.
– Ignacio Vazquez-Abrams
Oct 29 '17 at 15:44












@IgnacioVazquez-Abrams Yes, but I don't know a way to the get the current target: serverfault.com/a/835648
– VPfB
Oct 29 '17 at 15:58




@IgnacioVazquez-Abrams Yes, but I don't know a way to the get the current target: serverfault.com/a/835648
– VPfB
Oct 29 '17 at 15:58




1




1




Hint: Write a second service file.
– Ignacio Vazquez-Abrams
Oct 29 '17 at 15:59




Hint: Write a second service file.
– Ignacio Vazquez-Abrams
Oct 29 '17 at 15:59















active

oldest

votes











Your Answer







StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: false,
noModals: false,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f401240%2fhow-can-a-systemd-service-detect-that-system-is-going-to-power-off%23new-answer', 'question_page');

);

Post as a guest



































active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes















 

draft saved


draft discarded















































 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f401240%2fhow-can-a-systemd-service-detect-that-system-is-going-to-power-off%23new-answer', 'question_page');

);

Post as a guest













































































Popular posts from this blog

How to check contact read email or not when send email to Individual?

Displaying single band from multi-band raster using QGIS

How many registers does an x86_64 CPU actually have?