虚拟环境上的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
虚拟环境上的jupyterhub开机启动设置的更多相关文章
- 【CentOS】centos7上查看服务开机启动列表
		
centos7上查看服务开机启动列表 命令: systemctl list-unit-files; 点击回车,可以向下翻页查询
 - Tomcat开机启动设置
		
omcat开机启动设置 1.修改/etc/rc.d/rc.local,使用vi /etc/rc.d/rc.local 命令2.在/etc/rc.d/rc.local文件最后添加下面两行脚本 expor ...
 - ubuntu 14 中tomcat的开机启动设置
		
开机自启动,将要执行的语句写入/etc/rc.local. #!/bin/sh -e # # rc.local # # This script is executed at the end of ea ...
 - CenterOS中安装Redis及开机启动设置
		
Redis安装 从官方下载最新Redis进行安装,官网地址:http://redis.io/download $ wget http://download.redis.io/releases/redi ...
 - centos 7 上配置mysql 开机启动详解
		
之前多次在centos7环境下配置mysql开机自启动出现了错误.现留下篇文章已做记录 一.centos7与centos6相比有什么不同: 1 在centos7中服务不在是用service这个命令来启 ...
 - linux 开机启动设置
		
操作系统:Ubuntu12.04硬件环境:HP CQ45 当用户使用sudo apt-get install安装完apache和mysql之后,这些服务默认是开机启动的,但是有的时候需要 ...
 - Nginx+Center OS 7.2 开机启动设置(转载)
		
centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度.关 ...
 - OneDrive 开机启动设置失效如何处理?
		
问题现象: 『设置里勾选了开机启动onedrive,但是重启电脑勾选就没了,重新勾选没用,一重启就没了』 win10的onedrive无法开机启动 - Microsoft Community 处理方式 ...
 - [ 手记 ] 关于tomcat开机启动设置问题
		
今天尝试将tomcat设置为开机启动,大家都知道只需要将启动脚本添加到/etc/rc.local下面开机就会自动执行. /usr/local/tomcat8./bin/startup.sh >& ...
 
随机推荐
- psexec与wmi在内网渗透的使用
			
psexec是一个很好的管理工具,在内网渗透中也被广泛使用. 但太“出名”也往往会遭来各种麻烦. 在有安全监听.防护的内网中使用psexec会容易触发告警. 1.psexec用法(前提:对方要开启ad ...
 - 英语aeroides海蓝宝石aeroides单词
			
海蓝宝石(aeroides,Aquamarine)是一种含铍.铝的硅酸盐,与祖母绿.乌兰孖努以及碧玺等统称为彩色宝石.海蓝宝石的颜色为天蓝色至海蓝色或带绿的蓝色,它的颜色形成主要是由于含微量的二价铁离 ...
 - 医疗行业预测性产品的质量如何把关?MES系统帮大忙
			
作为行业细分的医疗设备制造正在向工业4.0快速发展.它也可能仍然是世界上受监管最严格的行业之一,产品的个性化发展速度比其他行业更快. 在医疗设备行业中,由于需求或由于市场特定的规定,产品越来越多地定制 ...
 - android中fragment卡顿的原因
			
首页的ViewPager有十几个Fragment,在快速切换的时候,容易产生卡顿现象. 二.分析当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快 ...
 - Android Studio 导入 Android 系统模块并编译和调试
			
FAQ: AS导入系统模块源码,并且能够编译调试,正常查看java doc ???? Android AOSP基础(五)Android Studio调试系统源码的三种方式http://liuwangs ...
 - 1 Dalvik和Java虚拟机
			
Dalvik虚拟机特点: 1. 体积小 2. DEX格式可执行文件,相比java运行速度快 3. 常量池采用32位索引值 4. 提供对象生命周期,堆栈,线程,权限,异常等管理 5. Andr ...
 - 后缀表达式 Java实现
			
基本原理: 从左到右扫描字符串:1.是操作数:压栈. 2.是操作符:出栈两个操作数,将运算结果压栈. 扫描字符串通过java.util.Scanner类实现,其next方法可以读取以空格(默认)或指定 ...
 - “GIS DICTIONARY A-Z” 查询页面开发(1)——bs4与词典数据处理
			
第一天的工作:找到数据源,数据下载,数据处理. 数据源:"http://webhelp.esri.com/arcgisserver/9.3/java/geodatabases/definit ...
 - Odoo定时任务(自动任务)
			
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826270.html 一:定时任务模型 Odoo中内置了一个定时任务模型 ir.cron ,它定义了一 ...
 - Odoo销售模块
			
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10825988.html 一:销售模块 销售模块的用途: 1)管理销售团队.销售人员:维护销售产品: 2)管理 ...