1、at(一次性任务)

前提:服务必须启动

systemctl status atd.service

 

注意:

  • at创建计划任务,精确到分钟

  • 任务的执行结果,会以邮件方式通知相关用户

 

1.1、创建一个任务

例1:

#在2016年5月30日的23:59执行一行命令:rm -f /tmp/f1

at 23:59 2016-05-30

>rm -f /tmp/f1

>ctrl+d 

 

例2:

#从当前时间算起,1分钟后执行

at now + 1 min

>echo hello >> /tmp/tt

>ctrl+d

 

例3:

#3天后的,下午5点执行命令

at 5pm+3 days

>echo hello >> /tmp/tt

>ctrl+d

 

1.2、查看任务

#at任务存放位置

#时间一到,就调用这个目录下的文件执行任务,一旦完成,就删除

ls /var/spool/at/

 

#查看任务队列

atq

 

#列出指定队列中等待运行的作业,相当于atq

at -l

 

#查看具体作业任务

at -c JOBID

 

1.3、删除任务

#删除指定任务

atrm JOBID

 

#删除指定任务,相当于atr

at -d JOBID

 

2、cron(周期性任务)

cron任务有两种:

  • 系统cron任务,由系统来维护作业

/etc/crontab

 

  • 用户cron任务

/var/spool/cron/

 

#启动服务

systemctl status crond.service

 

注意:

  • cron计划任务也是精确到分钟

 

2.1、创建一个任务

crontab -e

分钟 小时 日期 月 星期几 command

 

例1:

#每月,1号和15号,晚上8点到10点间,每隔5分钟,执行一次date命令

crontab -e

*/5 20-22 1,15 * * date

 

例2:

#以root用户身份,为student用户创建一个计划任务

crontab -e -u student

*/5 * * * * echo hello

 

注意:

  • 每个普通用户都可以创建自己的计划任务,只有root才可以为其它用户创建计划任务

  • 星期天才是一周的第一天,0代表星期天,1代表星期一,以此类推

  • 日月和星期不能同时出现

 

2.2、查看计划任务

#在这个目录下,以任务用户命名的文件

#cron执行完任务,不会自动删除文件

ls /var/spool/cron/

 

#列出等待中的任务

crontab -l

 

2.3、删除任务

#清空所有任务

crontab -r

 

#交互删除任务

crontab -ri

 

删除任务,同样以crontab -e进行编辑删除对应的行

 

2.4、日志

#检查cron日志记录

tail -f /var/log/cron

 

2.5、限制

#只要写在这个文件中的用户,无法编写计划任务,一个用户一行

/etc/cron.deny

 

#如果有这个文件,只有写到这个文件的用户才可以创建计划任务,其它用户不可创建

/etc/cron.allow

 

3、临时文件

  • 系统运行中,会产生大量的临时文件,需要定期清理

  • /tmp目录是受systemd-tmpfiles-setup这个服务控制管理的,它提供了一个命令行工具systemd-tmpfiles

  • 当系统启动时,systemd-tmpfiles-setup服务会先去读取它的配置文件,根据配置文件中的设定,使用sysetmd-tmpfiles --remove和systemd-tmpfiles --create命令分别去删除和创建/tmp目录下临时文件。

 

systemd-tmpfiles-setup服务的配置文件在哪儿呢?

#安装软件时产生的

/usr/lib/tmpfiles.d/*.conf 

 

#和进程相关的

/run/tmpfiles.d/*.conf 

 

#这里才是我们需要配置的地方,它的优先级最高。也就是说这里的配置会优先生效

/etc/tmpfiles.d/*.conf 

 

3.1、三个目录的优先级

/etc/tmpfiles.d/ > /run/tmpfiles.d/ > /usr/lib/tmpfiles.d/

 

怎么去自定义呢?

默认情况下,/etc/tmpfiles.d/下面的配置文件为空,所以需要拷贝一个实例文件过来

cp /usr/lib/tmpfiles.d/tmp.conf /etc/tmpfiles.d/

 

vim /etc/tmpfiles.d/tmp.conf

#如果/tmp/test这个目录不存,就创建这个目录,权限是777,如果存在,就删除/tmp/test目录下,10天以上未使用的文件

d /tmp/test 1777 root root 10d

 

#自动删除/var/tmp/test目录下30天以上未使用的文件

d /var/tmp/test 1777 root root 30d

 

所以,你也可以自己在/etc/tmpfiles.d/下面创建一个配置文件,执行单次任务,比如:删除/tmp/doc目录下180天以上都未使用过的文件

touch /etc/tmpfiles.d/doc.conf

 

vim /etc/tmpfiles.d/doc.conf

d /tmp/doc 0700 root root 180d

 

修改配置文件后,怎么执行呢?

systemd-tmpfiles --clean