我有一台 Debian 机器,里面有一些使用 安排的作业at
。我知道我可以使用 列出作业及其时间atq
,但除了查看 之外,还有其他方法可以打印出它们的内容/var/spool/cron/atjobs
吗?
答案1
at -c jobnumber
将列出单个作业。如果你想查看所有作业,你可以创建一个脚本,例如
#!/bin/bash
MAXJOB=$(atq | head -n1 | awk '{ print $1; }')
for each in $(seq 1 $MAXJOB); do echo "JOB $each"; at -c $each; done
可能有一个更短的方法可以做到这一点,我只是突然想到的:)
答案2
基于先前的回复,以下列出了每个作业的行,atq
显示作业编号和计划时间,然后仅显示要运行的命令,按时间顺序排序(而不是按作业编号排序):
for j in $(atq | sort -k6,6 -k3,3M -k4,4 -k5,5 |cut -f 1); do atq |grep -P "^$j\t" ;at -c "$j" | tail -n 2; done
生产,例如
48 Fri Mar 10 15:13:00 2017 a root
/usr/local/bin/a-command
47 Fri Mar 10 15:14:00 2017 a root
/usr/local/bin/another-command
答案3
一种更简单的方法:
for j in $(atq | cut -f 1); do at -c "$j"; done
您还可以依次查看每一个less
,这可能会更清楚:
for j in $(atq | cut -f 1); do at -c "$j" | less; done
答案4
这是另一种方法,与本线程中的其他方法类似,但更多地使用 awk:
atq | awk '{ print "at -c " $1 }' | bash
要进行“试运行”并查看将执行什么,只需从末尾删除“| bash”部分。