Linux(6):定时任务

定时任务

定时任务的说明和分类 

# 定时任务分类:
    1. crond(crontab) 定时任务软件(软件包 cronie)
    2. atd 运行一次
    3. anacron 非7*24小时运行的服务器

# 检查 cronie 是否安装: rpm -qa 软件名
[root@NEO ~]# rpm -qa cronie
cronie-1.4.4-16.el6_8.2.x86_64
[root@NEO ~]# 

# 查看软件包中的内容: rpm -ql 软件包
[root@NEO ~]# rpm -ql cronie
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.deny
/etc/pam.d/crond
/etc/rc.d/init.d/crond
/etc/sysconfig/crond
/usr/bin/crontab
/usr/sbin/crond
/usr/share/doc/cronie-1.4.4
/usr/share/doc/cronie-1.4.4/AUTHORS
/usr/share/doc/cronie-1.4.4/COPYING
/usr/share/doc/cronie-1.4.4/ChangeLog
/usr/share/doc/cronie-1.4.4/INSTALL
/usr/share/doc/cronie-1.4.4/README
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/man/man8/cron.8.gz
/usr/share/man/man8/crond.8.gz
/var/spool/cron
[root@NEO ~]# 

系统的定时任务:

# 系统的定时任务:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
# 系统会自动运行里面的内容,系统中毒的时候

# 系统定时任务 + logrotate 命令 完成对日志的日志切割/日志轮询
[root@NEO ~]# ll /var/log/messages* /var/log/secure*
-rw-------  1 root root  747970 Apr  6 23:01 /var/log/messages
-rw-------. 1 root root  560162 Mar 10 13:11 /var/log/messages-20190310
-rw-------. 1 root root 1776477 Mar 18 02:54 /var/log/messages-20190318
-rw-------  1 root root  281719 Mar 25 05:09 /var/log/messages-20190325
-rw-------  1 root root  748600 Apr  2 03:01 /var/log/messages-20190402
-rw-------  1 root root   11127 Apr  6 23:12 /var/log/secure
-rw-------. 1 root root    5897 Mar 10 13:20 /var/log/secure-20190310
-rw-------. 1 root root   15581 Mar 18 02:54 /var/log/secure-20190318
-rw-------  1 root root     842 Mar 25 05:19 /var/log/secure-20190325
-rw-------  1 root root    6890 Apr  2 03:10 /var/log/secure-20190402
[root@NEO ~]# 


# /etc/crontab 是系统定时任务的配置文件之一

用户的定时任务

# 用户的定时任务

# crontab -l  ---> (list) 列表;查看、管理用户定时任务的命令; cron table
# crontab -e  --->  (edit)  编辑;编辑用户的定时任务 (crontab -e 之后的操作和 vim 一模一样)
# /var/spool/cron/root  ---> 用户的定时任务存放的位置   (root 是用户名  root用户的定时任务)
[root@NEO ~]# crontab -l
no crontab for root            # root 用户没有定时任务
[root@NEO ~]# crontab -e
[root@NEO ~]# crontab -l
#oldboy
[root@NEO ~]# ll /var/spool/cron/
total 4
-rw------- 1 root root 8 Apr  7 00:22 root        # 刚才创建的那个定时任务
[root@NEO ~]# 

定时任务的使用:

# 定时任务的使用:
# 1. 定时任务依赖的软件(服务) --- 是否能用
    1) 查看当前是否正在运行
    2)    查看 crond 是否开机自启动
# 查看定时任务当前是否在运行:
# 方法一: 
[root@NEO ~]# /etc/init.d/crond status
crond (pid  1555) is running...
# 方法二: ps -ef ---> 该命令用于 显示系统中正在运行的进程(这种方法用的比较多);process status
[root@NEO ~]# ps -ef |grep crond
root       1555      1  0 Apr06 ?        00:00:00 crond                # 这个表示定时任务正在运行
root       1719   1625  0 00:37 pts/0    00:00:00 grep --color=auto crond
         # 第二列表示 pid (进程号)
         
# 检查定时任务是否开机自启动:chkconfig
[root@NEO ~]# chkconfig |grep crond
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@NEO ~]# 

crontab 命令的使用:

1. crontab -e   ---> edit ;编辑当前用户的定时任务 ---> 该命令即相当于 编辑 vim /var/spool/cron/root 这个文件 (假设当前是root用户)
2. crontab -l   ---> list ;显示当前用户的定时任务 ---> 该命令即相当于 cat /var/spool/cron/root 这个文件 (假设当前是root用户)

# 使用 crontab 命令、而不直接操作相关文件的原因:
    1. 有语法检查功能 格式对不对
    2. 方便

定时任务相关文件及目录

# 定时任务相关文件及目录
1. /var/spool/cron/   ---> 定时任务的配置文件所在的目录
2. /var/log/cron      ---> 定时任务的日志文件 (运行过程的一个记录) ; *** 很重要
3. /etc/cron.deny        ---> 哪些用户禁止使用定时任务 ,即 定时任务黑名单

定时任务格式与常见写法:

定时任务格式说明:

注意:

# 注意: 星期几和日期不要同时加上

定时任务中的特殊符号:

# 1.  *  ---> 每 ...;每分钟,每小时 ... ; 5个 * 表示每一分钟 (定时任务中最小单位是分钟)
# 2. /n  ---> 每隔 ... ; */10 * * * * 表示 每隔/每10分钟

# 事例: 每三分钟同步一下系统的时间
# 1). 命令:
[root@NEO ~]# which ntpdate
/usr/sbin/ntpdate
[root@NEO ~]# /usr/sbin/ntpdate ntp1.aliyun.com        # 把这条命令放到 定时任务中
 7 Apr 01:54:44 ntpdate[1793]: step time server 120.25.115.20 offset 141.016804 sec
 
# 注:在定时任务中命令要用绝对路径

# 2). 把命令放到定时任务中
[root@NEO ~]# crontab -e
[root@NEO ~]# crontab -l
#sync time by neo at 20170407
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
[root@NEO ~]# 

# 3). 检查:3.1 看日志;3.2 看结果
[root@NEO ~]# date
Sun Apr  7 02:02:50 CST 2019
[root@NEO ~]# date -s "1year"    # 先把系统时间修改掉
Tue Apr  7 02:02:57 CST 2020

[root@NEO ~]# tail -f /var/log/cron
Apr  7 01:59:19 NEO crontab[1799]: (root) LIST (root)
Apr  7 02:00:01 NEO crond[1555]: (root) RELOAD (/var/spool/cron/root)
Apr  7 02:00:01 NEO CROND[1802]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com)
Apr  7 02:00:01 NEO CROND[1803]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Apr  7 02:01:01 NEO CROND[1812]: (root) CMD (run-parts /etc/cron.hourly)
Apr  7 02:01:01 NEO run-parts(/etc/cron.hourly)[1812]: starting 0anacron
Apr  7 02:01:01 NEO anacron[1824]: Anacron started on 2019-04-07
Apr  7 02:01:01 NEO run-parts(/etc/cron.hourly)[1826]: finished 0anacron
Apr  7 02:01:01 NEO anacron[1824]: Jobs will be executed sequentially
Apr  7 02:01:01 NEO anacron[1824]: Normal exit (0 jobs run)
Apr  7 02:03:01 NEO CROND[1849]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com)   # 定时任务执行
Apr  7 02:03:07 NEO CROND[1854]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com)      # 定时任务执行

[root@NEO ~]# date
Sun Apr  7 02:03:09 CST 2019    # 定时任务执行后,系统时间更新
[root@NEO ~]# 


# 3. -      ===> 表示从...到... , 例如: 07-11 可以表示 7点到11点的时候运行定时任务

# 事例:每天的上午7点到上午11点,每个小时运行CMD命令
* 07-11 * * * * CMD  # 07-11 每分钟运行CMD
00 07-11 * * * CMD  # 07-11 每个小时(整点)运行CMD

# 表示小时的时候一定要注意分钟

# 4. , ---> 逗号 表示 分隔;如: 00 17,19,20 * * *  表示 17点、19点和20点

猜你喜欢

转载自www.cnblogs.com/neozheng/p/10663907.html