手把手:Ubuntu下的计划任务crontab

手把手: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----【成功】!

 

你可能感兴趣的:(运维,ubuntu,crontab,任务计划,定时任务)