Linux功能-实施一次性任务

一、定义

at命令:定时任务,指定一个时间执行一个任务,只能执行一次。

二、选项

三、示例

1. 使用 student 用户,创建一个任务,2 分钟以后执行,在/home/student/at.txt(如果不存在,就创建)中追加一行,内容是 date 命令输出结果

[[email protected] ~]$ at now +2minutes
at> echo $(date) >> /home/student/at.txt
at> <EOT>
job 10 at Thu Nov 3 11:20:00 2016

2. 用 atq 检查 student 用户的任务列表,可看到上一步的任务

[[email protected] ~]$ atq
10 Thu Nov 3 11:20:00 2016 a student

3. 删除上一步创建的任务,并查看

[[email protected] ~]$ atrm 10
[[email protected] ~]$ atq
[[email protected] ~]$ 

4. 切换到root用户,创建root用户的一次性任务,打印“$USER $(date)”的输出追加 到/home/student/at.txt 文件中

然后回到 student 用户,用 atq 检查任务,他是无法看到 root(其他用户的)的任务的

[[email protected] ~]# at now +2minutes
at> echo $USER $(date) >> /home/student/at.txt
at> <EOT>
job 11 at Thu Nov  3 11:23:00 2016
[[email protected] ~]# su - student
Last login: Thu Nov  3 10:29:07 CST 2016 on pts/0
[[email protected] ~]$ atq
[[email protected] ~]$

5. student 也创建一个任务,2 分钟后执行,执行的操作和步骤 4 一样,现在 2 个用户(root和student)都有任务等待执行

[[email protected] ~]$ at now +2minutes
at> echo $USER $(date) >> /home/student/at.txt
at> <EOT>
job 12 at Thu Nov  3 11:26:00 2016
[[email protected] ~]$ 

6.用 root 用户执行 atq 检查任务,root 用户是可以看到所有用户的任务的

[[email protected] ~]# atq
11    Thu Nov  3 11:38:00 2016 a root
12    Thu Nov  3 11:39:00 2016 a student

7. 回到student用户,该用户只能查看自己的任务

[[email protected] ~]$ atq
12    Thu Nov  3 11:39:00 2016 a student

8 切换到 root 用户,删除前面创建的 2 个任务,确保 at 列表是空的

[[email protected] ~]# atrm 13
[[email protected] ~]# atrm 14
[[email protected] ~]# atq
[[email protected] ~]# 

9. 使用 student 用户,创建一个任务,在今年的 12 月 31 日,上午 10 点,执行 reboot 命令

[[email protected] ~]$ at 10am Dec 31 2016
at> reboot
at> <EOT>
job 15 at Sat Dec 31 10:00:00 2016
[[email protected] ~]$ 

10. 使用 student 用户,创建一个任务,10 小时后执行,重启 sshd 服务

[student[email protected] ~]$ at now +10hours
at> systemctl restart sshd
at> <EOT>
job 16 at Thu Nov  3 21:41:00 2016
[[email protected] ~]$ 

11. 使用 student 用户,创建一个任务,3 天后的下午 10 点执行,重启 rsyslogd 服务

[[email protected] ~]$ at 10pm +3days
at> systemctl restart rsyslogd.service
at> <EOT>
job 17 at Sun Nov  6 22:00:00 2016
[[email protected] ~]$ 

12. 使用 student 用户,创建一个任务,2016 年 12 月 31 日(用 MMDDCCYY 表示)的 23: 59 分,执行 poweroff 命令

[[email protected] ~]$ at 23:59 12312016
at> poweroff
at> <EOT>
job 18 at Sat Dec 31 23:59:00 2016
[[email protected] ~]$ 

13. 检查最后一个任务的执行脚本,看到最后的 shell 命令即可

[[email protected] ~]$ at -c 18
#!/bin/sh
# atrun uid=1000 gid=1000
# mail root 0
umask 2
XDG_VTNR=1; export XDG_VTNR
XDG_SESSION_ID=1; export XDG_SESSION_ID
HOSTNAME=desktop1.example.com; export HOSTNAME
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
USER=student; export USER
LS_COLORS=rs=0:di=38\;5\;27:ln=38\;5\;51:mh=44\;38\;5\;15:pi=40\;38\;5\;11:so=38\;5\;13:do=38\;5\;5:bd=48\;5\;232\;38\;5\;11:cd=48\;5\;2...8\;5\;45:\*.oga=38\;5\;45:\*.spx=38\;5\;45:\*.xspf=38\;5\;45:; export LS_COLORS
MAIL=/var/spool/mail/student; export MAIL
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/student/.local/bin:/home/student/bin; export PATH
PWD=/home/student; export PWD
LANG=en_US.UTF-8; export LANG
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
XDG_SEAT=seat0; export XDG_SEAT
HOME=/home/student; export HOME
LOGNAME=student; export LOGNAME
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
cd /home/student || {
     echo ‘Execution directory inaccessible‘ >&2
     exit 1
}
${SHELL:-/bin/sh} << ‘marcinDELIMITER5d48d7d0‘
poweroff

marcinDELIMITER5d48d7d0

14. 检查/var/spool/at 目录也能看到上面的脚本

[[email protected] ~]# ll /var/spool/at/
total 16
-rwx------. 1 student student 2972 Nov  3 11:40 a0000f01792f38
-rwx------. 1 student student 2988 Nov  3 11:41 a000100177ebb5
-rwx------. 1 student student 3000 Nov  3 11:42 a000110177fca8
-rwx------. 1 student student 2974 Nov  3 11:46 a000120179327f
drwx------. 2 daemon  daemon     6 Nov  3 11:26 spool
[[email protected] ~]# 

15. 创建一个 y 队列的任务,时间是 3 分钟后(用确切时间如 11:55 表示),向/home/student/at.txt 文件追加 Y 字符

[[email protected] ~]# at -q y 11:55
at> echo Y >> /home/student/at.txt
at> <EOT>
job 19 at Thu Nov  3 11:55:00 2016

16. 创建一个 x 队列的任务,时间和上一步任务的时间完全一样,向/home/student/at.txt 文件追加 X 字符,模拟同一时刻有 2 个任务需要执行

[[email protected] ~]# at -q x 11:55
at> echo X >> /home/student/at.txt
at> <EOT>
job 20 at Thu Nov  3 11:55:00 2016

17. 用 atq 检查 2 个任务,确认时间是一样的,队列分别是 y 和 x

[[email protected] ~]# atq
15    Sat Dec 31 10:00:00 2016 a student
16    Thu Nov  3 21:41:00 2016 a student
17    Sun Nov  6 22:00:00 2016 a student
18    Sat Dec 31 23:59:00 2016 a student
19    Thu Nov  3 11:55:00 2016 y root
20    Thu Nov  3 11:55:00 2016 x root

18. 等到 x 和 y 队列的 2 个任务执行后(过了他们的执行时间),用 tail 命令检查 /home/student/at.txt 文件,看到 X 在上面,

Y 在下面,说明先执行的 x 队列后执行 y 队 列(同一时刻有 2 个任务,队列的字母排在前面的先执行)

[[email protected] ~]# tail /home/student/at.txt
root Thu Nov 3 11:23:00 CST 2016
X
Y
[[email protected] ~]# 

19. 用 root 用户,编辑/etc/at.deny , 使 student 用户没有创建一次性任务的权限

[[email protected] ~]# echo "student" >> /etc/at.deny
[[email protected] ~]# su - student
Last login: Thu Nov  3 11:40:00 CST 2016 on pts/0
[[email protected] ~]$ at now +3hours
You do not have permission to use at.
[[email protected] ~]$ 

20. 用 root 用户,创建和边界/etc/at.allow ,授予 student 用户创建一次性任务的权限,

现在 student 是可以用 at 命令的,因为 at.allow 优先于 at.deny

[[email protected] ~]# echo "student" >> /etc/at.allow
[[email protected] ~]# su - student
Last login: Thu Nov  3 12:33:24 CST 2016 on pts/0
[[email protected] ~]$ at now +3hours
at> <EOT>
job 22 at Thu Nov  3 15:34:00 2016
[[email protected] ~]$ 
时间: 2024-08-24 01:28:41

Linux功能-实施一次性任务的相关文章

linux-裁剪Linux功能,编译/bin/login, busybox编译linux

linux功能:终端提示信息 [[email protected] ~]# cat /etc/issueRed Hat Enterprise Linux Server release 5.8 (Tikanga)Kernel \r on an \m [[email protected] ~]# uname -r2.6.18-308.el5[[email protected] ~]# uname -mx86_64[[email protected] ~]# linux功能:用户 nsswitch:

Linux Token Auth 一次性密码认证

Linux Token Auth 一次性密码认证 http://netkiller.github.io/journal/token.html Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 +86 755 29812080 <[email protected]> Mr. 曾 祥建, Android 手机端开发 中国广东省深圳市南山区 +86 18665871161 <[em

结合linux功能实例理解软中断、tastlet以及工作队列

本文基于Linux2.6.32内核版本. 软中断.tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的"下半部"(bottom half)演变而来.下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者. 介绍这三种下半部实现之前,有必要说一下上半部与下半部的区别. 上半部指的是中断处理程序,下半部则指的是一些虽然与中断有相关性但是可以延后执行的任务.举个例子:在网络传输中,网卡接收到数据包这个事件不一定需要马

Linux功能-使用YUM管理软件包

 一.概念 YUM,全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装. 二.实例 1. 使用yum 命令显示所有软件存储库信息 [[email protected] ~]# yum repolist Loaded plugins: langpacks Packa

Linux功能-文件权限&amp;目录权限

linux系统一切都是文件,文件和目录的所属与权限--来分别规定所有者.所有组.其余人的读.写.执行权限. 读(read),写(write),执行(excute)简写为(r.w.x),也可以以用(4.2.1)来代替表示: 其中,需要注意的事普通文件的权限与目录的权限区别:

Linux功能-VIM编辑器

vim,linux系统中一款超好用的文本编辑器,是vi的升级版. 三种操作模式 命令模式: 控制光标移动,可对文本进行删除.恢复.黏贴等工作 输入模式: 正常的文本录入 末行模式: 保存,退出与设置编辑环境

Linux功能-远程文件传输

linux系统中,难免会遇到一些要将某文件通过网络传送给其他主机的情况,而恰好两台主机 都是linux系统的时候,我们就可以直接使用scp命令来传输文件到另一台主机了. scp命令用于在网络中安全的传输文件,格式为: scp [参数] 本地文件 远程账户@远程IP地址:远程目录

linux功能概述及目录介绍

一:功能介绍: cd:切换目录  (cd. 切换到当前目录 :cd ..切换到上级目录) ls:查看当前目录      -l查看当前目录的详细信息(=ll)   -a查看隐藏文件 useradd :新建用户名 passwd:新建密码 up - :转移用户名 pwd:确定目录 cd~:切换到家目录下 cd -:返回上一次切换的目录 cp:拷贝文件    -r拷贝文件或目录 alias :查看命令别名 如cp=cp -i mv:剪切,有时可以改文件名(相同目录下移动,可以改名) mkdir:创建目录

Linux功能-配置网卡连接网络

本实验需要两台虚拟机来完成,环境如下: 主机名称 操作系统 ip地址 本地主机 RHEL7_64 192.168.157.128 远程主机 CentOS 64 192.168.129.128 如下图所示: