网上说了开机自启有许多种方法:

1.最简单的是:在/etc/rc.local的exit 0前面加上你启动服务的脚本文件路径

      注:这个脚本文件应写绝对路径!

2.网上:修改rc.local开头的#/bin/sh -e  修改为#/bin/bash   ...

3.网上:加上sleep时间,让其他程序先加载  ...

4.网上:cd /etc/systemd/system/,创建xx.service方法启动  ...

5.网上:查看SHELL,将/bin/sh (输出dash) 改为/bin/sh (输出bash) ...

....  启动的方法有很多,可能对你们来说会有用,我选择最简单的将服务启动脚本放在了rc.local中启动。

(先说一下我的flask服务内容:我的flask内容是需要加载模型文件做出预测,启动服务需要初始化CUDA,否则会报错,从而导致服务起不来,这也是一直困扰我很多天的关键问题所在)

我将我的启动服务脚本文件放在了rc.loca中:

  1. #!/bin/sh -e
  2. #
  3. # rc.local
  4. #
  5. # This script is executed at the end of each multiuser runlevel.
  6. # Make sure that the script will "exit 0" on success or any other
  7. # value on error.
  8. #
  9. # In order to enable or disable this script just change the execution
  10. # bits.
  11. #
  12. # By default this script does nothing.
  13.  
  14. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
  15. export PATH=$PATH:/usr/local/cuda-10.0/bin
  16. export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.0
  17. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
  18.  
  19. sleep 7
  20. cd /home/tf-serving/flaskFiles/modelFlask
  21. /home/tf-serving/flaskFiles/modelFlask/run.sh
  22.  
  23. exit 0

如果说你们正常的服务不需要初始化什么文件或者其他的东西,就直接将启动服务的脚本文件放在exit 0 上面,开机就自动启动了,但是我这个服务需要初始化CUDA的环境变量;

其实这4行初始化CUDA的环境变量在/etc/profile全局变量文件中写过了,之所以又在启动文件中在写一遍,原因是:查看了一下rc.local文件的启动级别数字较小,说明服务器开机的时候较先执行;

由于较先执行,所以还没来得及执行/etc/profile下的环境,就先执行rc.local了,所以会报错(报错是因为加载tensorflow-gpu时,没有找到CUDA,会报版本错误的问题);

然后找错误原因,将打印信息重定向到一个日志文件中:(这三行写在rc.local文件中,主要是导出test.log,查看错误以及没有执行的信息~)

  1. sleep 7
  2.  
  3. cd /home/tf-serving/flaskFiles/modelFlask
  4.  
  5. /home/tf-serving/.pyenv/versions/env-3.6.4/bin/gunicorn -b 127.0.0.1:9999 app:app > /home/test.log 2>&1

总的来说还是因为服务器开机执行的优先级问题!!这个问题困扰了我好几天,还好总算是解决了,谢天谢地。

ubuntu16.04设置开机自启服务的更多相关文章

  1. ubuntu18.04设置开机自启Django

    设置开机自启: rc-local.server [Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.l ...

  2. 如何管理linux开机自启服务

    如何管理linux开机自启服务? 自启动服务非常重要,例如 (1)需要手动添加希望自启的服务,如安装svn后没有自动添加,就需要我们手动加入(2)安装某些程序后,自动加到自启动了,但我们不需要,需要手 ...

  3. Linux(CentOS6.5)下Nginx注册系统服务(启动、停止、重启、重载等)&设置开机自启

    本文地址http://comexchan.cnblogs.com/ ,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢! 完成了Nginx的编译安装后,仅仅是能支持Nginx最基本的功能, ...

  4. ubuntu-18.04 设置开机启动脚本

    ubuntu-18.04 设置开机启动脚本 参阅下列链接 https://askubuntu.com/questions/886620/how-can-i-execute-command-on-sta ...

  5. redis设置开机自启

    开机自启动redis(其他服务类似) centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvini ...

  6. Centos7安装elasticsearch6.3及ik分词器,设置开机自启

    参考Elasticsearch 在CentOs7 环境中开机启动 建议虚拟机的内存大小为4G 1. 新建一个用户john 出于安全考虑,elasticsearch默认不允许以root账号运行. 创建用 ...

  7. TX2开发板Ubuntu16.04设置静态IP

    TX2开发板Ubuntu16.04设置静态IP  https://www.cnblogs.com/qilai/p/11285445.html 首先打开一个Terminal输入 ifconfig 查看自 ...

  8. Centos 7 redis、tomcat、Spring Boot添加开机自启服务

    一.redis添加开机自启 1.添加服务配置文件 [root@test system]# vim /etc/systemd/system/redis-server.service 2.服务配置文件内容 ...

  9. centos7安装docker并设置开机自启以及常用命令

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

随机推荐

  1. 感叹号在Linux bash中使用技巧

    1. 重复执行上一条指令  !! [root@iZ23t6nzr7dZ python]# ls /usr/local/ aegis bin etc games include lib lib64 li ...

  2. 简单Arp欺骗

    title date layout tags 简单arp欺骗 2018-05-08 post Python #-*- coding:utf-8 -*- from scapy.all import Et ...

  3. Qt Sleep、QCoreApplication::processEvents()(最佳的平衡:一边发送消息,一边睡眠)

    sleep()//秒 msleep()//毫秒 usleep()//微秒 以前为了模拟鼠标点击用过这些函数,可以让进程中断,今天发现我原来的做法其实不对.这组函数会将你当前的线程/进程变为“睡眠”状态 ...

  4. FP-Grow树

    序言 FP-growth(Frequent Pattern Tree, 频繁模式树),是韩家炜老师提出的挖掘频繁项集的方法,是将数据集存储在一个特定的称作FP树的结构之后发现频繁项集或频繁项对,即常在 ...

  5. 规范化开发和time相关模块

    1. 规范化开发 如果在开发的过程中将所有的程序放在一个py文件中,加载时会很慢,同时降低了代码的可读性,查询起来也麻烦 所以要将一个oy文件合理的分成多个py文件,在blog大目录下分为以下几个部分 ...

  6. 认识shell

    博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 认识shell 一.由来 第一个流行的 shell 是由 Steven Bourne 发展出来的,为了纪念他所以就称为 ...

  7. springboot学习笔记:2.搭建你的第一个springboot应用

    1.开发环境 (推荐):jdk1.8+Maven(3.2+)+Intellij IDEA+windows10; 说明: jdk:springboot官方说的很明确,到目前版本的springboot(1 ...

  8. 抽样分布|t分布|中心极限定理|点估计|矩估计|最大似然法|

    生物统计与实验设计-统计学基础-2&区间估计-1 正态分布参数:均值和方差 其中,选择1d是因为好算:通常,95%区分大概率事件和小概率事件, 当总体是正态分布时,可以利用常用抽样分布估计出样 ...

  9. motionbuilder安装未完成,某些产品无法安装的解决方法

    motionbuilder提示安装未完成,某些产品无法安装该怎样解决呢?,一些朋友在win7或者win10系统下安装motionbuilder失败提示motionbuilder安装未完成,某些产品无法 ...

  10. Nginx笔记总结九:Nginx日志配置

    ngx_http_log_module用来定义请求日志格式1. access_log指令 语法:   access_log path [format [buffer=size [flush=time] ...