为什么我在终端中的 "at" 命令不起作用?
Why is my "at" command in terminal not functioning?
我正在尝试使用 echo "haha" | at 20:30
让我的命令在几分钟内执行。
但是命令永远不会执行:
$ date
Tue 3 Feb 2015 20:47:22 AST
$ echo "test" | at 20:48
job 5 at Tue Feb 3 20:48:00 2015
$ date
Tue 3 Feb 2015 20:48:05 AST
我做错了什么?
你的命令:
echo "test" | at 20:48
告诉 at
不带参数执行命令 test
。它是 shell 内置的 运行s,但失败了。尝试:
test
echo $?
它对我产生1
,表示失败。
你可能想到了这样的东西:
echo "echo test" | at 20:48
现在您只需要知道输出的去向。 /dev/null
是一个合理的猜测。所以,试试:
echo "echo test > /tmp/x39.214" | at 20:48
然后,当 20:48(或您选择的新时间)结束时,查找文件 /tmp/x39.214
以包含行 test
.
at
命令读取其标准输入以执行一系列命令。它们与您的环境 运行 相关,但没有连接终端(因此 /dev/null
是标准输入、输出、错误——或者,如果不是,您将在电子邮件中获得输出) .因此,您的命令必须安排将其输出存储在您可以找到的地方。像 /tmp/x39.214
这样的固定名称不是一个好主意,但您需要能够确定文件的位置和名称。通常,名称会包含一个时间。
因为at
读取标准输入,你可以用任何你喜欢的方式重定向标准输入,使用这里的文档,或者这里的字符串,或者来自文件,或者使用管道,仅列举四种机制.
$ echo "echo test >/tmp/x39.214" > file1.txt
$ at 20:48 < file1.txt
$ at 20:48 <<'EOF'
> echo test >/tmp/x39.214
> EOF
$ at 20:48 <<< 'echo test >/tmp/x39.214'
$ cat file1.txt | at 20:48
$
我已经省略了上面每个命令的 at
的输出。
您可以使用 at -l
列出职位并查看 运行。
常规用法更像是:
at 20:48 <<'EOF'
echo "test" >/tmp/hello_world
EOF
在预定的时间过后检查/tmp/hello_world
。
在这种情况下,您发送到 at
命令的标准输入的是整个文档 -- <<'EOF'
和以下 EOF
之间的所有内容。
我正在尝试使用 echo "haha" | at 20:30
让我的命令在几分钟内执行。
但是命令永远不会执行:
$ date
Tue 3 Feb 2015 20:47:22 AST
$ echo "test" | at 20:48
job 5 at Tue Feb 3 20:48:00 2015
$ date
Tue 3 Feb 2015 20:48:05 AST
我做错了什么?
你的命令:
echo "test" | at 20:48
告诉 at
不带参数执行命令 test
。它是 shell 内置的 运行s,但失败了。尝试:
test
echo $?
它对我产生1
,表示失败。
你可能想到了这样的东西:
echo "echo test" | at 20:48
现在您只需要知道输出的去向。 /dev/null
是一个合理的猜测。所以,试试:
echo "echo test > /tmp/x39.214" | at 20:48
然后,当 20:48(或您选择的新时间)结束时,查找文件 /tmp/x39.214
以包含行 test
.
at
命令读取其标准输入以执行一系列命令。它们与您的环境 运行 相关,但没有连接终端(因此 /dev/null
是标准输入、输出、错误——或者,如果不是,您将在电子邮件中获得输出) .因此,您的命令必须安排将其输出存储在您可以找到的地方。像 /tmp/x39.214
这样的固定名称不是一个好主意,但您需要能够确定文件的位置和名称。通常,名称会包含一个时间。
因为at
读取标准输入,你可以用任何你喜欢的方式重定向标准输入,使用这里的文档,或者这里的字符串,或者来自文件,或者使用管道,仅列举四种机制.
$ echo "echo test >/tmp/x39.214" > file1.txt
$ at 20:48 < file1.txt
$ at 20:48 <<'EOF'
> echo test >/tmp/x39.214
> EOF
$ at 20:48 <<< 'echo test >/tmp/x39.214'
$ cat file1.txt | at 20:48
$
我已经省略了上面每个命令的 at
的输出。
您可以使用 at -l
列出职位并查看 运行。
常规用法更像是:
at 20:48 <<'EOF'
echo "test" >/tmp/hello_world
EOF
在预定的时间过后检查/tmp/hello_world
。
在这种情况下,您发送到 at
命令的标准输入的是整个文档 -- <<'EOF'
和以下 EOF
之间的所有内容。