linux下at命令实战

  • linux下at命令实战已关闭评论
  • 102 views
  • A+
所属分类:linux命令

安装

centos下:

yum install at

时间语法

1:能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00 

2:能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。

3:能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm 

4:能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2019-04-16 

5:能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 4 minutes 02pm + 5 days

6:能够直接使用today(今天)、tomorrow(明天)、weeks(周)来指定完成命令的时间。

参数实例

实例一

假如我想在3天后下午4点执行ls -al命令,如下:

 

[root@xubo etc]# at 4pm + 3 days
at> /bin/ls -al
at> (Ctrl+D)
job 1 at Thu Apr 18 16:00:00 2019
Can't open /var/run/atd.pid to signal atd. No atd running?

总结:如上,你会发现atd没有启动,原因是(要使用一次性计划任务时,我们的 Linux 系统上面必须要有负责这个计划任务的服务,那就是 atd 服务。)那么我们启动一下,

systemctl start atd.service

实例二

我想在明天下午1点执行ls -al命令,如下:

[root@xubo etc]# at 1am tomorrow
at> /bin/ls -al
at> (Ctrl+D)
job 2 at Tue Apr 16 01:00:00 2019

实例三

查看系统中没有执行的任务,命令如下:

atq

结果如下:

[root@xubo etc]# atq
1 Thu Apr 18 16:00:00 2019 a root
2 Tue Apr 16 01:00:00 2019 a root

实例四

删除任务,命令如下:

atrm 任务号

结果如下:

[root@xubo etc]# atq
1 Thu Apr 18 16:00:00 2019 a root
2 Tue Apr 16 01:00:00 2019 a root
[root@xubo etc]# atrm 1
[root@xubo etc]# atq
2 Tue Apr 16 01:00:00 2019 a root

实例五

显示任务内容,命令如下:

at -c 任务号

结果如下:

[root@xubo etc]# at -c 2
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_SESSION_ID=1; export XDG_SESSION_ID
HOSTNAME=xubo; export HOSTNAME
SELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTED
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=192.168.2.107\ 59379\ 22; export SSH_CLIENT
SELINUX_USE_CURRENT_RANGE=; export SELINUX_USE_CURRENT_RANGE
SSH_TTY=/dev/pts/0; export SSH_TTY
USER=root; export USER
LS_COLORS=rs=0:di=01\;34:.spx=01\;36:\*.xspf=01\;36:; export LS_COLORS
SSH_AUTH_SOCK=/tmp/ssh-S8gHaMeBnX/agent.2509; export SSH_AUTH_SOCK
MAIL=/var/spool/mail/root; export MAIL
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
PWD=/etc; export PWD
LANG=zh_CN.UTF-8; export LANG
SELINUX_LEVEL_REQUESTED=; export SELINUX_LEVEL_REQUESTED
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
HOME=/root; export HOME
LOGNAME=root; export LOGNAME
SSH_CONNECTION=192.168.2.107\ 59379\ 192.168.2.102\ 22; export SSH_CONNECTION
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
OLDPWD=/var/tmp; export OLDPWD
cd /etc || {
 echo 'Execution directory inaccessible' >&2
 exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER68e3f889'
/bin/ls -al

marcinDELIMITER68e3f889

安全问题

使用这个命令时,关于安全问题,官方给的文档是:

先寻找/etc/at.allow,写入这个文件的使用者能用,没有在此文件中的则不能使用(即使没有写在/etc/at.deny中),如果没有/etc/at.allow不存在,寻找/etc/at.deny文件,写在此文件中的使用者不能使用,而没有在此文件中的使用者,就可以使用,如果两个文件读不存在,那么只有root可以使用at命令。

每行一个,如:

[root@xubo etc]# more /etc/at.deny 
xubo
xubogood

这样这两个账户就不能使用at了。

 

  • 安卓客户端下载
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信公众号扫一扫
  • weinxin
avatar