Linux 定时任务

310 阅读4分钟

Ubuntu

在Linux系统中,计划任务一般是由 cron 承担,我们可以把 cron 设置为开机时自动启动。cron 启动后,它会读取它的所有配置文件(全局性配置文件 /etc/crontab ,以及每个用户的计划任务配置文件),然后 cron 会根据命令和执行时间来按时来调用度工作任务

cron 是一个 linux 下的定时执行工具,可以在无需人工干预的情况下运行作业。由于 cron 是 Linux 的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务

service cron start //启动服务

service cron stop //关闭服务

service cron restart //重启服务

service cron reload //重新载入配置

/etc/init.d 这个目录是所有服务的脚本,可以通过执行脚本并且加上参数,开启关闭或者重启对应的服务

cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用 crontab 指令来管理cron机制

crontab参数

crontab
-u 使用者名称
-l:可以列出crontab的内容
-r:可以移除crontab
-e:可以使用系统预设的编辑器,开启crontab
-i:可以移除crontab,会跳出系统信息让你再次确定是否移除crontab

定时任务时间

*/5 * * * * 每五分钟执行

0 * * * * 每小时执行

0 0 * * * 每天执行

0 0 * * 0 每周执行

0 0 1 * * 每月执行

0 0 1 1 * 每年执行

常用命令

重启cron:/etc/init.d/cron restart

查看cron:crontab -l

查看cron的状态(开启或关闭):service cron status

打开cron文件:crontab -e

查看cron日志:/var/log/syslog

crontab -l -u jp   //列出用户jp的所有调度任务

crontab时间格式说明

minute(分):可以设置0-59分

hour(小时):可以设置0-23小时

day of month(日期):可以设置1-31号

month(月份):可以设置1-12月

day of week(星期):可以设置0-7星期几,其中0和7都代表星期天,也可以使用名称来表示星期天到星期一,例如sun表示星期天,mon表示星期一

"*" 代表取值范围内的数字

"/"代表"每"

"-"代表从某个数字到某个数字

","分开几个离散的数字 语句解释

find /usr/local/backups -mtime +10 -name “*.*” -exec rm -rf {} \;

/usr/local/backups目录下所有10天前带”.”的文件删除
findlinux的查找命令,用户查找指定条件的文件
/usr/local/backups:想要进行清理的任意目录
-mtime:标准语句写法
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
*.*:希望查找的数据类型,”.jpg”表示查找扩展名为jpg的所有文件,””表示查找所有文件,这个可以灵活运用,举一反三
-exec:固定写法
rm -rf:强制删除文件,包括目录
{} \; :固定写法,一对大括号+空格++;

步骤

  1. 新建脚本文件

touch /usr/local/bin/clear
chmod 777 clear

  1. 编辑脚本文件vim clear 文件内容如下
#!/bin/sh

find /usr/local/backups -mtime +10 -name “*.*” -exec rm -rf {} \;
  1. 将clear文件加入到系统计划任务,到点自动执行,执行crontab -e,输入
// 这里的设置是每天凌晨2点执行clear文件进行数据清理,可以研究一下cron,制定自己需要的计划任务
* 2 * * */usr/local/bin/clear

上面第三步也可以采用另外一种方式

新建一个cron文件touch del_crontab
vim del_crontab输入* 2 * * */usr/local/bin/clear
然后执行 crontab del_crontab,将 cron 文件添加到定时服务中
查看定时任务crontab -l
重启定时任务 service cron start/etc/init.d/cron restart
查看定时任务的状态service cron status

其他具体例子

● 0 */2 * * * /sbin/service httpd restart 意思是每两个小时重启一次apache

● 50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务

● 50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务

● 0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘

● 1 * * * * /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件

● 00 03 * * 1-5 find /home “.xxx” -mtime +4 -exec rm {} ; 每周一至周五3点钟,在目录/home中,查找文件名为.xxx的文件,并删除4天前的文件。

● 30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令

参考1 参考2

centos

参考

笔记

● 修改/home目录下所有文件和各级子目录文件都权限

$sudo chmod 777 * -R /home