如何打印 at 作业的内容?

che*_*che 50 linux unix command-line-interface at

我有一个 Debian 盒子,里面有一些使用at. 我知道我可以使用 列出他们的工作时间atq,但是除了偷看之外,还有什么方法可以打印出他们的内容/var/spool/cron/atjobs吗?

Jan*_*nen 51

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 
Run Code Online (Sandbox Code Playgroud)

可能有一种更短的方法可以做到这一点,我只是把它从我的脑海中弹出:)

  • `at -c $(atq | cut -f 1)` 或 `for each in $(atq | cut -f 1)` 将避免“无法找到 jobid”错误。(此外,Bash 有 `for ((each=1; each<=MAXJOB; each++))` 所以不需要 `seq`。如果你关心可移植性,那么`#!/bin/sh`。) (7认同)

小智 9

基于先前的响应,这列出了每个作业的行,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
Run Code Online (Sandbox Code Playgroud)

生产,例如

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
Run Code Online (Sandbox Code Playgroud)