zoukankan      html  css  js  c++  java
  • ubuntu16.04设置开机自启服务

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

    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中:

    #!/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 script just change the execution
    # bits.
    #
    # By default this script does nothing.
    
    
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
    export PATH=$PATH:/usr/local/cuda-10.0/bin
    export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.0
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
    
    
    
    sleep 7
    cd /home/tf-serving/flaskFiles/modelFlask
    /home/tf-serving/flaskFiles/modelFlask/run.sh
    
    exit 0

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

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

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

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

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

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

  • 相关阅读:
    oracle数据库体系架构详解
    数据库迁移之从oracle 到 MySQL
    一个专业DBA应具备的技能
    Oracle 内存参数调优设置
    正向代理与反向代理的区别
    负载均衡的几种常用方式
    Java虚拟机JVM学习07 类的卸载机制
    Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论
    Git 撤销修改
    Git 分支管理和冲突解决
  • 原文地址:https://www.cnblogs.com/aidenzdly/p/11052947.html
Copyright © 2011-2022 走看看