Ssh

為什麼“頭”掛起而不終止?

  • March 2, 2012

我有一個 shell 腳本,它必須在遠端主機上找到最新的文件。我有一點:

ssh -q $HOSTNAME -t ls -t -1 /path/to/somewhere/ | head -n 1

它列印第一行,然後等待並且不終止。

但是,如果我刪除| head -n 1,那麼它將按順序列印所有文件,然後定期終止並將控制流返回到我的終端。所以 SSH 命令部分可以正常終止,但不能正常終止。這是怎麼回事?我如何讓頭部工作?

它掛起,因為它沒有得到任何輸入。嘗試只做 head -n 1 。

這將確保管道到頭部將發生在偽 tty

ssh -q $HOSTNAME -t "ls -t -1 /path/to/somewhere/ | head -n 1"

我不得不承認,在 Debian Squeeze 和 Ubuntu server 10.4 中我無法重現這一點。

注意提供更多資訊,例如沒有“-q”、發行版等。

怎麼樣

ssh -q $HOSTNAME -t "ls -t -1 /path/to/somewhere/" | head -n 1

引用自:https://serverfault.com/questions/365651