Shell
執行命令立即執行腳本
我嘗試使用“at”命令在特定時間停止和啟動伺服器,但由於某種原因,腳本立即執行。我嘗試了不同的方法來做到這一點,但它總是會執行。我究竟做錯了什麼?我試著這樣做:
./stop | at 03:52 092421
像這樣:
./start | at 04:00 tommorow
我究竟做錯了什麼?
您正在呼叫
./stop
(或./start
)。不是at
立即執行腳本的人。是你。由
./stop | at …
您./stop
同時執行at
。這就是管道 (|
) 在外殼中的工作方式。的輸出./stop
轉到at
。_ 這不是你想要的。
at
期望一個命令(您想稍後執行)作為其標準輸入上的字元串。而不是./stop
你想要傳遞一個字元串的輸出,說./stop
. 管道傳輸字元串的基本方法是echo
:echo './stop' | at …
這將執行
echo
和at
. 後一個工具將獲取前一個工具的輸出。輸出實際上是./stop
. 這就是你想要的。