![at & rm - 在管道之前执行的命令](https://linux22.com/image/173055/at%20%26%20rm%20-%20%E5%9C%A8%E7%AE%A1%E9%81%93%E4%B9%8B%E5%89%8D%E6%89%A7%E8%A1%8C%E7%9A%84%E5%91%BD%E4%BB%A4.png)
系统:红帽7.8
目标:我有一个 bash 脚本,它将文件下载到名为“logs”的文件夹中以供短时间查看,并且在一天结束时删除它们。
我尝试过的:
rm -rfd logs | at 6pm
什么不起作用:
上面的代码在rm
通过管道传输到命令之前执行命令at
,并且我从未看到我下载的文件。
答案1
命令
rm -rfd logs | at 6pm
执行rm -rfd logs
立即地,并将其标准输出(可能没有)传输到at 6pm
.
相反,您需要将字符串输出rm -rfd logs
到标准输出 - 这些方法中的任何一种都可以:
键入
at 6pm
,然后点击ENTER,然后键入rm -rfd logs
,再次点击ENTER,然后CTRL+D$ at 6pm warning: commands will be executed using /bin/sh at> rm -rfd logs at> <EOT> job 13 at Wed May 13 18:00:00 2020
与上面类似,但使用这里的文档
at 6pm <<END_AT rm -rfd logs END_AT
一个简单的
echo
或printf
printf -- 'rm -rfd logs' | at 6pm
答案2
需要echo "rm -rfd logs" | at 6pm
来源: https://www.howtoing.com/linux-cron-alternative-at-command-to-schedule-tasks/