编写脚本的学习链接:链接
遇到的问题:
- 写完之后一直提示启动失败,经过搜索找到原因:*.sh文件头是#!/bin/sh,这里默认是用/bin/dash解释的,结果默认用户是用bash解释的,造成无法解析,无法运行,将文件头改为#!/bin/bash可以解析
- 将jupyter.sh放到/etc/init.d/文件夹下之后,用update-rc.d注册service.这里默认使用的是root用户,结果造成了很大的问题,jupyter的配置文件是在/home/xxx/.jupyter/下,用root用户,无法找到该配置文件,即使在sh文件内指定了--config=/home/xxx/.jupyter/jupyter_notebook_config.py也不起作用.解决方案是:修改/etc/init.d/jupyter.sh文件,用用户xxx解析执行的命令
#!/bin/bash
### BEGIN INIT INFO
# Provides: app_run
# Required-Start: $local_fs $remote_fs $network $syslog $named #此处为依赖服务,即该服务脚本会在这些服务启动后运行
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: app_run service
# Description: Start the app_run service and associated helpers
### END INIT INFO
su - userqizg <<EOF
do_start()
{
/usr/bin/jupyter-notebook --config=/home/userqizg/.jupyter/jupyter_notebook_config.py > /tmp/jupyter.run.log 2>&1 &#这里是你要在服务启动时执行的动作
}
do_stop()
{
pkill -f /usr/bin/jupyter-notebook #这里是你要在关闭服务时执行的动作
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_restart() {
do_stop
sleep 1
do_start
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
status)
exit $?
;;
reload)
echo "reload"
;;
restart)
do_restart
;;
*)
echo "Usage: {start|stop|restart|reload}" >&2
exit 3
;;
esac
exit 0
EOF
目前已经可以使用了