2014-02-06 52 views
0

我有一臺機器上的mojolicio服務器,我從另一臺機器連接到它。我有一個腳本來檢查mojolicio是否啓動 - 如果它沒有運行,就運行它。我用下面的命令行來運行服務器:從SSH運行Perl Mojolicio服務器

ssh [email protected] 'cd /server_path/; (nohup /usr/bin/perl server_file >nohup.out &);' 

的server_file是提高服務器是一個腳本下面的腳本:

#!/usr/bin/env perl 
use Mojo::Base -strict; 

use File::Basename 'dirname'; 
use File::Spec::Functions qw(catdir splitdir); 

# Source directory has precedence 
my @base = (splitdir(dirname(__FILE__)), '..'); 
my $lib = join('/', @base, 'lib'); 
-e catdir(@base, 't') ? unshift(@INC, $lib) : push(@INC, $lib); 

# Start commands for application 
require Mojolicious::Commands; 
Mojolicious::Commands->start_app('MyServer', 'daemon','-l','http://*:3030'); 

如果服務器已關閉,我運行此命令 - 我在機器上看到服務器已啓動並正在運行,並且正在監聽它配置爲偵聽的端口。現在,如果我嘗試從瀏覽器連接到服務器,它不會加載。它堅持加載和最終我沒有找到頁面。但是如果我從服務器本身運行相同的命令,它可以工作,並且可以在運行後加載主頁。


我發現這個問題..

如果我使用nohup與SSH,則服務器在某種程度上將是不可到達的 - 但是當我運行的服務器,而不作爲的nohup - 例如使用以下代碼:

ssh [email protected] 'cd /server_path/; (usr/bin/perl server_file);' 

它的工作原理。

這裏可能是什麼問題?

非常感謝。

+0

你可能想看看nohup.out來找出程序報告的錯誤。 – Quentin

+0

沒有錯誤 - nohup告訴我服務器已啓動並正在監聽: 在「http:// *:3030」 – iseif

回答

0

我找到了解決辦法:-) - 問題是與nohup命令 - 這是缺少的:

2>nohup.out 

我加入它和現在的工作。

謝謝大家。

相關問題