寫了一個監控負載的小腳本(死循環,測試結束后再kill對應進程),因需要監控多臺服務器,所以在一臺服務器上使用ssh統一執行腳本
遇到問題:
使用ssh root@172.16.146.20 '/usr/local/luly/loadavg.sh 2 2 &'執行
本機沒有即時退出,占用ssh連接
本意是發送命令到遠程機執行,本機發送后直接退出
嘗試:
1、增加nohup,效果相同:
ssh root@172.16.146.20 'nohup /usr/local/luly/loadavg.sh 2 2 &'
2、增加網絡上說的-t 、 -tt 參數,也沒有用
ssh -t root@172.16.146.20 '/usr/local/luly/loadavg.sh 2 2 &'
ssh -tt root@172.16.146.20 '/usr/local/luly/loadavg.sh 2 2 &'
3、去掉引號,本機也在后臺運行,占用ssh連接,必須手動kill才行,非我所想
ssh root@172.16.146.20 /usr/local/luly/loadavg.sh 2 2 &
最終解決方案:
增加>/dev/null 2>&1,本機即時退出,沒有進程遺留,遠程后臺執行腳本,達到目的
ssh root@172.16.146.20 '/usr/local/luly/loadavg.sh 2 2 >/dev/null 2>&1 &'
監控負載腳本:
# cat loadavg.sh #!/bin/bash USAGE="Usage: $0 second filename"if [ $# -ne 2 ]; thenecho $USAGEexit 1 fi> /tmp/monitor/loadavg/146.20_loadavg_$2.logwhile [[ 1=1 ]] douptime >> /tmp/monitor/loadavg/146.20_loadavg_$2.logsleep $1 done
?