linux-ssh遠程后台執行腳本-放置后台執行問題(轉)


寫了一個監控負載的小腳本(死循環,測試結束后再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 ]; then
   echo $USAGE
   exit 1
fi

> /tmp/monitor/loadavg/146.20_loadavg_$2.log

while [[ 1=1 ]]
do
        uptime >> /tmp/monitor/loadavg/146.20_loadavg_$2.log
        sleep $1
done

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM