linux - 使用 at 命令(预定脚本)运行 bash 脚本不起作用
问题描述
我的预定脚本不起作用这是我尝试过的:我有一个 b.sh 文件,其中包含以下内容:
#! /bin/bash
echo "hello, $USER"
我想尝试在 1 分钟内使用“at”命令进行预定发送,如下所示echo b.sh | at now + 1 minute
,但任何地方都没有执行任何操作......
我首先检查了队列atq
并确认它正在等待下一分钟执行,但一分钟后,任何地方都没有发生任何事情。
它是否在某个地方执行而我没有在正确的地方寻找?我的印象是它应该在我眼前的终端中执行......
解决方案
实际上,与at
command 一起使用的进程是由atd
daemon 执行的。
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"
推荐阅读
- angular - Angular 不想从另一个表中检索数据
- php - 使用 Web 服务器时,用于存储来自 php 函数的照片的文件夹的正确路径是什么?
- javascript - 如何在角度 9 中使用 print.js 打印多个 PDF
- javascript - 赛普拉斯:test runner一旦测试失败就停止,即使中途测试失败,我们还能继续测试吗?
- symfony - 如何禁用 Symfony 5 类缓存以进行本地调试?
- selenium - 在 selenium 中具有多个条件的软断言
- sql - 简单的 SQL 数据透视
- python - Selenium Webdriver 和 Jupyter Notebook。find_elements_by_xpath 不在同一个单元格中工作
- python - 将数据框对象转换为 int64 时出错
- elasticsearch - 在 Linux 上增加 Elastic Search 的磁盘分配