手把手:Ubuntu下的计划任务crontab
一)常用命令
二)基本命令格式 # m h dom mon dow command
三)举例[m h dom mon dow]
四)举例[command]
五)其它(crontab基本help)
-----------------------------------------------------
一)常用命令
select-editor ### 选择默认的文本编辑器
ps aux | cron ### 判断cron是否启动
crontab -l ### 列出当前用户的crontab
crontab -e ### 编辑当前用户的crontab
crontab -r ### 删除当前用户的crontab
service rsyslog restart ### 重启rsyslog服务
service cron restart ### 重启crontab
/etc/init.d/cron restart ### 重启crontab
/etc/init.d/cron reload ### 重新载入配置
ubuntu 下需要先设置cron运行日志存放路径才能查看crontab的日志
sudo vi /etc/rsyslog.d/50-default.conf
去掉cron 前面的#(取消注释),在保存。-----大约在第10行
-----------------------------------------------------
二)基本命令格式
# m h dom mon dow command
取值范围 *表示(例: *) -表示(例: 2-9) ,表示(例: 1,4,6) /表示(例: */3)
m minute; [0-59] 取值范围[0-59]内数值; 选择范围[如2到9]内数值; 可选[如1、4、6]数值; */5为每5分钟
h hour; [0-23] 取值范围[0-23]内数值; 选择范围[如2到9]内数值; 可选[如1、4、6]数值; */8为每8小时
dom day of month; [1-31] 取值范围[1-31]内数值; 选择范围[如2到9]内数值; 可选[如1、4、6]数值; */4为每4天
mon month; [1-12] 取值范围[1-12]内数值; 选择范围[如2到9]内数值; 可选[如1、4、6]数值; */3为每3月
dow day of week; [0-6] 取值范围[0-6] 内数值; 选择范围[如2到9]内数值; 可选[如1、4、6]数值; */2为每2周
注意:/ 每多少数字 在分钟里 */2表示每二分钟;*/1等同于*。
* 表示任意取值范围内数字 在m分钟里*表示0到59的任意数值;在h小时里*表示0-23的任意数值;在dom里*表示1-31的任意数值。
- 表示选择区域范围内的数字 3-10表示3-10的任意数字,包含3和10。
, 选择数字 2,4,5 选择2,4,5。
-----------------------------------------------------
三)举例[m h dom mon dow]
6,10 * 2 * * ### 每个月2号,每小时的6分和10分执行一次任务
3,15 8-11 * * 1 command ### 每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command ### 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command ### 在上午8点到11点的第3和第15分钟执行
3,15 * * * * command ### 每小时的第3和第15分钟执行
0 * * * * ### 每小时的0点执行一次任务,比如6:00,10:00
*/3,*/5 * * * * ### 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06
* * * * * command ### 每1分钟执行一次command
-----------------------------------------------------
四)举例[command]
/sbin/reboot ### 重启计算机
date>>cronlog ### 将date追加写入cronlog
tar -zcf /var/backups/home.tgz /home/
-----------------------------------------------------
五)其它:
test@ubuntu:~$crontab
crontab: usageerror: file name must be specified for replace
crontab [-u user]file
crontab [-u user]{ -e | -l | -r }
-e (edit user'scrontab)
-l (list user'scrontab)
-r (delete user'scrontab)
-------------------------------------------------------
https://www.cnblogs.com/yi-meng/p/3208973.html
编写了一个运行处理日志的脚本logdeal.sh,存放路径(/home/apache-tomcat-6.0.26/bin/dealLog/):
#!/bin/sh
JAVA_HOME=/home/bss/jdk1.6.0_13-32
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
PATH=$JAVA_HOME/bin:$PATH
export PATH
cd /home/apache-tomcat-6.0.26/bin/dealLog
java -jar delLog.jar >> /dev/null 2>&1
然后在该用户下配置(执行时间可配)crontab -e
* */1 * * * sh /home/apache-tomcat-6.0.26/bin/dealLog/logdeal.sh >> /dev/null 2>&1
保存退出,然后重启crond服务:service crond restart
执行成功,功能正常。
-------------------------------------------------------
linux下crontab自动执行class程序【推荐阅读】
https://blog.csdn.net/fishyu0817/article/details/4367425
【推荐阅读】
首先说我尝试过的方法:
1、将添加CLASSPATH的语句和java a一起写入crontab中,执行【失败】;
2、在用户下的.bashrc中添加环境变量CLASSPATH,之后在命令行下执行编译好的a.class----【成功】;将java a写入crontab,设定好时间----【失败】
3、将写的.java和所需要的jar包打包生成一个jar包b.jar,之后在crontab中写入java -jar b----【失败】
4、将所有命令写入一个shell文本c.sh,然后在crontab中写入sh c.sh----【失败】
5、将所有命令写入一个文本d,然后在crontab中写入 source d----【失败】
6、将CLASSPATH一并写入d,然后在crontab中写入 source d----【失败】
7、最后将CLASSPATH一并写入d,然后在crontab中写入 d----【成功】!