2016-08-15 1 views
0

CentOSを実行中(Linuxシグナルサーバ3.10.0-123.8.1.el7.x86_64)。私はSSHを使用してサーバーにログインし、この次の行を手動で実行すると動作しますが、サーバーへのSSH接続を終了するとクラッシュします。BASH - なぜNodeJSサーバースクリプトがクラッシュするのですか?

$ node /var/www/html/signal-server/avi.js & 

このロボットはまた、私は手動でSSH経由でログインしていないのですときに、サーバーの実行をできるように失敗します。

#!/bin/bash 
while : 
do 
    # 1 
    avi=$(pgrep -f "avi.js") 
    if [[ "$avi" ]]; then 
    log1="1 - running avi.js $1 $2" 
    else 
    log1="1 - re-launch avi.js $1 $2" 
    ps aux | grep "avi.js" | awk '{print $2}' | xargs kill 
    sleep 1 
    # same if nohup also used 
    node /var/www/html/signal-server/avi.js & 

    fi 

    tt=$(date +"%Y-%m-%d %T") 
    echo "$tt" "$log1" 

    sleep 2 
done 

どのように私はそれがために、今までにしてください実行することができますか? (私はまた、彼らは私がSSHセッションからログアウトしたときにのみ、この1つは常にクラッシュ正常に動作している他のサービスしている)

+1

systemdにドキュメントを読んで少しの時間を過ごしますか? –

答えて

3

nohupあなたは

nohup node /var/www/html/signal-server/avi.js &

何をしたいあなたは本当にためにsystemdスクリプトを書くべきでしょうサービスを開始し、サーバーが再起動するとサービスが再び起動します。 https://github.com/foreverjs/foreverを使用しない理由

これは、このようなスクリプトは

[Service] 
ExecStart=node /var/www/html/signal-server/avi.js 
Restart=always 
StandardOutput=syslog 
StandardError=syslog 
SyslogIdentifier=node-avi 
User=some-user 
Group=some-group 
Environment=NODE_ENV=production 

[Install] 
WantedBy=multi-user.target 

ように見えるかもしれないもの大まかなアイデアですが

+0

nohupは問題を解決しませんでした。私はこれを使用したときに動作します:https://github.com/foreverjs/forever – YumYumYum

+0

あなたはサーバーがまだ死んでいるなら、それはコードにエラーがあるためかもしれません。私が現在知っていることを考えれば、 'systemd'を使って示唆します。 – Leon

+0

サーバコードが死んでいないので、例外キャッチャー' try {} catch(){} 'をすでに置いています。 – YumYumYum

関連する問題