2017-07-03 2 views
0

Ich benutze nodemon in meiner Nodejs App, um automatisch neu zu starten, wenn Änderungen zutreffen. Aber wenn ich nodemon mit "Strg + C" in Ubuntu-Umgebung stoppe, stoppe Nodejs nicht. Ich muss den Prozess durchsuchen, der über den Port ausgeführt wird, und manuell mit kill -9 beenden. Wie kann ich das beheben?Das Beenden von nodemon stoppt den Prozess in Ubuntu nicht.

Antwort

0

quick and dirty Lösung

process.on('SIGTERM', stopHandler); 
process.on('SIGINT', stopHandler); 
process.on('SIGHUP', stopHandler); 
function stopHandler() { 
    console.log('Stopped forcefully'); 
    process.exit(0); 
} 

richtige Lösung

Graceful Shutdown Implementierung ist eine bewährte Methode. In diesem Beispiel sollte ich nur den Server stoppen. Wenn der Server länger als 2 Sekunden anhält, wird der Prozess mit dem Exitcode 1 beendet.

process.on('SIGTERM', stopHandler); 
process.on('SIGINT', stopHandler); 
process.on('SIGHUP', stopHandler); 
async function stopHandler() { 
    console.log('Stopping...'); 

    const timeoutId = setTimeout(() => { 
    process.exit(1); 
    console.error('Stopped forcefully, not all connection was closed'); 
    }, 2000); 

    try { 
    await server.stop(); 
    clearTimeout(timeoutId); 
    } catch (error) { 
    console.error(error, 'Error during stop.'); 
    process.exit(1); 
    } 
} 
+0

Gibt es keine Tastenkombination oder etwas, das zu tun? Ich meine "Ctrl + C" drücken? –

+1

STRG + C sendet das Signal SIGINT – galkin

Verwandte Themen