Linux - 开机自运行sh

之前写过一个supervisor自运行的介绍,但是真当难起来,看到满篇的参数配置,觉得一眼下去还是解决不了问题。正好在开发一个achkconfig
pi接口,部署再次遇到相同的问题,正好有先关的sh脚本介绍,就拾掇起来,供参考。

主要参考配置Nginx和uWsig服务开机自动启动,但因项目不能直接跑通,做了些调整。

centos

配置Nginx开机自启动

  • 创建启动脚本

    vi /etc/init.d/nginx
  • 脚本内容

    #!/bin/bash
    # chkconfig: - 85 15
    # description: nginx is a World Wide Web server. It is used to serve
    
    nginx=/usr/bin/nginx
    conf=/usr/local/nginx-1.12.2/conf/nginx.conf
    
    case $1 in
      start)
          echo -n "Starting Nginx"
          $nginx -c $conf
          echo " done"
      ;;
    
      stop)
          echo -n "Stopping Nginx"
          $nginx -s stop
          echo " done"
      ;;
    
      test)
          $nginx -t -c $conf
      ;;
    
      reload)
          echo -n "Reloading Nginx"
          $nginx -s reload
          echo " done"
      ;;
    
      restart)
          $0 stop
          $0 start
      ;;
    
      show)
          ps -aux|grep nginx
      ;;
    
      *)
          echo -n "Usage: $0 {start|restart|reload|stop|test|show}"
      ;;
    
    esac

    注意注释的两行内容需要加上,否则添加为系统服务时会报错:

    service nginx does not support chkconfig
  • 脚本设置可执行属性

    $ chmod +x /etc/init.d/nginx
  • 添加为系统服务

    $ chkconfig --add nginx
    $ chkconfig nginx on
  • 启动nginx

    $ service nginx start
  • nginx其他命令

    $ service nginx stop
    $ service nginx reload
    $ service nginx test

uWsgi开机自启动

  • 创建脚本

    vi /etc/init.d/uwsgi
  • 脚本内容

    #!bin/bash
    #chkconfig: - 85 15
    #description: nginx is a World Wide Web server. It is used to serve
    uwsgi=/usr/local/bin/uwsgi
    web_conf=/etc/uwsgi9090.ini
    
    case $1 in
      start)
          echo -n "Starting uWsgi"
          nohup $uwsgi --ini $web_conf >/web/uwsgi.log 2>&1 &
          echo " done"
      ;;
    
      stop)
          echo -n "Stopping uWsgi"
          killall -9 uwsgi
          echo " done"
      ;;
    
      restart)
          $0 stop
          $0 start
      ;;
    
      show)
          ps -ef|grep uwsgi
      ;;
    
      *)
          echo -n "Usage: $0 {start|restart|stop|show}"
      ;;
    
    esac

    注意这里几点说明:

    • nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束.该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。

    用法:以nohup开头,以&结束

    $ nohup command &

    此处使用如下:

    $ nohup $uwsgi -i $api_conf >/var/log/uwsgi/project-api.log 2>&1 &
    • 注意此处也需要加注释
    • uwsgi stop命令显示没有killall:
    yum install psmisc
  • 设置可执行属性

    $ chmod +x /etc/init.d/uwsgi
  • 添加系统服务(开机自启动)

    chkconfig --add uwsgi
    chkconfig uwsgi on
  • 启动uWsgi

    service uwsgi start

汇总开机自启动

从上来开,开机自启动:

  • 创建sh脚本
  • 设置权限chmod +x
  • 写入到系统服务chkconfig
  • 启动任务service

ubuntu

在ubuntu上直接通过命令安装nginx

apt-get install nginx

测试配置文件目录与centos不同

# centos:配置及安装目录
/usr/local/nginx

# ubuntu:命令
/usr/local/sbin
# ubuntu:配置
/etc/nginx

测试在/etc/init.d/nginx已经有了nginx自启脚本,只需要简单配置下即可实现开机自启:

$ sudo chmod a+x /etc/init.d/nginx 
$ vi /etc/rc.local
# rc.local文件的最后中添加如下的一行: /etc/init.d/nginx start

参考链接

配置Nginx和uWsig服务开机自动启动

Ubuntu中Nginx 开机自启动

@2018-03-12 21:23