嵌入式arm Linux下使用BusyBox的crond服务的定时任务方法 之前的程序有问题tcp经常中断,程序还在,linux端口还在占用10777,tcp能连一会就断了,暂时用定时重启

keepalive.sh 守护及定时任务脚本

#!/bin/sh
#--------------定时每天1:30重启应用程序
#先关闭crond
killall -9 crond
#创建目录,默认是没有的
mkdir -p /var/spool/cron/crontabs
#编辑定时任务,写好保存,会生成root用户名文件,我不写了跳过,下面直接替换这个文件
#crontab -e
#30 1 * * * sh /home/agent/bin/timerrestartapp.sh
#把要执行的文件授权
chmod -R 777 /home
#把已经生成的root用户名文件/home/agent/bin/crontabs/root复制到crond任务目录下
cp -rf /home/agent/bin/crontabs/. /var/spool/cron/crontabs
#任务文件授权
chmod -R 777 /var/spool/cron
sleep 3
#启动crond
crond

#--------------进程守护
while true
do
	#进程名字可修改 
	PRO_NAME=ysagentmce01
	#用ps获取进程数量  
	NUM=`ps |grep ${PRO_NAME} |grep -v "grep" |wc -l`
	#echo $NUM  ${PRO_NAME}
	if [ $NUM != 1 ]
	then
	   #如果不是1个,就全杀掉,再启动应用
	   echo "ERROR ,RESET ,NUM:" $NUM $(date) 
	   killall -9 "${PRO_NAME}"
	   /home/agent/bin/ysagentmce01 &
	fi
	#10秒查看一次
	sleep 10s
done 
exit 0  

 

在以上各个字段中,还可以使用以下特殊字符:

"*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;

"/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。

"-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。

","分散的数字(不一定连续),如1,2,3,4,7,9。

注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。

crond是一个服务,一个守护进程。crond 是linux用来定期执行程序的命令,crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

按照网上查找的资料执行时经常会碰到这种错误:

crontab: chdir(/var/spool/cron/crontabs): No such file or directory

所以首先创建这样一个目录吧!

mkdir -p /var/spool/cron/crontabs

然后编辑要执行的任务

crontab -e 编辑

crontab -l查看任务列表

0 */1 * * * /sbin/ntpdate 192.168.1.67 >/dev/null 2>&1 每隔一个小时更新下时间,不打印任何信息

最后,执行下

#crond

此时你会发现/var/spool/cron/crontabs下有一个跟用户名相同的文件,保存着要执行的任务。

ps下会发现cron进程已经启动!

Linux查看tcp端口

netstat -ntlp //查看当前所有tcp端口

netstat -ntulp | grep 80 //查看所有80端口使用情况

猜你喜欢

转载自blog.csdn.net/chenhao0568/article/details/114258612