使用crontab做定时任务,例子是重启rails项目服务器
先介绍常用的命令
定制任务
crontab -e
列出任务
crontab -l
开启
sudo /etc/init.d/cron start
关闭
sudo /etc/init.d/cron stop
重启
sudo /etc/init.d/cron restart
重新载入配置
sudo /etc/init.d/cron reload
步骤1:编写需要定时执行的脚本文件 start.sh
该文件我是放在工程根目录下
#!/bin/bash
. /etc/profile
. ~/.bash_profile
cd /home/hpd/productions/your_pro_name
kill -9 $(lsof -t -i:3000)
RAILS_ENV=production rake assets:precompile
bin/rails s -e production
sudo service nginx restart
步骤2:编写定时任务
输入 crontab -e,会出现如下图
然后输入
SHELL=/bin/bash
* * * * * /home/hpd/productions/your_pro_name/start.sh
* * * * * 的意思是每分钟执行一次。
这边编写的规则详情可以看:http://blog.csdn.net/LOUISLIAOXH/article/details/48242289
然后保存,退出。
步骤3:启动定时任务
重启:sudo /etc/init.d/cron restart
重新载入配置:sudo /etc/init.d/cron reload
到这边应该就已经可以了。
遇到的问题
手动执行.sh脚本文件是可以的,但是放到crontab上就不行了。这是因为crontab没有相应的环境。需要加上环境才行。如步骤1中的
. /etc/profile
. ~/.bash_profile
详情可以看:http://blog.csdn.net/cy309173854/article/details/53186516