我有一個在後臺運行的腳本。它打開到服務器的SSH連接並無限期地尾隨文件。當我讓我的Mac進入睡眠狀態時,SSH連接關閉。這是有問題的腳本:在ZSH/OS X中只運行在後臺運行的腳本的一個實例
#!/bin/sh
(ssh <user>@<ip> -o PermitLocalCommand=no \
": > .irssi/fnotify ; tail -f .irssi/fnotify " | \
while read heading message; do \
growlnotify -s -t "${heading}" -m "${message}"; \
done)&
在這一點上,我不得不跑ps aux | grep ssh
,找到合適的工藝和手工殺死它;這很乏味。所以,我有幾個問題和可能的答案:
- 有沒有辦法重命名腳本的進程名,這樣我可以通過名字,每次我再次運行它殺了它?
- 否則,當我執行它時,是否存在腳本的
pid
,然後在我再次運行時將其殺死?
第一個解決方案是不可能的我相信,但它值得問。
對於第二個方案,我做了一些研究,我去的地方,但還不夠遠......這是我有:
我設法拿到劇本本身的pid
特定的不是一個SSH連接。但從我所看到的腳本的pid
始終是<pid of ssh connection> - 1
。
所以我需要在腳本的pid
中加1,但我無法做到這一點。但無論如何, 是一個可行的解決方案?
否則,請問有哪些替代解決方案?
我不知道,但使用'-o ServerAliveInterval = 0'可以保持連接,只要客戶端過程亦不是被殺。 – chepner