我的预定脚本不工作,这是我所尝试的:我有一个b.sh文件,包含以下内容:
#! /bin/bash
echo "hello, $USER"
我想尝试使用"at"命令,设置1分钟内的定时发送,示例:echo b.sh | at now + 1 minute
但是任何地方都没有执行…
我首先用atq
检查队列,并确认它正在等待下一分钟执行,但是一分钟后,任何地方都没有发生任何事情。
它是否在某处执行,而我没有在正确的地方寻找?我的印象是它应该在我眼前的终端中执行……
实际上,at
命令使用的进程是由atd
守护进程执行的。
atd
守护进程没有连接到您的终端。
但是,如果你想打印消息,你有两个解决方案:
- 将输出重定向到脚本开头的文件:
exec > /path/to/my_log/file.log
exec 2>&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"