鉴于我找到了所有降价文件并将其保存为found.md
,然后安排一个自动任务以vscode打开found.md
find / -regex ".*\.pdf$" 2>/dev/null 1>found.md |
#later is peudocodes
at "code found.md" now + 10 minutes #how make this code working
找到文件并在忘记时自动检查它。 我该如何为命令设置计时器?
答案 0 :(得分:1)
您有两个问题。两者都在man at
中进行了描述:
对于批量生产,从标准输入中读取命令或 -f选项指定并执行的文件。工作目录,环境(变量除外,BASH_VERSINFO, DISPLAY ,EUID,GROUPS,SHELLOPTS,TERM,UID和_)和umask一直保留调用。
at
只能从管道或文件中读取命令。将命令指定为参数不起作用。您的at
在管道中,但是由于所有输出都已重定向,因此该管道为空。
at
不是用于打开图形程序的,但是您可以通过设置DISPLAY
变量使其起作用。
find / -regex '.*\.pdf$' 2>/dev/null 1>found.md
echo 'export DISPLAY=:0; code found.md' | at now + 10min
如果这不起作用,则可以使用sleep
代替at
:
sleep 600; code found.md
但是,使用sleep
必须保持终端处于打开状态。解决方法是,您可以使用nohup
:
nohup bash -c '(sleep 600; code found.md) &'
顺便说一句,您可以将-regex '.*\.pdf$'
替换为-name '*.pdf'
甚至是-iname '*.pdf'
。
答案 1 :(得分:1)
如果要使用at
安排命令,则必须将这些命令发送到其标准输入。在bash
和其他一些shell中,您可以执行以下操作:
at now + 30 minutes <<< "code found.md"
但是,在普通的sh
外壳中,您需要将命令管道放入at
:
echo "code found.md" | at now + 30 minutes
如果以交互方式使用外壳,也可以简单地启动at
并让其询问您的命令:
at now + 30 minutes # hit [ENTER] here to start `at` with a prompt
code found.md # enter your command and submit it with [ENTER]
# hit Ctrl+D to exit the prompt
PS:在所有示例中,code found.md
是您要计划的命令。