/[dtapublic]/projs/dtats/trunk/projs/20161029_server_scripts_automaint_cron/power_fail_shutdown
ViewVC logotype

Diff of /projs/dtats/trunk/projs/20161029_server_scripts_automaint_cron/power_fail_shutdown

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 58 by dashley, Sat Oct 29 20:47:33 2016 UTC revision 60 by dashley, Sat Oct 29 21:06:08 2016 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
3  #$Header$  #$Header$
4  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
5  #This file is part of "Server Scripts, Automatic Maintenance, Cron", a set of scripts for  #This file is part of "Server Scripts, Automatic Maintenance, Cron", a set of scripts for
6  #performing automatic periodic maintenance on a Linux server.  #performing automatic periodic maintenance on a Linux server.
7  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
8  #This source code and any program in which it is compiled/used is provided under the MIT License,  #This source code and any program in which it is compiled/used is provided under the MIT License,
9  #reproduced below.  #reproduced below.
10  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
11  #Permission is hereby granted, free of charge, to any person obtaining a copy of  #Permission is hereby granted, free of charge, to any person obtaining a copy of
12  #this software and associated documentation files(the "Software"), to deal in the  #this software and associated documentation files(the "Software"), to deal in the
13  #Software without restriction, including without limitation the rights to use,  #Software without restriction, including without limitation the rights to use,
14  #copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the  #copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the
15  #Software, and to permit persons to whom the Software is furnished to do so,  #Software, and to permit persons to whom the Software is furnished to do so,
16  #subject to the following conditions :  #subject to the following conditions :
17  #  #
18  #The above copyright notice and this permission notice shall be included in all  #The above copyright notice and this permission notice shall be included in all
19  #copies or substantial portions of the Software.  #copies or substantial portions of the Software.
20  #  #
21  #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE  #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
24  #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  #AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,  #LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26  #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE  #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27  #SOFTWARE.  #SOFTWARE.
28  #-------------------------------------------------------------------------------------------------  #-------------------------------------------------------------------------------------------------
29  #Powers off my Lenovo 11e server if the battery is too depleted.  Designed to be run every 1-5  #Powers off my Lenovo 11e server if the battery is too depleted.  Designed to be run every 1-5
30  #minutes.  It has its own cron entry (in /etc/crontab) because there is no guarantee that the  #minutes.  It has its own cron entry (in /etc/crontab) because there is no guarantee that the
31  #Lenovo 11e built-in battery is robust enough to make it through the regular maintenance cron, so  #Lenovo 11e built-in battery is robust enough to make it through the regular maintenance cron, so
32  #can't safely put this logic in there.  Between interrupting maintenance tasks and a hard power  #can't safely put this logic in there.  Between interrupting maintenance tasks and a hard power
33  #fail, the interruption is less of a threat than a hard power fail.  #fail, the interruption is less of a threat than a hard power fail.
34  #----------------------------------------------------------------------------------------------------  #----------------------------------------------------------------------------------------------------
35  #Delay for 120 seconds if the power_fail_occurred lockfile exists, indicating that we are restarting  #Delay for 120 seconds if the power_fail_occurred lockfile exists, indicating that we are restarting
36  #after a previous power fail.  The reason for the delay is to guard against a missing battery or  #after a previous power fail.  The reason for the delay is to guard against a missing battery or
37  #a faulted battery -- if this occurs, it would be very hard to get the server running again without  #a faulted battery -- if this occurs, it would be very hard to get the server running again without
38  #rescue media.  The 120 seconds gives time to rename this script or kill the cron process(es) or  #rescue media.  The 120 seconds gives time to rename this script or kill the cron process(es) or
39  #something so the system can be started and will not power off.  #something so the system can be started and will not power off.
40  if [ -f /etc/cron.custom/lockfiles/power_failure_occurred ] ; then  if [ -f /etc/cron.custom/lockfiles/power_failure_occurred ] ; then
41     sleep 120     sleep 120
42     rm /etc/cron.custom/lockfiles/power_failure_occurred     rm /etc/cron.custom/lockfiles/power_failure_occurred
43  fi  fi
44  #----------------------------------------------------------------------------------------------------  #----------------------------------------------------------------------------------------------------
45  #If the file with information doesn't exist, shutdown.  #If the file with information doesn't exist, shutdown.
46  if [ ! -f /sys/class/power_supply/BAT1/capacity ] ; then  if [ ! -f /sys/class/power_supply/BAT1/capacity ] ; then
47     touch /etc/cron.custom/lockfiles/power_failure_occurred     touch /etc/cron.custom/lockfiles/power_failure_occurred
48     poweroff     poweroff
49  fi  fi
50  #----------------------------------------------------------------------------------------------------  #----------------------------------------------------------------------------------------------------
51  #If the file contains unfavorable information, shutdown.  #If the file contains unfavorable information, shutdown.
52  if [ `cat /sys/class/power_supply/BAT1/capacity` -lt 30 ] ; then  if [ `cat /sys/class/power_supply/BAT1/capacity` -lt 30 ] ; then
53     touch /etc/cron.custom/lockfiles/power_failure_occurred     touch /etc/cron.custom/lockfiles/power_failure_occurred
54     poweroff     poweroff
55  fi  fi
56  #----------------------------------------------------------------------------------------------------  #----------------------------------------------------------------------------------------------------

Legend:
Removed from v.58  
changed lines
  Added in v.60

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25