我制作了一个名为的 bash 脚本test.sh
,其中包含以下内容:
#!/#bin/bash
echo "Done!"
我输入bash test.sh | at 1549
:
myusername@machine:path$ bash test.sh | at 1549
warning: commands will be executed using /bin/sh
job 4 at Fri Sep 3 15:49:00 2021
myusername@machine:path$ date
Fri Sep 3 15:48:22 EDT 2021
myusername@machine:path$ date
Fri Sep 3 15:49:12 EDT 2021
为什么显示脚本没有执行?是不是因为我的shell是bash,如下图?
myusername@machine:path$ echo $SHELL
/bin/bash
答案1
您正在立即执行脚本,并安排它的输出由 执行at
。不用说这会失败。
我想你想要的是这个
#!/bin/bash
echo "Done!"
假设您已将其写入一个名为myscript
.
使其可执行:
chmod a+x myscript
然后将其排队等待 15:49 执行并捕获输出myscript.log
(如果您没有捕获输出,它将通过电子邮件发送到您的本地 UNIX/Linux 帐户,或者如果根本没有安装邮件子系统,那么它就会被丢弃):
at 1549 <<'X'
./myscript > myscript.log 2>&1
X
答案2
通过系统执行的命令的任何输出at
都通过电子邮件发送。
其次,当它们被执行时,它已经与您当前的 tty 解除关联,因此无法与其交互,即使您想要它。