chiark / gitweb /
fishdescriptor: Work if child is not running as root, but we are
[chiark-utils.git] / backup / takedown
1 #!/bin/sh
2 # takedown
3 # Entry point for cron to take the system down for backups
4 #
5 # This file is part of chiark backup, a system for backing up GNU/Linux and
6 # other UN*X-compatible machines, as used on chiark.greenend.org.uk.
7 #
8 # chiark backup is:
9 #  Copyright (C) 1997-1998,2000-2001,2007
10 #                     Ian Jackson <ian@chiark.greenend.org.uk>
11 #  Copyright (C) 1999 Peter Maydell <pmaydell@chiark.greenend.org.uk>
12 #
13 # This is free software; you can redistribute it and/or modify it under the
14 # terms of the GNU General Public License as published by the Free Software
15 # Foundation; either version 3, or (at your option) any later version.
16 #
17 # This is distributed in the hope that it will be useful, but WITHOUT ANY
18 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19 # FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
20 # details.
21 #
22 # You should have received a copy of the GNU General Public License along
23 # with this program; if not, consult the Free Software Foundation's
24 # website at www.fsf.org, or the GNU Project website at www.gnu.org.
25
26 # Expects a single (possibly empty) argument X which is used to select
27 # a file /etc/chiark-backup/warnings.X. This file will contain lines like:
28 # T 300 "in 10 minutes"
29 # T 240 "in 5 minutes"
30 # T 45 "in 1 minute"
31 # T 15 "in 15 seconds"
32 # configuring the frequency of warning messages. If you call the 
33 # files 'warnings.soon', 'warnings.now' and 'warnings.' then
34 # you can invoke this as:
35 #   takedown                     lots of warnings
36 #   takedown soon                not so many warnings
37 #   takedown now                 no warning at all
38
39 set -e
40 cd /etc/chiark-backup
41
42 host="`hostname`" || true
43
44 T () {
45         (
46                 exec wall <<END &
47  *** WARNING - SYSTEM GOING DOWN FOR BACKUPS ***
48  $host will shut down automatically $2.
49
50 END
51         ) &
52         sleep $1
53 }
54
55 . "warnings.$1"
56
57 (
58         exec wall <<END &
59  *** WARNING - SYSTEM GOING DOWN FOR BACKUPS ***
60
61   $host is shutting down IMMEDIATELY.
62
63 END
64 ) &
65 sleep 1
66
67 # We assume that runlevel 5 is set up suitably for doing backups
68 # (ie non-essential services turned off in an effort to get the
69 # tape to stream.)
70 telinit 5