Linux 定时任务执行Shell脚本【CentOS6.8】

本人一直从事Windows系统的开发,最近一年基本上都在研究.NET跨平台相关的知识,最近遇到一个棘手的问题,由于前期技术选型的时候说采用WebAPI的方式进行部署,我当时就答应了,到最后上线的时候突然发现一个逆天的功能,需要通过API修改系统的IP,子网掩码,网关,设置完成以后系统需要重启

负责开发的同事完全按照windows上的编程模式,使用Windows内部函数修改这些参数并完成重启,但是在Linux上就行不通了,最后想了一个办法,设置一个定时计划,动态监控配置文件的方式,通过WebAPI写一个Shell文件,然后Linux通过定时任务检测改文件,如果该文件存在,就执行该文件,执行成功以后删除该文件,然后再刷新网络,重启电脑,废话不多说,具体实现如下:

编写定时任务执行脚本

initial.sh

#!/etc/bash
folder="/var/www/default"
file="/var/www/default/network.sh"
if [ ! -d "$folder" ]; then
mkdir "$folder"
fi
echo "----------->" >> "/var/www/default/log.log"
if [  -f "$file" ]; then
echo $file
source "$file"
echo "==========>" >> "/var/www/default/log.log"
rm -rf  $file
fi

network.sh[该文件由API写入]

#!/bin/sh
# BY kerryhu
# MAIL:king_819@163.com
#这是一个自动修改网络ip、掩码、网关的脚本。
#使用方法ip_mod IP_MOD、MASK_MOD、GW_MOD
#例:ip_mod 10.10.10.5 255.255.255.0 10.10.10.1
#其中IP_MOD、MASK_MOD、GW_MOD是要改成的ip、mask、gw
#设置变量
PROC=/bin/sed
IP_PATH=/etc/sysconfig/network-scripts/ifcfg-eth1
GW_PATH=/etc/sysconfig/network
IP_PRI=`grep -i ipaddr $IP_PATH|awk -F "=" '{printf $2 }'`
MASK_PRI=`grep -i netmask $IP_PATH|awk -F "=" '{printf $2}'`
GW_PRI=`grep -i GATEWAY $GW_PATH|awk -F "=" '{printf $2}'`
IP_MOD=192.168.1.214
MASK_MOD=255.255.0.0
GW_MOD=192.168.1.1
#修改ip、mask、gw
$PROC -i "s/$IP_PRI/$IP_MOD/g" $IP_PATH
$PROC -i "s/$MASK_PRI/$MASK_MOD/g" $IP_PATH
$PROC -i "s/$GW_PRI/$GW_MOD/g" $GW_PATH
#重启网卡
/etc/rc.d/init.d/network restart

设置定时任务

crontab -e
## For excuting scripts.sh every 3 seconds##on 201692017:41:53
*/1 * * * * /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 5 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 10 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 15 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 20 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 25 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 30 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 35 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 40 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 45 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 50 &&  /bin/bash  /var/www/default/initial.sh
*/1 * * * * sleep 55 &&  /bin/bash  /var/www/default/initial.sh
#-----------------------------------------------------------------
service crond start

注意事项

permission denied

参考文档:http://jingyan.baidu.com/article/90808022fa50dbfd90c80f52.html

etc/bash: bad interpreter:

参考文档:http://gubit.blog.sohu.com/30564154.html

如何通过秒设置定时任务?

crontab -e
## For excuting scripts.sh every 3 seconds##on 2014-10-15
*/1 * * * *  /home/somedir/scripts.sh
*/1 * * * * sleep 3 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 6 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 9 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 12 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 15 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 18 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 21 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 24 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 27 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 30 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 33 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 36 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 39 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 42 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 45 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 48 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 51 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 54 &&  /home/somedir/scripts.sh
*/1 * * * * sleep 57 &&  /home/somedir/scripts.sh
#-----------------------------------------------------------------

参考文档:http://www.tuicool.com/articles/QJr2ErF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火燎猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值