2016-01-27 4 views
6

Ich starte einen jupyter Notebook-Server auf einer AWS-Instanz (Redhat Linux Server), um eine Verbindung zu https herzustellen. In der Konfigurationsdatei habe ich, dass dies an Port 9999 sein sollte. Wenn ich den Prozess jedoch mit Ctrl-C stoppe und neu starte, wird der Port nicht freigegeben, wie unten gezeigt.Wie kann ich Ports freigeben, die nach dem Stoppen von einem Notebook-Server gehalten werden?

[[email protected] notebook]$ [I 08:39:27.901 NotebookApp] The port 9999 is already in use, trying another random port. 
[I 08:39:27.901 NotebookApp] The port 10000 is already in use, trying another random port. 
[I 08:39:27.902 NotebookApp] The port 10001 is already in use, trying another random port. 
[I 08:39:27.905 NotebookApp] Serving notebooks from local directory: /home/user/docs/notebook 
[I 08:39:27.905 NotebookApp] 0 active kernels 
[I 08:39:27.905 NotebookApp] The Jupyter Notebook is running at: https://[all ip addresses on your system]:10002/ 
[I 08:39:27.905 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). 

Nebenbei, diese "zufälligen Ports" sehen nicht sehr zufällig zu mir.

+0

True, wahrscheinlich besser auf SuperUser (obwohl Ipython/Jupyter Notebook ist definitiv ein Tool von der Programmiergemeinschaft verwendet) . Wie migriere ich es? –

+1

Sind Sie sicher, dass der Befehl stop den Dienst wirklich stoppt? Kannst du einen Stopp machen und netstat -tlnp in einem rohen um das zu überprüfen? Es ist möglich, dass der Stopp nur die PID-Datei löscht, aber den Dienst nicht stoppen kann. – Tom

+0

Nein, es scheint, dass der Dienst nicht gestoppt wird. Nach "netstat -tlnp" kann ich 'kill [pid]' verwenden, was zu funktionieren scheint. Vielen Dank! –

Antwort

3

manchmal gibt der stop-Befehl eines Dienstes keinen Fehler zurück und löscht die pid-Datei eines Prozesses, beendet jedoch den Prozess selbst nicht.

Sie können überprüfen, ob der Prozess noch durch die Ausführung des Stopp-Befehl ausgeführt wird und dann entweder

ps aux | grep -i notebook 

oder

netstat -tlnp | grep <portNumber> 

Wie Sie Sie dann festgelegt, können entweder den Prozess manuell töten oder beheben das Stopp-Skript (normalerweise /etc/init.d/serviceName+d). Der Grund dafür, dass der Prozess nicht beendet wird, ist oft (nicht immer) mit Berechtigungen des Benutzers verbunden, der den Befehl ausführt.

+0

Also sollte ich den Server mit 'sudo jupyter notebook &' anstatt nur 'jupyter notebook &' starten? –

+0

Nein, das kann nicht sein. Es gibt mir 'sudo: jupyter: Befehl nicht gefunden' –

+0

normalerweise würden Sie bevorzugen, einen Benutzer einem Service zu widmen. B. für Dienste wie Apache, MySQL usw., erhalten Sie Systembenutzer, die diese Dienste ausführen und nur die geringsten Berechtigungen besitzen, um sie auszuführen. Aber wenn Sicherheit für Sie keine große Rolle spielt, dann tun Sie einfach, was für Sie funktioniert. Es ist schwer für mich zu sagen, ob du sudo tun solltest oder nicht, da ich weder deine Systemeinstellungen/Benutzer/Rechte/Pfad/etc noch den Jupyter-Dienst kenne :) – Tom

Verwandte Themen