将可执行程序设为linux服务启动

      如何将我们自己的程序设为linux的一个服务程序,并实现开机启动,需要经过如下三步:

      1 把可执行程序放在一个linux系统可以找到的地方。
      在linux终端下输入env | grep PATH,在输出的目录就是系统能找到的位置,将我们的程序放到其中的一个目录下即可,我将我的程序serialread放在/usr/local/bin目录下。
      2 在目录/etc/init.d/下,新建一个以服务为文件名的文件,在我的实验中,建立了serialread的文件
      如果我们打开目录 /etc/init.d/,看到的文件其实都是服务程序文件,每个文件的内容都大同小异,我们会看到,这里的文件在文件结构上几乎是一样的。几乎每个文件 都有 start 、stop、restart和status这样的标志,对,我们新建的这个文件也具有相同的结构,只是在这些标志内部把相应的可执行程序换成我 们自己的可执行程序即可。如我的serialread文件的内容如下:
            #! /bin/sh
            ### BEGIN INIT INFO
            #N=/usr/local/bin/serialread
            set -e
            case "$1" in
              start)
                  # make sure privileges don't persist across reboots
                  nohup /usr/local/bin/serialread &
                  ;;
              stop)
                  pkill serialread
                  ;;
              restart)
                  pkill serialread
                  nohup /usr/local/bin/serialread &
                  ;;
            esac
            exit 0
      3 在目录/etc/rc3.d,新建一个指向第2步中建立的服务文件的符号连接文件。
      打开目录/etc/rc3.d,可以看到这里都是符号连接文件(相当于windows中的快捷方式),采用一下命令格式
            ln -sf 目标文件名 连接文件名
      连接文件名采用“SXX目标文件名”的格式。其中XX一般是一个从1到100的整数,它表示启动优先级,数字越大,优先级越低,比如服务A的运行要依赖服务B,那A的XX数字就应该大于B的。后跟“目标文件名”是为了一目了然,一看就知道是哪个文件的符号连接。目录 /etc/rc3.d/ 是系统启动时自动搜索的目录,该目录下的符号连接文件的目标文件,都将被运行,这就是在这个目录建立符号连接的原因——为了开机就运行。
      如本例中,
            cd /etc/rc3.d/
            ln -sf /etc/init.d/serialread S99serialread
      完成以上3个步骤,你就把自己的一个可执行程序做成系统的一个服务了,它具有我们一开始说的几个特定。我们可以用service命令控制这个程序了:
            启动:service serialread start
            停止:service serialread stop
            重启:service serialread restart
      上面的serialread为服务名,也就是在第2步中建立的文件名。
      4 编辑/etc/rc.local文件,添加启动脚本,内容如下:
            #!/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.
            service serialread start
            exit 0
      这样serialread这个服务就可以开机启动了,呵呵

将可执行程序设为linux服务启动的更多相关文章

  1. linux 服务启动

    在linux上部署java服务的时候,发现服务启动正常,但是[ps -ef|grep java].[jps]看不到服务的运行. 查资料发现,[Java -jar Test.jar &      ...

  2. 讲一个linux服务启动报错问题排查

    例子 首先我们在/usr/lib/systemd/system目录下创建一个服务文件,写下服务启动任务配置.下面我以prometheus的node_exporter为例 vim /usr/lib/sy ...

  3. linux 服务 启动 关闭 列表

    ##查看服务在每个级别的运行状态 chkconfig --list httpd           0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:启用  6:关闭 bluetooth ...

  4. Linux服务启动出现java.net.UnknownHostException:

    第一种情况: 一般是在/etc/hosts文件,在文件最后加入这句配置,重启服务即可   172.xx.xxx.xxx localhost.localdomain xxx-houtai1 第二种情况: ...

  5. linux下启动、添加或删除服务命令

    在Linux系统下,一个Services的启动.停止以及重启通常是通过/etc/init.d目录下的脚本来控制的.然而,在启动或改变运行级别时,是在/etc/rcX.d中来搜索脚本.其中X是运行级别的 ...

  6. Linux下的MySQL简单操作(服务启动与关闭、启动与关闭、查看版本)

    小弟今天记录一下在Linux系统下面的MySQL的简单使用,如下: 服务启动与关闭 启动与关闭 查看版本 环境 Linux版本:centeros 6.6(下面演示),Ubuntu 12.04(参见文章 ...

  7. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图     方法2:利用命令行chkconfig命令进行设置 简要说明 ...

  8. Linux Oracle服务启动&停止脚本与开机自启动

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

  9. Linux Oracle服务启动&停止脚本与开机自启动[转]

    在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介 ...

随机推荐

  1. CF1264D2 Beautiful Bracket Sequence

    我们枚举每两个字符的空档,统计一个空档左边有 \(l\) 个左括号, 右边有 \(r\) 个右括号,左边有 \(u\) 个问号,右边有 \(v\) 个问号. 则对于 \(p\) 的答案 \(ans_p ...

  2. 从350ms到80ms,揭秘阿里工程师 iOS 短视频优化方案

    内容作为 App 产品新的促活点,受到了越来越多的重视与投入,短视频则是增加用户粘性.增加用户停留时长的一把利器.短视频的内容与体验直接关系到用户是否愿意长时停留,盒马也提出全链路内容视频化的规划,以 ...

  3. 浅谈 asp.net core web api

    希望通过本文能够了解如下内容: ControllerBase Attributes Action的返回值类型 ControllerBase 当我们开始实际上项目, 真正实操 anc 时, 肯定会用到 ...

  4. Linux下Qt创建共享库与链接共享库详解

    随着程序写的逐渐变多,或多或少的我们都会使用别人写好的库:或者我们不想让别人看到我们的一些核心程序,可以将核心程序封装成库.本次和大家分享的是在Ubuntu下使用Qt生成共享库以及在Qt中链接共享库的 ...

  5. SpringBoot数据访问之整合mybatis注解版

    SpringBoot数据访问之整合mybatis注解版 mybatis注解版: 贴心链接:Github 在网页下方,找到快速开始文档 上述链接方便读者查找. 通过快速开始文档,搭建环境: 创建数据库: ...

  6. openresty lua-resty-string md5 sha aes random string

    安装 https://github.com/openresty/lua-resty-string $ sudo opm get openresty/lua-resty-string $ ls -al ...

  7. (二)Superset 1.3图表篇——Time-series Table

    (二)Superset 1.3图表篇--Time-series Table 本系列文章基于Superset 1.3.0版本.1.3.0版本目前支持分布,趋势,地理等等类型共59张图表.本次1.3版本的 ...

  8. Django使用tinymce富文本编辑器

    1 - 安装 pip install django-tinymce==2.6.0 2 - 注册app INSTALLED_APPS = ( ... 'tinymce', ) 3 - 在setting中 ...

  9. github搜索技巧小结

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. Linux内核中的Workqueue机制分析

    1. 什么是workqueue Linux中的workqueue(工作队列)主要是为了简化在内核创建线程而设计的.通过相应的工作队列接口,可以使开发人员只关心与特定功能相关的处理流程,而不必关心内核线 ...