171029linux中的延时及定时任务

来源:互联网 发布:outlook邮箱的smtp端口 编辑:程序博客网 时间:2024/06/05 19:01

at延时任务

一、使用方法:

at 时间

>命令

>按ctrl +D退出

二、参数:

at  -l                       #列出延迟任务id

    -r           任务id       #删除此id的任务

    -m                       #让无输出的命令产生邮件

    -M                       #让有输出的命令不产生邮件

    -c           任务id       #查看此id的延迟任务的执行动作

    -f            文件        #用文件内记录的命令作为延迟任务的执行命令,可以延迟执行脚本

######################################

root@server1 ~]# at 09:05
at> echo hello<EOT>
job 5 at Thu Nov  2 09:05:00 2017
[root@server1 ~]# at -l
5    Thu Nov  2 09:05:00 2017 a root
[root@server1 ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 4 messages 1 new
    1 user@localhost.local  Thu Oct 19 11:01 1537/75459 "[abrt] full crash re"
    2 root                  Sun Oct 29 14:26  24/598   "Output from your job "
    3 root                  Thu Nov  2 08:56  15/506   "Output from your job "
>N  4 root                  Thu Nov  2 09:05  14/489   "Output from your job "
& 4
Message  4:
From root@server1.localdomain  Thu Nov  2 09:05:00 2017
Return-Path: <root@server1.localdomain>
X-Original-To: root
Delivered-To: root@server1.localdomain
Subject: Output from your job        5
To: root@server1.localdomain
Date: Thu,  2 Nov 2017 09:05:00 +0800 (CST)
From: root@server1.localdomain (root)
Status: R

hello

& q
Held 4 messages in /var/spool/mail/root
##################################
[root@server1 ~]# date
Thu Nov  2 09:08:24 CST 2017
[root@server1 ~]# at 10:00
at> echo abc<EOT>
job 6 at Thu Nov  2 10:00:00 2017
[root@server1 ~]# at -l
6    Thu Nov  2 10:00:00 2017 a root
[root@server1 ~]# at -r 6
[root@server1 ~]# at -l
#######################################

本来执行cd /mnt不会产生输出内容,但加上-m也会产生输出内容的邮件,只是为空罢了

[root@server1 ~]# at -m now+1min                                    #一分钟后执行
at> cd /mnt<EOT>
job 9 at Thu Nov  2 09:16:00 2017
[root@server1 ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 5 messages 1 new
    1 user@localhost.local  Thu Oct 19 11:01 1537/75459 "[abrt] full crash re"
    2 root                  Sun Oct 29 14:26  24/598   "Output from your job "
    3 root                  Thu Nov  2 08:56  15/506   "Output from your job "
    4 root                  Thu Nov  2 09:05  15/500   "Output from your job "
>N  5 root                  Thu Nov  2 09:16  13/483   "Output from your job "
& 5
Message  5:
From root@server1.localdomain  Thu Nov  2 09:16:01 2017
Return-Path: <root@server1.localdomain>
X-Original-To: root
Delivered-To: root@server1.localdomain
Subject: Output from your job        9
To: root@server1.localdomain
Date: Thu,  2 Nov 2017 09:16:00 +0800 (CST)
From: root@server1.localdomain (root)
Status: R


& q
Held 5 messages in /var/spool/mail/root
You have mail in /var/spool/mail/root
###########################################
[root@server1 ~]# at 10:00
at> cd /mnt<EOT>
job 11 at Thu Nov  2 10:00:00 2017
[root@server1 ~]# at -l
11    Thu Nov  2 10:00:00 2017 a root
[root@server1 ~]# at -c 11
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_SESSION_ID=1; export XDG_SESSION_ID
HOSTNAME=server1; export HOSTNAME
SELINUX_ROLE_REQUESTED=; export SELI

                   ...

三、at命令的使用控制

默认系统中全部用户 都有执行at命令的权力

1.用户黑名单

默认情况下,系统中是存在用户黑名单的,这个名单的路径

/etc/at.deny      ##用户黑名单,此名单默认为空,并且在白名单不存在时生效

 

vim /etc/at.deny

student     ##student使用at命令的权力被禁止

测试:

[root@server1 ~]# vim /etc/at.deny 

student
[root@server1 ~]# su - student
Last login: Tue Oct 31 23:03:04 CST 2017 on pts/0
[student@server1 ~]$ at 12:00
You do not have permission to use at.

2.用户白名单

默认系统中是不存在at的白名单的 
但是当白名单出现,系统用户除名单中出现的用户以及root 
其他用户均不能执行at命令

touch /etc/at.allow   #建立用户白名单,当白名单出现,黑名单失效

测试:

[root@server1 student]# touch /etc/at.allow

student
[root@server1 student]# vim /etc/at.allow
[root@server1 student]# su - student
Last login: Thu Nov  2 11:51:31 CST 2017 on pts/0
[student@server1 ~]$ at now+1min
at> cd /mnt<EOT>
job 12 at Thu Nov  2 11:58:00 2017
可以看到刚才黑名单中的student失效了

crontab定时任务

这个命令由crond.service 服务提供

写入程序的时间时永久保存的

一、使用方法

crontab -e -u 用户名称(-u 用户名可以不写,就表示使用当前用户)

内容格式:分   时   天   月   周   动作


crontab -l  #列出当前用户的cron任务,同样可以使用“-u 用户名称”方式

crontab -r  #删除当前用户的cron任务,同样可以使用“-u 用户名称”方式

/var/spool/cron/*          ##cron任务记录文件存放位置,不同用户的定时任务会有不同用户的名字文件。直接更改这个文件里面的内容和用crontab -e效果是一样的,crontab -e命令其实也只是打开了这个目录下的相应用户文件让你编辑而已。

测试:

[root@server1 ~]# ls /var/spool/cron/
root  student
[root@server1 ~]# cat /var/spool/cron/root
* * * * * touch /mnt/file1
[root@server1 ~]# cat /var/spool/cron/student
* * * * * touch /mnt/file2

二、crontab命令使用控制

1.用户黑名单

默认情况下,系统中只存在黑名单,当白名单被建立,黑名单失效

/etc/cron.deny   ##在此名单中的用户不能执行crontab

vim /etc/cron.deny

student           ##student用户不能执行crontab

我们可以看到/etc/cron.deny是默认存在的

2.白名单 
默认情况下,系统中只存在黑名单,当白名单被建立,黑名单失效

/etc/cron.allow   ##用户白名单,当此名单出现,除root用户及名单中的用户,其他用户不能执行crontab

touch /etc/cron.allow  ##建立白名单

我们可以看到,默认是没有/etc/cron.allow这个文件的

vim /etc/cron.allow
student           ##只有student和root用户可以执行crontab,并且会使黑名单里的student限制失效。

三、文件方式定义crontab

vim /var/spool/cron/用户名称      #以某个用户身份执行cron,文件名称必须与用户名称一致

分   时   天   月   周   动作

vim /etc/cron.d/文件             #设定多个用户身份cron

分   时   天   月   周   用户  动作

tip:测试时先删除黑白名单

测试:

vim /etc/cron.d/aaa             #aa这个文件名字随意

* * * * * root touch /tmp/rootfile* * * * * server1 touch /tmp/server1file
watch -n 1 ls -l /tmp/     #监控tmp目录下文件
1分钟之前:


1分钟之后:


可以看到,在aaa中配置的让哪个用户建立就会产生属于哪个用户名和组的文件。

原创粉丝点击