-
-
Save whophil/5a2eab328d2f8c16bb31c9ceaf23164f to your computer and use it in GitHub Desktop.
# After Ubuntu 16.04, Systemd becomes the default. | |
# It is simpler than https://gist.github.com/Doowon/38910829898a6624ce4ed554f082c4dd | |
[Unit] | |
Description=Jupyter Notebook | |
[Service] | |
Type=simple | |
PIDFile=/run/jupyter.pid | |
ExecStart=/home/phil/Enthought/Canopy_64bit/User/bin/jupyter-notebook --config=/home/phil/.jupyter/jupyter_notebook_config.py | |
User=phil | |
Group=phil | |
WorkingDirectory=/home/phil/Notebooks/ | |
Restart=always | |
RestartSec=10 | |
#KillMode=mixed | |
[Install] | |
WantedBy=multi-user.target |
Ran into some problems with calling jupyter notebook
`'notebook' is not a Jupyter command`.
Switched to explicit jupyter-notebook
call instead.
Thanks!
why occurs this error, with or without config.py
● jupyter.service
Loaded: loaded (/lib/systemd/system/jupyter.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Mon 2017-12-04 23:38:01 UTC; 3s ago
Process: 17830 ExecStart=/home/ubuntu/anaconda3/envs/tensorflow_p36/bin/jupyter-notebook (code=exited, status=200/CHDIR)
Main PID: 17830 (code=exited, status=200/CHDIR)
Hi @Kevintso ,
From exit status (code=exited, status=200/CHDIR) , it seems that either you do not have specified working directory or user and group you have specified does not have right permission in that directory.
Working directory (WorkingDirectory=) must be present , and make sure it has the right permissions.
Hope this helps you.
In my case I have a 203/EXEC
error, and after checking this, I have found that I have to add /bin/bash -c
before the whole command, so it becomes:
ExecStart=/bin/bash -c "/usr/bin/jupyter notebook --config=/home/westerngun/.jupyter/jupyter_notebook_config.py --debug > /another/programming/jupyter/notebook.log 2>&1"
(last part is for log, you can go without it)
I am with CentOS 7. After this change this service finally gets working. So maybe the OP lacks it?
18.04 won't start the service. After executing `sudo systemctl restart jupyter.service', it gives me Exec format error.
If encountering the following errors :
Main PID: 24251 (code=exited, status=1/FAILURE)
Mar 21 13:48:21 ip-172-31-26-72 systemd[1]: jupyter.service: Main process exited, code=exited, status=1/FAILURE
Mar 21 13:48:21 ip-172-31-26-72 systemd[1]: jupyter.service: Unit entered failed state.
Mar 21 13:48:21 ip-172-31-26-72 systemd[1]: jupyter.service: Failed with result 'exit-code'.
Check /var/log/syslog
for a more verbose message. It may be that
ValueError: certfile "certs/mycert.pem" does not exist
Solution : use absolute paths in your config file.
I suggest putting the service file in /etc/systemd/system/
, not /usr/lib/systemd/system/
. The latter is only for system units installed from the distribution package manager, while the one in /etc
is for user-defined ones. It will make no difference in terms of functionality, but prevent conflicts with any package that might happen to install a jupyter.service
in the future. Reference: systemd.unit(5)
Thanks @sandtler, that is a good point - I have updated the instructions in the first comment.
I suggest putting the service file in
/etc/systemd/system/
, not/usr/lib/systemd/system/
. The latter is only for system units installed from the distribution package manager, while the one in/etc
is for user-defined ones. It will make no difference in terms of functionality, but prevent conflicts with any package that might happen to install ajupyter.service
in the future. Reference: systemd.unit(5)
If you need environment variables for Tensorflow GPU work, and .bashrc usually does the job for you, you need to somehow make those available to the Jupyter service, or else Notebooks that need the GPU won't be able to see it.
Not sure this is the best way, but it's the way I got it to work:
[Unit]
Description=Jupyter Notebook
[Service]
Type=simple
PIDFile=/run/jupyter.pid
# ------------------------------------
Environment="PATH=/usr/local/cuda-10.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:/usr/local/cuda-10.1/lib64:usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"
Environment="CUDA_HOME=/usr/local/cuda-10.1"
Environment="NUMBAPRO_NVVM=/usr/local/cuda-10.1/nvvm/lib64/libnvvm.so"
Environment="NUMBAPRO_LIBDEVICE=/usr/local/cuda-10.1/nvvm/libdevice/"
ExecStart=/home/phil/.local/bin/jupyter-notebook
User=phil
Group=phil
WorkingDirectory=/home/phil/z_Notebooks
Restart=always
RestartSec=10
#KillMode=mixed
[Install]
WantedBy=multi-user.target
Following the instructions of https://www.digitalocean.com/community/tutorials/how-to-configure-a-linux-service-to-start-automatically-after-a-crash-or-reboot-part-1-practical-examples, place this file in:
/etc/systemd/system/jupyter.service
Then execute
sudo systemctl enable jupyter.service
Reload the systemd daemona and restart the service