Output

為什麼這個“at”命令不列印到標準輸出?

  • September 14, 2018

我是一個相對的Linux新手。我正在嘗試學習如何使用at,以便我可以安排任務在以後開始,而無需使用sleep. 我一直在看這個以前的問題尋求幫助。

我的問題是,在我創建的以下範例 bash 腳本中,為什麼**“正在執行”**從來沒有——據我所知——列印到標準輸出(即我的 bash 控制台)?

#!/bin/bash

echo "Started"

at now + 1 minutes <<EOF
echo "Running"
EOF

echo "Finished"

我看到的唯一輸出是,例如:

Started
warning: commands will be executed using /bin/sh
job 3 at Fri Jul 12 17:31:00 2013
Finished

警告中是否找到了我的問題的答案?如果是這樣,/bin/sh與標準輸出有何不同?

因為at不會在您登錄的使用者會話的上下文中執行命令。這個想法是您可以安排一個命令在任意時間執行,然後註銷,系統將在指定時間執行該命令。

請注意,手冊頁at(1)特別說明(我的重點):

如果有的話,使用者將收到來自他的命令的標準錯誤和標準輸出。郵件將使用命令 /usr/sbin/sendmail 發送。

因此,您應該檢查您的本地郵件假離線,或者如果失敗,則檢查本地系統郵件日誌。/var/spool/mail/$USER 可能是一個不錯的起點。

另請注意,“開始”和“完成”源自外部腳本,並且它們本身與根本無關at。您可以取出它們或at呼叫,您將獲得基本相同的結果。

引用自:https://unix.stackexchange.com/questions/82835