2016-07-29 44 views
0

這是我從機1啓動機器2(遠程)我的腳本代碼退出主機上運行的shell腳本

#!/bin/bash 
nohup perl server.pl & 
echo "script ends" 
exit 

文件server.pl在,而(1)種運行循環永遠聽着插座。

我現在面臨的問題是:當我調用這個腳本後,我遠程啓動這個shell腳本,我在啓動這個shell腳本的文件裏面做了其他的工作。 如:

#this script launches the shell script 
$cmd = "sabkuch.sh"; 
$ssh->system($cmd);#using Openssh perl package to remotely run commands 
#do some other processing 
print "Welcome to USA\n"; 

當運行上面的代碼,我無法打印語句,直到我給按Ctrl-C

如果我在機器2本身上啓動這個shell腳本(無需從機器1遠程啓動它),我得到期望的結果,我不知道我要去哪裏錯誤,可能是什麼問題?

PS:我有評論在shell腳本的所有打印語句(以避免一些標準輸出問題,使過程inspite的&再次FG)

+1

這是很難跟隨你的解釋。請儘量更精確或包含更多細節。另請參閱[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) –

回答

1

這不是在Perl或SSH的一個問題,它的方式您使用nohup。該腳本將掛起只是,如果你把它作爲

ssh host2 ./sabkuch.sh 

nohup只有真正分離,讓你重定向標準輸出/標準錯誤這樣調用SSH進程終止同:

nohup perl server.pl >/dev/null 2>&1 &