linux的at定时任务的使用
使用at只能执行一次性任务;
使用at命令需要开启atd进程。
以下情况需要安装at命令:
情况1、查看是否开启atd进程:ps -ef | grep atd。
[test@localhost init.d]$ ps -ef | grep atd
test 1599 1431 0 14:39 pts/0 00:00:00 grep --color=auto atd
结果只有一行,没有显示atd命令的位置信息,需要安装at命令,
情况2、使用at命令时显示:
bash: at: 未找到命令
安装at命令:
yum -y install at。
设置自动启动at命令:
chkconfig --level 35 atd on。
启动atd进程:
service atd start。
如果在使用at命令后,报如下错误:
Can't open /var/run/atd.pid to signal atd. No atd running?
意思是atd进程没有运行,需要执行启动atd进程命令:
service atd start。
再次查看atd进程的结果:ps -ef | grep atd。
root 1652 1 0 14:59 ? 00:00:00 /usr/sbin/atd -f
test 1664 1431 0 14:59 pts/0 00:00:00 grep --color=auto atd
开启命令:/etc/init.d/atd start或者restart(也可以使用service命令)。
查询任务:atq。
命令参数:
-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V显示版本信息
-q<> 使用指定的队列
-t<> 以时间参数的形式提交要运行的任务
示例:指定时间来执行ls命令
[test@localhost ~]$ at 14:55 2018-10-09
at> date > 123.txt //这里是输入要执行的命令或文件,
//使用ctrl+backspace键才能删除,
at> <EOT> //使用ctrl+D输入结束。
job 5 at Tue Oct 9 14:55:00 2018
使用atq查询:
[test@localhost /]$ atq
2 Tue Oct 9 14:53:00 2018 a test
5 Tue Oct 9 14:55:00 2018 a test
使用at -c 编号,查看内容:
[test@localhost /]$ at -c 2
使用atrm删除:
[test@localhost /]$ atrm 2
示例:三天后的下午5点执行/bin/ls
at 5pm+3 days
at> /bin/ls
如果不希望某些账号使用at命令,可以在/etc/at.deny文件中写入禁止的
用户名。