我在队列中有一系列待处理的工作,
$ atq
8 Mon Oct 29 13:21:00 2018
5 Mon Oct 29 10:36:00 2018
15 Mon Oct 29 13:31:00 2018
4 Mon Oct 29 10:35:00 2018
18 Mon Oct 29 15:55:00 2018
3 Mon Oct 29 10:31:00 2018
16 Mon Oct 29 15:54:00 2018
11 Mon Oct 29 13:24:00 2018
12 Mon Oct 29 13:24:00 2018
17 Mon Oct 29 15:53:00 2018
10 Mon Oct 29 13:23:00 2018
19 Tue Oct 30 15:43:00 2018
2 Mon Oct 29 07:41:00 2018
6 Mon Oct 29 10:41:00 2018
7 Mon Oct 29 13:20:00 2018
9 Mon Oct 29 13:22:00 2018
并计划在 10 月 29 日移除他们的工作。幸运的是,atrm 可以移除多个工作
atrm 8 5 15 4
尽管如此,迭代可能是更好的解决方案,
$ atq | grep "Oct 29"
18 Mon Oct 29 15:55:00 2018
3 Mon Oct 29 10:31:00 2018
16 Mon Oct 29 15:54:00 2018
11 Mon Oct 29 13:24:00 2018
12 Mon Oct 29 13:24:00 2018
17 Mon Oct 29 15:53:00 2018
10 Mon Oct 29 13:23:00 2018
2 Mon Oct 29 07:41:00 2018
6 Mon Oct 29 10:41:00 2018
7 Mon Oct 29 13:20:00 2018
9 Mon Oct 29 13:22:00 2018
我如何选择工作编号的第一个字段以迭代它们?
这将打印包含字符串的作业的作业 ID
Oct 29
。代码所做的
awk
是将给定的正则表达式与每个输入行进行匹配,并且对于匹配的行,它会在行上打印第一个以空格分隔的字段(作业 ID)。将这个短管道的结果传递给
xargs atrm
将删除作业:该
xargs
实用程序从其标准输入流中读取,并使用参数 read 执行给定的实用程序。如果有很多参数(在这种情况下可能不是),xargs
可能会多次执行该实用程序。您可以通过管道
atq
输出并对其进行一些处理:正在做什么:
Oct 29
来自atq
输出的grepcut
仅使用并假设空格作为分隔符选择第一个字段tr
这仅在
at
一行上为您提供工作编号,然后可以作为您的输入atrm
。通过仅使用仅列出作业 ID 来预测试选择