赞
踩
最近因为要部署服务器上的一个服务,但是该服务不太稳定,有时候会因为莫名其妙的原因退出后台进程,于是每次服务掉线的时候就要登上服务器手动重新开启,很是麻烦,所以就想能不能写个定时脚本不断监测进程,如果进程不存在则重新启动服务,于是了解了一下Ubuntu下的定时功能。
Ubuntu下的定时功能一般都是通过系统服务cron来实现的:
crontab -l
:列出当前用户的定时任务。crontab -e
:编辑当前用户的定时任务。crontab -u xxxxx
:对某用户的任务进行操作。crontab -r
:删除定时任务。上述命令如果没有加-u
参数的话默认对当前执行命令的用户的定时任务进行操作。
第一次编辑当前用户的定时任务的时候,开始会让你选择编辑内容所用的编辑器。(我一般用的都是vim)
在编辑完毕,保存退出之后,需要重启cron服务来使其生效:
service cron restart
:重启cron服务。service cron reload
:重新加载cron服务的配置。service cron stop
:停止cron服务。service cron start
:启动cron服务。可以使用pgrep cron
来查看cron的pid,如果有结果输出,说明cron是运行的,反之则没有运行。
好了!终于来到定时任务内容格式方面的说明了!
定时任务的格式其实很简单,每一行都是1个任务,每行有6个内容,每个内容以空格间隔开,从左到右每个内容含义分别为:
在前5个字段中,如果为*
的话则表示“每”,即每分钟,每小时,每周,每天等等。
比如说* * * * * echo "hello"
表示每分钟执行1次echo "hello"
这个任务,再比如说1 2 3 * * echo "hello"
表示每月的第3天中,第2个小时的第1分钟执行echo "hello"
这个任务,依此类推,大概就是这样。
不过值得注意的是,在最后的要执行的任务那里,如果命令太多,可以考虑写在一个脚本当中,然后调用脚本即可,这里需要注意的是调用脚本需要写全路径,cron服务在执行定时任务的时候在服务本身的一个特定的目录下,并不在其他的某些目录下,所以需要使用全路径调用。另外就是在执行命令的时候并不会有某些特殊的权限,其使用bin/sh来执行命令,如果希望执行的命令本身具有某些权限,需要在任务中自行加上sudo
命令。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。