我尝试使用“at”命令在特定时间停止和启动服务器,但由于某种原因脚本立即运行。我尝试了不同的方法来做到这一点,但它总是会运行。我究竟做错了什么?我尝试这样做:
./stop | at 03:52 092421
像这样:
./start | at 04:00 tommorow
答案1
我究竟做错了什么?
您正在调用./stop
(或./start
)。不是at
谁立即运行脚本。是你。
由./stop | at …
你./stop
同时奔跑at
。这就是管道 ( |
) 在 shell 中的工作原理。这输出从./stop
到at
。这不是你想要的。
at
期望命令(您想要稍后运行)作为其标准输入上的字符串。而不是./stop
你想要传递的输出细绳说的是./stop
。对字符串进行管道传输的基本方法是echo
:
echo './stop' | at …
这将运行echo
并且at
.后一个工具将采用前一个工具的输出。输出实际上是./stop
.这就是你想要的。