11

私は最初の NodeJS アプリを作成していますが、何らかの理由で短時間で予期せず終了するようです。何が原因なのかわかりません。プロセスは正常に実行され、期待どおりに動作しますが、何らかの理由で停止します。nohup ログには、エラーやフィードバックは表示されません。

これをデバッグモードで実行しようとしましたが、同じで、情報はありません。トレースは役に立ちません。

nohup 経由でプロセスを実行します。

nohup node app.js &

コード:

var http = require('http');
var server = http.createServer().listen(8000);
var io = require('socket.io').listen(server);
var cookie_reader = require('cookie');
var querystring = require('querystring');

// Store the session cookie set by Django
io.configure(function(){
    io.set('authorization', function(data, accept){
        if(data.headers.cookie){
            data.cookie = cookie_reader.parse(data.headers.cookie);
            return accept(null, true);
        }
        return accept('error', false);
    });
    io.set('log level', 1);
});

io.sockets.on('connection', function (socket) {
    socket.on('shoutbox_send', function(message){

        values = querystring.stringify({
            comment: message,
            sessionid: socket.handshake.cookie['sessionid'],
        });

        try {
            var options = {
                host: 'www.example.com',
                port: 80,
                path: '/shoutbox/node_api',
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded',
                    'Content-Length': values.length
                }
            };

            var req = http.get(options, function(res){
                res.setEncoding('utf8');
                res.on('data', function(message){
                    socket.emit('shoutbox_receive', message);
                    socket.broadcast.emit('shoutbox_receive', message);
                });
            });

            req.write(values);
            req.end();
        } catch (err) {
            console.log(err);
            socket.emit('shoutbox_receive', err);
        }

    });
});

前もって感謝します、

4

5 に答える 5

1

永久にプロセスを実行するか、どちらも素晴らしいモジュールである pm2 を使用して、失敗した場所を適切にトレースします。

于 2013-10-27T18:15:52.897 に答える
0

nohup node app.js >> log.txtログファイルで例外を取得するために使用します

于 2014-03-12T16:01:38.640 に答える
-1

このように実行してはいけません。nohup プロセスの定義は次のとおりです。

nohup - 非 tty への出力で、ハングアップの影響を受けないコマンドを実行します

また、nohup はあるシェルから別のシェルに変更されます。基本的に、異なる Linux ディストリビューションでは、このプロセスで同じ動作が得られないことを意味します。

私の会社のサーバーで行っているように、それを実行する必要があります。

/usr/local/bin/node app.js > /var/log/node_js.log 2>&1

次に押します:

Ctrl-Z

次のように入力します。

bg

プロセスはバックグラウンドで実行され、そのエラーと出力ログが /var/log/node_js.log に出力されます。失敗した場合は、そのファイルに失敗の理由が表示されます。

次を使用して、サーバーへのsshセッションを定期的に残すことができます。

exit
于 2013-09-02T09:10:41.543 に答える