虚拟环境上的jupyterhub开机启动设置

为了让jupyterhub 开机启动,或者以服务的方式启动,折腾了好久。
环境

ubuntu 16.04
anaconda >= 4.5
python35
jupyterhub 0.9.4
node 6.14.4
背景
jupyterhub 安装在 conda的虚拟环境中 只有进入该虚拟环境中才能执行jupyterhub命令
建立的脚本可以启动jupyterhub
#!/bin/bash -l
conda activate python35
cd /etc/jupyterhub
jupyterhub -f /etc/jupyterhub/jupyterhub_config.py >> /etc/jupyterhub/jupyter.log
bash 一定要加-l 目的是以login shell 的方式登录,否则系统可能无法识别conda命令,因为conda4.4后的版本将命令的配置放到了/etc/profile.d/conda.sh中,只有login shell登录的时候才会执行该文件,系统才会识别到conda命令。大家可能会比较疑惑,为什么用conda activate而不用source activate 这样是不行的,因为我们要放到开机启动项或者服务启动项中,这两种方法识别到的source 是linux系统的source,就是用来更新文件状态的那个命令,通常我们更改系统的配置文件比如/etc/profile /etc/bash.bashrc后用source命令更新,所以在开机启动或者启动服务的时候bash 将source 识别成这个更新文件的命令,导致出错

问题
每次启动的上面的脚本时需要用./name.sh或者 bash name.sh来执行,且当我们关掉自己的命令行时jupyterhub服务也就会关掉,也就是没办法后台运行。
解决方案
将上面的脚本文件作为开机启动项,让其开机自起(只有重启机器才会生效)
将上面的脚本作为服务(类似于 ssh server),可以通过service或systemctl等服务管理命令控制(不必重启机器,灵活,可控)
加入到开机启动项中
参考链接原理比较详细的链接 只要脚本没问题,即可执行,但问题是脚本一旦有问题,服务就不会被启动,且我们也不知道出错在哪。比如说,我们不知道该脚本执行的顺序是在加载用户配置之前还是之后执行,如果在用户配置PATH等配置之前就执行,那么用户的某些命令就无法执行比如conda, node configurable-http-proxy这三个命令都和jupyterhub相关,如果我们写的脚本在加载用户配置之前就执行,肯定是不行的,所以我们尽量不采用这种方法

写到服务中
我们的机器是ubuntu 16.04可以中systemctl管理服务

在/etc/systemd/system/下建立一个名为jupyterhub.service的服务配置文件,名字是jupyterhub后缀是.service,名字可以自己随便命名,该名字就是以后用systemctl 或 service配置的服务名
在jupyterhub.service文件中写入下面的命令
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
[Unit]
Description=jupyterhub (随便起个名字)
After=syslog.target network.target (在网络服务启动后启动该脚本)
[Service]
User=root
ExecStart=/etc/jupyterhub/jupyterhub.sh (脚本地址)
[Install]
WantedBy=default.target
上面的配置是系统服务配置文件最简单的写法改一下就可以了。

在终端中执行 systemctl start jupyterhub 启动服务
查看服务运行状态 systemctl status jupyterhub
通常会出错
如果提示 node configurable-http-proxy 错误,找不到文件等等,那原因就是服务的优先级在系统配置之前,也就是我们配置的node的PATH没有被识别,所以我最终将node的PATH配置放到了/etc/profile中成功了,之前放到了/etc/bash.bashrc中并不能识别
服务可以成功启动,执行systemctl enable jupyterhub允许开机自启动
以上就是走过的坑,希望大家在和我一样的环境下能避免这些坑。
————————————————
版权声明:本文为CSDN博主「小猪嘎嘎」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/luoluonuoyasuolong/article/details/88815887

原文地址:https://www.cnblogs.com/adolfmc/p/11980161.html

时间: 2024-09-28 20:50:05

虚拟环境上的jupyterhub开机启动设置的相关文章

ubuntu ibus开机启动设置

安装ubuntu, 开机默认输入法是不启动ibus, 所以每次自己手动启动输入法.很是麻烦: 以下是解决方法:方法一.  System >> Administration >> Language Support 然后设置"Keyboard Input Method System"为ibus 方 法二:当然你也可以设置开机自己启动ibusSystem >> Preferences >> Startup ApplicationsClick t

ubuntu 14 中tomcat的开机启动设置

开机自启动,将要执行的语句写入/etc/rc.local. #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this

centos 7 上配置mysql 开机启动详解

之前多次在centos7环境下配置mysql开机自启动出现了错误.现留下篇文章已做记录 一.centos7与centos6相比有什么不同: 1 在centos7中服务不在是用service这个命令来启动与停止,也不再用chkconfig来设置开机启动与否! 在centos7中所有对服务的管理都集中到了systemctl当中:systemctl不再是合之前一样依赖/etc/init.d/下 的脚本,它是通过配置文件来完成对服务的管理的: 二.创建systemctl管理mysql的配置文件: 1 创

CenterOS中安装Redis及开机启动设置

Redis安装 从官方下载最新Redis进行安装,官网地址:http://redis.io/download $ wget http://download.redis.io/releases/redis-3.2.3.tar.gz $ tar xzf redis-3.2.3.tar.gz $ cd redis-3.2.3 $ make $ make install Redis启动 RedisServer /path/to/redis.conf Redis关闭(默认port为6379) RedisC

linux 开机启动设置

操作系统:Ubuntu12.04硬件环境:HP CQ45        当用户使用sudo apt-get install安装完apache和mysql之后,这些服务默认是开机启动的,但是有的时候需要关闭这些服务的开机启动.        首先普及一个概念,以下转自维基百科: 运行级别(Runlevel)指的是Unix或者Linux等类Unix操作系统下不同的运行模式.运行级别通常分为7等,分别是从0到6,但如果必要的话也可以更多. 例如在大多数linux操作系统下一共有如下6个典型的运行级别:

电脑程序开机启动设置

来源:http://jingyan.baidu.com/article/19020a0ada910f529d2842b1.html 对于设置开机启动的设置,开始->所有程序->启动,将需要开机启动的应用程序放在启动下面: 对于设置开机启动与不启动,可以通过:开始->运行,在运行界面中输入msconfig,按确定键,之后出现如下界面,将启动条目下中相应的 应用程序前面的复选框中添加或去除勾,即可实现相应应用程序在开机是自启动或不启动.

centos开机启动设置二种方法

方法1,利用 chkconfig 来配置启动级别 在CentOS或者RedHat其他系统下,如果是后面安装的服务,如httpd.mysqld.postfix等,安装后系统默认不会自动启动的. 就算手动执行/etc/init.d/mysqld start启动了服务,只要服务器重启后,系统仍然不会自动启动服务. 此时,只需要在安装后做个设置,让系统自动启动这些服务,避免不必要的损失和麻烦. 使用chkconfig即可.比如要将mysqld设置为开机自动启动: #chkconfig mysqld on

如何取消Macbook上顽固的开机启动项

博主遇到的一个顽固启动项是Cisco Anyconnect.我只是偶尔需要使用VPN,但是安装了Cisco Anyconnect之后,每次开机它都会启动,很烦人. 1 通过系统设置 首先,博主希望通过一般的系统设置的方法关闭它. 我前后试了三次,都失败了.每次看似把这个开机启动项给删除了,但是只要重启,它还是会出现在Login Items里面. 2 /Library/LaunchAgents/ 之后我又手动移除/Library/LaunchAgents/里面的相关文件.(注意,千万不要删除这个文

怎样取消Macbook上顽固的开机启动项

博主遇到的一个顽固启动项是Cisco Anyconnect.我仅仅是偶尔须要使用VPN.可是安装了Cisco Anyconnect之后,每次开机它都会启动,非常烦人. 1 通过系统设置 首先,博主希望通过一般的系统设置的方法关闭它. 我前后试了三次,都失败了.每次看似把这个开机启动项给删除了,可是仅仅要重新启动.它还是会出如今Login Items里面. 2 /Library/LaunchAgents/ 之后我又手动移除/Library/LaunchAgents/里面的相关文件. (注意,千万不