Suggest cron-daemon as an alternative to cron
[fake-hwclock.git] / fake-hwclock
1 #!/bin/sh
2 #
3 # Trivial script to load/save current contents of the kernel clock
4 # from/to a file. Helpful as a *bootstrap* clock on machines where
5 # there isn't a useful RTC driver (e.g. on development boards). Using
6 # NTP is still recommended on these machines to get to real time sync
7 # once more of the system is up and running.
8 #
9 # Copyright 2012 Steve McIntyre <93sam@debian.org>
10 #
11 # License: GPLv2, see COPYING
12
13 if [ "$FILE"x = ""x ] ; then
14     FILE=/etc/fake-hwclock.data
15 fi
16
17 COMMAND=$1
18 if [ "$COMMAND"x = ""x ] ; then
19     COMMAND="save"
20 fi
21
22 FORCE=false
23 if [ "$2"x = "force"x ] ; then
24     FORCE=true
25 fi
26
27 case $COMMAND in
28     save)
29         if [ -e $FILE ] ; then
30             SAVED="$(cat $FILE)"
31             SAVED_SEC=$(date -u -d "$SAVED" '+%s')
32             NOW_SEC=$(date -u '+%s')
33             if $FORCE || [ $NOW_SEC -ge $SAVED_SEC ] ; then
34                 date -u '+%Y-%m-%d %H:%M:%S' > $FILE
35             else
36                 echo "Current system time: $(date -u '+%Y-%m-%d %H:%M:%S')"
37                 echo "fake-hwclock saved clock information is in the future: $SAVED"
38                 echo "To force the saved system clock backwards anyway, use \"force\""
39             fi
40         else
41             date -u '+%Y-%m-%d %H:%M:%S' > $FILE
42         fi
43         ;;
44     load)
45         if [ -e $FILE ] ; then
46             SAVED="$(cat $FILE)"
47             SAVED_SEC=$(date -u -d "$SAVED" '+%s')
48             NOW_SEC=$(date -u '+%s')
49             if $FORCE || [ $NOW_SEC -le $SAVED_SEC ] ; then
50                 date -u -s "$SAVED"
51             else
52                 echo "Current system time: $(date -u '+%Y-%m-%d %H:%M:%S')"
53                 echo "fake-hwclock saved clock information is in the past: $SAVED"
54                 echo "To set system time to this saved clock anyway, use \"force\""
55             fi      
56         else
57             echo "Unable to read saved clock information: $FILE does not exist"
58         fi
59         ;;
60     *)
61         echo $0: Unknown command $COMMAND
62         exit 1
63         ;;
64 esac