Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

It seems I can shutdown using sudo shutdown by specifying a time or minutes.

Is there a way to specify datetime for shutdown?

share|improve this question
up vote 50 down vote accepted

You can do this directly from the shutdown command, see man shutdown:

SYNOPSIS
   /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]

[...]

   time   When to shutdown.

So, for example:

shutdown -h 21:45

That will run shutdown -h at 21:45.


For commands that don't offer this functionality, you can try one of:

A. Using at

The at daemon is designed for precisely this. Depending on your OS, you may need to install it. On Debian based systems, this can be done with:

sudo apt-get install at

There are three ways of giving a command to at:

  1. Pipe it:

    $ echo "ls > a.txt" | at now + 1 min
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  2. Save the command you want to run in a text file, and then pass that file to at:

    $ echo "ls > a.txt" > cmd.txt
    $ at now + 1 min < cmd.txt
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  3. You can also pass at commands from STDIN:

    $ at now + 1 min
    warning: commands will be executed using /bin/sh
    at> ls
    

    Then, press CtrlD to exit the at shell. The ls command will be run in one minute.

You can give very precise times in the format of [[CC]YY]MMDDhhmm[.ss], as in

$ at -t 201403142134.12 < script.sh

This will run the script script.sh at 21:34 and 12 seconds on the 14th of March 2014.

B. Using cron (though this not a good idea for shutdown)

The other approach is using the cron scheduler which is designed to perform tasks at specific times. It is usually used for tasks that will be repeated but you can also give a specific time. Each user has their own "crontabs" which control what jobs are executed and when. The general format of a crontab is:

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

So, for example, this will run ls every day at 14:04:

04 14 * * * ls

To set up a cronjob for a specific date:

  1. Create a new crontab by running crontab -e. This will bring up a window of your favorite text editor.

  2. Add this line to the file that just opened. This particular example will run at 14:34 on the 15th of March 2014 if that day is a Friday (so, OK, it might run more than once):

    34 14 15 5  /path/to/command        
    
  3. Save the file and exit the editor.

This SO answer suggests a way to have it run only once but I have never used it so I can't vouch for it.

share|improve this answer
1  
Scheduling a shutdown with cron is a really bad habit. Suddenly you will wonder why the server is down every Monday morning. – Ouki Mar 20 '14 at 2:12
1  
@Ouki I-m sorry but I just don't see where I recommend using cron for shutdown. I mention in a parenthesis that it is possible (it is) but do not recommend it. We tend to like comprehensive answers here which is why I offered the other alternatives while never suggesting they should be used for shutdown. I feel for that bad experience though, that couldn't have been pleasant. – terdon Mar 20 '14 at 2:24
2  
This is more about suggestion, as you are mixing shutdown scheduling and cron in the same answer... Whether it is a workstation or a 1000 users mail server (my sad experience) is more about the consequences of a bad habit. – Ouki Mar 20 '14 at 2:39
2  
I'm with Ouki here. When discussing shutdown, one should not include cron. (esp. with someone who won't know why that's a horrible idea.) – Ricky Beam Mar 20 '14 at 2:57
1  
This is the linux/unix answer. It is unfortunate that the "install this gtk application" was chosen. – dfc Mar 20 '14 at 16:31

No you can't specify a date at the shutdown command but two alternatives exist:

The easiest is to use the at command:

echo "shutdown -r now" | at 10am Jul 31

but if you don't mind using you calculator and want to shutdown in say 24hours (24*60=1440):

shutdown -r +1440
share|improve this answer
    
The reason for my answer above: terdon's answer is correct and very comprehensive but too chatty (IMHO at least) – ndemou Dec 23 '14 at 11:18

It will shutdown your system at 12:00 :

$ sudo shutdown -h 12:00

Options:

-h, -P, --poweroff

Power-off the machine.

-r, --reboot

Reboot the machine.

-c

Cancel a pending shutdown.

share|improve this answer
1  
Your method not showing how to shutdown on a specific date... – oscar Mar 26 '14 at 1:21

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.