Skip to content
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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions SafeShutdown.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AGobron

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.

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."

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@madzarevic

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.

Copy link

@madzarevic madzarevic Dec 4, 2018

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.

os.system("sleep 5s && sudo shutdown -h now")
def when_released():
led.on()
def reboot():
os.system("sudo killall emulationstation && sleep 5s && sudo reboot")
os.system("sudo killall emulationstation")
os.system("sleep 5s && sudo reboot")

btn = Button(powerPin, hold_time=hold)
rebootBtn = Button(resetPin)
Expand Down