前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux下的定时任务处理

linux下的定时任务处理

作者头像
用户7657330
发布2020-08-14 10:57:03
7340
发布2020-08-14 10:57:03
举报
文章被收录于专栏:程序生涯程序生涯

cron是linux的一个定时任务执行工具,而crondtab是周期性执行命令,crond则是定时任务的守护进程。下面我们进行一些实践,希望小伙伴看完能跟着练习起来。

服务启动

查看服务是否启动

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz ~]# systemctl status crond
● crond.service - Command Scheduler
  Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
  Active: active (running) since 二 2018-11-13 11:50:47 CST; 1 day 10h ago
Main PID: 489 (crond)
  CGroup: /system.slice/crond.service
          └─489 /usr/sbin/crond -n

11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz systemd[1]: Started Command Scheduler.
11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz systemd[1]: Starting Command Scheduler...
11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz crond[489]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 7...ed.)
11月 13 11:50:47 iz2ze0ajic0vbv28hcdctpz crond[489]: (CRON) INFO (running with inotify support)
Hint: Some lines were ellipsized, use -l to show in full.

如果没有启动,执行

systemctl start crond

systemctl enable crond

crontab命令

语法 : crontab 参数

常用参数 :

crontab -u #指定用户的cron信息

crontab -l #列出当前用户下的cron服务的信息

crontab -u user -l #列出指定用户的cron服务的信息

crontab -r #删除cron服务

crontab -e #编辑cron服务

crontab -r -u user #删除指定用户的定时任务

操作:

编辑cron服务

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -e
crontab: installing new crontab

查看当前用户下任务内容

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -l
22 22 22 * * mkdir /linux/test

删除任务

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -r
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -l
no crontab for root

查看qa这个用户下的任务内容

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -u qa -l
22 22 22 * * mkdir /linux/test

删除qa这个用户下的定时任务

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -u qa -r
[root@iz2ze0ajic0vbv28hcdctpz ~]# crontab -u qa -l
no crontab for qa

系统任务

系统的任务调度配置文件在/etc/crontab下

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz ~]# ll /etc/crontab
-rw-r--r-- 1 root root 451 Nov 15 07:49 /etc/crontab

可以直接在/etc/crontab下添加系统任务(不建议)

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz ~]# 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

定时任务相关的目录

代码语言:javascript
复制
[root@iz2ze0ajic0vbv28hcdctpz etc]# ll cr
cron.d/       cron.deny     cron.monthly/ cron.weekly/
cron.daily/   cron.hourly/  crontab       crypttab

目录作用解释:

cron.d/ 是系统自动定期需要做的任务(不是按照时,分,秒等时间周期执行的)

cron.deny 在该文件内的用户无法做计划任务

其他文件为不同周期的执行脚本。

定时任务规则

首先来看下任务的格式(如图):

时间的一些特殊符号:

下面我们来举一些例子:

代码语言:javascript
复制
#每晚的20:30重加载nginx
30 20 * * * /usr/local/nginx/sbin/nginx -s reload 
#每月1、10、15日的5:30重加载nginx
30 5 1,10,15 * * /usr/local/nginx/sbin/nginx  -s reload  
#每天20: 00至22 : 00之间每隔30分钟重加载nginx
0,30 20-22 * * * /usr/local/nginx/sbin/nginx -s reload 
每星期六的10 : 00 pm 重加载nginx
0 22* * 6 /usr/local/nginx/sbin/nginx  -s reload 
#每一小时重加载一次nginx
0 */1 * * * /usr/local/nginx/sbin/nginx -s reload 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务启动
  • crontab命令
  • 系统任务
  • 定时任务规则
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档