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