使用at命令运行bash脚本(计划脚本)不工作



我的预定脚本不工作,这是我所尝试的:我有一个b.sh文件,包含以下内容:

#! /bin/bash
echo "hello, $USER"

我想尝试使用"at"命令,设置1分钟内的定时发送,示例:echo b.sh | at now + 1 minute但是任何地方都没有执行…

我首先用atq检查队列,并确认它正在等待下一分钟执行,但是一分钟后,任何地方都没有发生任何事情。

它是否在某处执行,而我没有在正确的地方寻找?我的印象是它应该在我眼前的终端中执行……

实际上,at命令使用的进程是由atd守护进程执行的。

atd守护进程没有连接到您的终端。

但是,如果你想打印消息,你有两个解决方案:

  1. 将输出重定向到脚本开头的文件:
exec > /path/to/my_log/file.log
exec 2>&1
  1. 在bash的TTY上写入:

执行at命令:

echo "FATHER_TTY=$(tty) ./b.sh" | at now + 1 minute

以及./b.sh脚本的内容:

#! /bin/bash
exec > "${FATHER_TTY}"
exec 2>&1
echo "hello, $USER"