-
Notifications
You must be signed in to change notification settings - Fork 239
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix shutdown/reboot script #24
base: master
Are you sure you want to change the base?
Conversation
Hi, I noticed that the script will not shutdown/reboot the pi if emulationstation isn't running. Here's a change that fixed it for mine.
I had changed mine to check for emulationstation, and skip killing it if it didn't exist. However, your way uses less code and does the job perfectly. I completely agree with this. |
how can i change that i am new |
I'm pretty sure the "sleep 5s" is to allow the "killall emulationstation" time to finish. I did basically the same thing as you, but I kept the killall and sleep as part of the same system call, and the shutdown/restart in it's own system call. If the killall fails, you don't need to wait 5 seconds before shutting down. |
@@ -16,11 +16,13 @@ | |||
#functions that handle button events | |||
def when_pressed(): | |||
led.blink(.2,.2) | |||
os.system("sudo killall emulationstation && sleep 5s && sudo shutdown -h now") | |||
os.system("sudo killall emulationstation") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi,
If you use killall -w emulationstation
, killall
will wait for the process to finish, before continuing (blocking mode), you can then remove the 5 seconds sleep below this line.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like a bad idea. From the man page: "Note that killall may wait forever if the signal was ignored, had no effect, or if the process stays in zombie state."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Never had any issues with killall -w
, we use it extensively in DietPi.
If the process endless hangs killall -w
then we can assume the system is unstable and should be resolved correctly, or, emulationstation
has more in-depth issues.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Fourdee I've never had any issues with killall -w either, I'm just going by the documentation. The question is what would you want to happen if there is a problem. Maybe you might want the shutdown to abort to allow further investigation. I personally would rather the pi just continue to shutdown so I don't need to go find a keyboard or get an ssh session going just to get the pi to safely shutdown without pulling the power plug and risking corruption of the SD card. Presumably there is a good chance I can still investigate any issues at a later more convenient time if I really want to, which is made much easier if the filesystem is still intact.
If I'm pushing the power button on a computer I have an expectation that it will eventually shutdown. Sure, it should do whatever cleanup is possible in a reasonable amount of time, but if it's taking too long (e.g. forever), I expect it to just give up and shutdown anyway.
I noticed that the script will not shutdown/reboot the pi if emulationstation isn't running. Here's a change that fixed it for mine.