10

I’m using bash shell on Linux …

$ uname -a
Linux sandbox.mydomain.com 3.4.76-65.111.amzn1.x86_64 #1 SMP Tue Jan 14 21:06:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

although it would be nice if I could come up with a solution in any bash supported environment. My question is, in my script I want to scheduled a delayed reboot of my server in 5 seconds. So far, I have the below, but it takes 60 seconds …

# Timed reboot of server
sudo shutdown -r 1

# Fail if any of the sub-deployments failed.
if [[ ( $PROC1_STATUS -ne 0 ) ||
      ( $PROC2_STATUS -ne 0 ) ||
      ( $PROC3_STATUS -ne 0 ) ]]
then
        exit 1;
fi

Does anyone know how I can adjust the above except make the timed reboot in 5 seconds instead of a minute? The solution doesn't have to use "shutdown" but it was the only tool I could find.

  • Dave
Dave
  • 15,639
  • 133
  • 442
  • 830

1 Answers1

15

Try

 sleep 5 ; reboot

on your terminal (as root). If you want it in the background, try

 ( sleep 5 ; reboot ) & 

See also shutdown(8)

Basile Starynkevitch
  • 223,805
  • 18
  • 296
  • 547
  • Hi, This seems close but the statements after the "reboot" line don't seem to be getting executed because the system sleeps, the reboot happens and then execution stops. – Dave Mar 13 '14 at 21:13
  • 1
    Another variant: `nohup sudo -b bash -c 'sleep 5; reboot' &>/dev/null; ` – Niklas Holm May 24 '19 at 09:29