解決這個問題的一種方法是創建一個連續檢查與主機連接的守護進程。
這樣做,這樣涉及創建兩個文件
- 其中執行ping主機的腳本
/usr/local/bin/checkconnection.sh
- 守護程序文件
/etc/init.d/checkconnectiond
創建守護進程文件:
$ sudo touch /etc/init.d/checkconnectiond $ sudo nano /etc/init.d/checkconnectiond
並粘貼以下:
# !/bin/sh
# /etc/init.d/checkconnectiond
### BEGIN INIT INFO
# Provides: checkconnectiond
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Script for checking connection for remote desktop
# Description: Script for checking connection for remote desktop
### END INIT INFO
case "$1" in
start)
while sleep 30; do (/usr/local/bin/checkconnection.sh &) ; done
;;
stop)
killall checkconnectiond -q
;;
*)
echo "Usage: /etc/init.d/checkconnectiond {start|stop}"
exit 1
;;
esac
exit 0
創建腳本:
$ sudo nano /usr/local/bin/checkconnection.sh
腳本:
if ping -c 1 host_ip &> /dev/null
then
# do nothing, host is up
else
killall remotedesktop-pid
fi
記住要改變host_ip
和remotedesktop-pid
。您可以使用killall
時使用的進程名,因此,如果它被稱爲「RDP」你可以做killall rdp
現在我們得到了一個守護進程啓動樹莓時將自動啓動。該守護進程每30秒運行一次checkconnection.sh
。 checkconnection.sh
腳本對主機運行ping命令。如果ping不成功,則會終止遠程桌面進程,因此用戶必須手動重新啓動它。
來源:
來源
2016-09-16 12:50:20
KEK
這聽起來像你想要一個小patc h以避免遇到更大的問題。我建議你找到一種方法來確保這樣的問題不會發生,而不是清理造成的混亂。 – x13
那麼,你是對的,它不應該斷開,永遠。但有時會發生,即使我們修復了連接。 – Drake
我同意@ThisNameBetterBeAvailable。但是,如果您需要使用bash腳本的快速解決方案,我會定期ping,例如每15-30秒一個數據包以避免氾濫 –