进程管理工具Supervisord

Supervisord 简介

上面已经介绍了Go目前是有两种方案来实现他的daemon,但是官方本身还不支持这一块,所以还是建议大家采用第三方成熟工具来管理我们的应用程序,这里我给大家介绍一款目前使用比较广泛的进程管理软件:Supervisord。Supervisord是用Python实现的一款非常实用的进程管理工具。supervisord会帮你把管理的应用程序转成daemon程序,而且可以方便的通过命令开启、关闭、重启等操作,而且它管理的进程一旦崩溃会自动重启,这样就可以保证程序执行中断后的情况下有自我修复的功能。 Continue reading

Linux中让crontab以秒为单位执行任务

Linux下实现秒级定时任务的两种方案(Crontab 每秒运行):

第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间。

#!/bin/bash
while true ;do

command

sleep XX //间隔秒数

done

或者使用for语句

#!/bin/bash

for((i=1;i<=20;i++));do
/home/somedir/scripts.sh > /dev/null 2>&1 
sleep 3
done

第二种方案,使用crontab。

我们都知道crontab的粒度最小是到分钟,但是我们还是可以通过变通的方法做到隔多少秒运行一次。

以下方法将每20秒执行一次

crontab -e
* * * * * /bin/date
* * * * * sleep 20; /bin/date.sh
* * * * * sleep 40; /bin/date.sh

说明:需要将/bin/date.sh更换成你的命令即可

这种做法去处理隔几十秒的定时任务还好,要是每1秒运行一次就得添加60条记录。。。如果每秒运行还是用方案一吧。
更多crontab命令,请参考:http://linuxtools-rst.readthedocs.org/zh_CN/latest/tool/crontab.html

如何查看crontab的日志记录

昨天crontab中的同步任务没有执行,不知道是什么原因没有执行,貌似任务hang住了,想查询一下crontab到底问题出在哪里,或者hang在了什么地方。

1.  linux
看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察
2.  unix
在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。
3. mail任务
在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

linux中关于crontab的日志存放

默认情况下,crontab中执行的日志写在/var/log下,如:

#ls /var/log/cron*

/var/log/cron /var/log/cron.1 /var/log/cron.2 /var/log/cron.3 /var/log/cron.4

crontab的日志,当crond执行任务失败时会给用户发一封邮件.如果在服务器上发现一个任务没有正常执行,而crond发邮件也失败.通过看mail的日志,看是否是磁盘空间不够造成的

将cornd错误输出和标准输出日志都指向自定义的日志文件:

0 6 * * * $HOME/fro_crontab/createTomorrowTables>>$HOME/for_crontab/mylog.log 2 >&1

FreeBSD下cron日志文件为 /var/log/cron.

对于crontab的详细介绍请参考:http://blog.haohtml.com/archives/2155