您的位置:首页 > 其它

定时重启机器,重启时运行启动服务脚本

2017-03-14 00:00 453 查看

Linux操作系统定时重启机器,机器启动时运行启动服务脚本的操作步骤:

首先,执行crontab -e命令,创建并打开一个cron表,在表中添加类似如下信息:

#重启服务的脚本
30 2 * * * /sbin/reboot
上面的意思:每天凌晨2:30重启机器

cron表格使用特殊格式指定作业运行时间。cron表格的格式如下:

min hour dayofmonth month dayofweek command

cron表格可以将条目指定为具体的值、一定范围的值(如 1-5)或通配符(*)。例如,如果希望每天10:15运行命令,可以使用以下corn表格项:15 10 * * * command

dayofweek项可以是3字符的文本值(mon、tue、wed、thu、fri、sat、sun),也可以是数字:0标识星期天,6表示星期六

dayofmonth项指定每个月的日期值(1-31)。

PS:因为每个月份不同,所以如何设置一个命令在每个月的最后一天执行呢?一种常用的方法是添加:if-then语句,该语句使用date命令检查明天是否是1号:
00 12 * * * if [ `date +%d -d tomorrow` =01 ] ; then ; command

通过if判断明天是否为01,如果是则执行命令。这将在每天的12点查看本日是否是该月的最后一天,如果是,它将运行命令

命令列表必须制定要运行的命令或shell脚本的完整路径名。可以根据需要添加任何命令行参数或者重定向符号。

cron程序使用提交作业的用户账户运行脚本。因此必须拥有相应的权限才能访问命令行列表中的指定的命令和输出文件。

其次,编写shell脚本,我编写的shell脚本如下:

#!/usr/bin/env bash
#hadoop的sbin路径
Hadoop=/usr/local/hadoop/sbin
#hbase的bin路径
Hbase=/usr/local/hbase/bin
#zookeeper的bin路径
Zk=/usr/local/zookeeper/bin
#重启机器
#reboot
#关闭服务并重启
cd $Zk
#关闭zk服务
stopZK=`./zkServer.sh stop`
startZK=`./zkServer.sh start`
statusZK=`./zkServer.sh status`
echo $stopZK > /dev/null
if echo $startZK | grep "STARTED"
then
if echo $status | grep "Mode"
then
if jps | grep "QuorumPeerMain"
then
echo `date` "zk server start Succeed!">>/usr/local/reboot.log
fi
else
for pid in `jps | grep "QuorumPeerMain"`
do
#如果启动pid不为空且pid不为零
if [ -n
"$pid" ] && [ "$pid" != "QuorumPeerMain" ]
then
#关闭该进程
kill -9 $pid
#关闭zkServer
stopZK=`./zkServer.sh stop`
echo $stopZK >/dev/null
#运行zkServer.sh命令启动zk服务
startZk=`./zkServer.sh start`
if echo $startZk  | grep "STARTED"
then
#查看服务状态
statusZK=`./z
kServer.sh status`
if echo $
statusZK | grep "Mode"
then
QuoPM=`jps | grep "QuorumPeerMain"`
if [ -n "$QuoPM" ]
then
echo `date` "zookeeper restart Succeed!">>/usr/local/reboot.log

fi
fi
fi
fi
done
fi
fi

cd $Hadoop
#启动hadoop服务
startHadoop=`./start-all.sh`
if [ -n "$startHadoop" ]
then
echo `date` "hadoop start Succeed!">>/usr/local/reboot.log
fi

echo $
#关闭history与proxy服务
StopHistory=`./mr-jobhistory-daemon.sh stop historyserver`
StopProxy=`./yarn-daemon.sh stop proxyserver`

#启动history与proxy服务
StartHistory=`./mr-jobhistory-daemon.sh start historyserver`
StartProxy=`./yarn-daemon.sh start proxyserver`
if [ -n "$StartHistory" ]  &&  [ -n "$StartProxy" ]
then
echo `date` "historyserver and proxyserver restart Succeed!">>/usr/local/reboot.log
fi

cd $Hbase
#关闭hbase服务
StopHbase=`./stop-hbase.sh`

#启动hbase服务
StartHbase=`./start-hbase.sh`
if [ -n "$StartHbase" ]
then
echo `date` "hbase restart Succeed!" >>/usr/local/reboot.log
fi
调试脚本,看脚本是否成功,如果运行成功,说明脚本编写完成!

最后,设置开机自启脚,在/etc/init.d/rc.local文件中添加类似如下的命令:

. /usr/local/Reboot




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: