什么是计划任务,计划任务类似于我们平时生活中的闹钟。
在Linux
系统的计划任务服务crond
可以满足周期性执行任务的需求。
crond
进程每分钟会处理一次计划任务,计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据
默认开启,但如果要使用计划任务应该查看状态
)[root@system_rookie ~]# systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enab>
Active: active (running) since Wed 2020-08-19 22:36:17 EDT;>
Main PID: 1049 (crond)
CGroup: /system.slice/crond.service
└─1049 /usr/sbin/crond -n
8月 20 04:01:01 system_rookie anacron[2687]: Jobs will be exec>
lines 1-8
计划任务分为以下两种情况:
计划任务配置文件/etc/crontab
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
文件 | 说明 |
---|---|
/etc/crontab | crontab配置文件 |
/etc/cron.deny | 该文件中所列用户不允许使用crontab命令(黑名单) |
/var/spool/cron/* | 所有用户定时文件都存放此目录,文件以用户名命名 |
/var/log/cron | 定时任务执行后的日志文件,可用来回溯 |
/var/log/cron
,恢复删除的计划任务/var/log/cron
日志文件,找出计划任务的执行规律;推测出时间规划周期,从而恢复之前删除的计划任务[wcl@localhost root]$ crontab -l
no crontab for wcl
/etc/cron.deny
(root用户不受限制)默认情况下没有该文件,需要手动创建
[root@localhost ~]# cat /etc/cron.deny
wcl
[root@localhost ~]# su wcl
[wcl@localhost root]$ cron
crond cronnext crontab
[wcl@localhost root]$ crontab -l
You (wcl) are not allowed to use this program (crontab)
See crontab(1) for more information
/etc/cron.allow
(白名单默认情况下没有需要自己创建)默认情况下没有该文件,需要手动创建
[root@localhost ~]# cat /etc/cron.deny
[root@localhost ~]# cat /etc/cron.allow
wcl
[root@localhost ~]# su wei
[wei@localhost root]$ crontab -l
You (wei) are not allowed to use this program (crontab)
See crontab(1) for more information
[root@localhost ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost ~]# crontab -l
10 11 * * * /bin/echo "baby"
#编辑计划任务后/var/spool/cron下会出现对应用户的文件
[root@localhost ~]# cat /var/spool/cron/root
10 11 * * * /bin/echo "baby"
[root@localhost ~]# crontab -u wei -l
no crontab for wei
禁止使用
")[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
需要删除计划任务时应该使用crontab -e
进入到编辑界面一条条地删除
00 02 * * * command
00 02 1 * * command
00 02 14 2 * command
00 02 * * 7 command
00 02 * 6 5 command
00 02 14 * 7 command
00 02 14 2 7 command
00 02 * * * command
* 02 * * * command
* * * * * command
* * 14 2 * command
*/5* * * * command
00 02 *1,5,8 * command
00 02 1-8 * * command
[root@system_rookie ~]# crontab -l
## cront of root
00 13 22 8 * /usr/bin/echo "I'm on the frount of line"
[root@system_rookie ~]# crontab -l
## How many IP connect the localhost
*/10 13 22 08 * /usr/bin/bash /scripts/ipssh.sh &>/dev/null
&> /dev/null
调试好后应屏蔽debug信息避免系统垃圾过多占用inode;如需输出日志,可重定向至文件[root@wangqing ~]# crontab -e
#每天凌晨切割nginx日志
05 00***/bin/bash -x /scripts/cut_nginx.sh &> /scripts/log/nginx.log
#每天5点备份数据库
00 05*** /bin/bash -x /scripts/dump_sql.sh &>/scripts/log/mysql.log
#注意:
#1.我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。
#2.crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。
#3.几乎每个服务器都会用到crond服务。
志文件中即可。
建议:将需要定期执行的任务写入脚本中,建立/scripts目录统一存放脚本,脚本中命令必须使用绝对路径,
手动执行脚本检测输出是否正常,然后将脚本加入计划任务测试,测试后无问题将脚本输出写入对应的日
志文件中即可。
计划任务添加步骤: