Linux利用Service命令添加系统服务及开机自启动
近期由于做嵌入式项目需要,要求将编写的程序在板载系统开机时自启动。这里做个笔记,备忘。
1 概念
通过查资料发现linux启动服务是用SERVICE +COMMAND。这里的command命令本身也是一个脚本。比如说:service networking start;中networking就是一个shell脚本。注意:这里的脚本没有文件后缀.sh。
接下来,将介绍如何做一个属于自己的service命令。
首先可以了解一下service这个命令的原理。这里我就偷一下懒,你们自己去问度娘或找一下“man”(在终端上man service下)。
接下来我简单说下service的运行过程。以networking为例:service networking start。
首先,sevice 会去/etc/init.d下寻找networking脚本,start是networking脚本里的一个参数(你可以去查看networking这个脚本支持的参数),然后告诉系统运行networking这个脚本,剩下的事情就交给networking脚本去坐了,事实就是这么简单。
至此,你们应该知道如何添加一个service命令了吧。
编写一个脚本,然后把它放在/etc/init.d这个目录下,再用service + 脚本名字 运行即可。如果是要开机自动启动那就得用chkconfig命令了。
注意:
A、service这个命令往往是即时生效,不用开关机,但是重启后服务会回到默认状态。
B、chkconfig是用于把服务加到开机自动启动列表里,只要启动它,就能自动启动,重启后永久生效即:
chkconfig --add COMMAND
chkconfig COMMAND on/off 重启后永久生效
如果你们的机器不支持chkconfig命令,下面提供另一种开机自动启动系统服务的方法。
首先确保脚本已在/etc/init.d/目录下,然后用:update-rc.d xxx defaults NN命令(NN为启动顺序),将脚本添加到初始化执行的队列中去。
注意如果脚本需要用到网络,则NN需设置一个比较大的数字,如99。
2 实例
接下来我带大家做一下试验,帮助大家更好的理解如何在Linux中利用Service命令添加系统服务
2.1 首先编写demo程序:hello.c
- #include <stdio.h>
- main()
- {
- FILE *fp;
- char a[] = "Hello world!";
- fp=fopen("hhh.txt","a+");
- fputs(a,fp);
- return 0;
- }
2.2 编译hello.c
- gcc -g hello.c -o hello
2.3 在/etc/init.d目录下添加脚本test
- #!/bin/bash
- start(){
- echo "------------------test----------------"
- cd /home/xxx //hello的所在文件夹的绝对路径
- ./hello
- }
- case $1 in
- start):
- start
- ;;
- stop):
- echo "-----------------stop------------------"
- ;;
- esac
- exit 0
2.4 设置权限
- chmod 777 /etc/init.d/test
2.5 利用service启动hello
- service test start
2.6 设置开机自动启动
- chkconfig --add test
- chkconfig test on/off //重启后永久生效
如果2.6不起作用,按2.7提供的方法执行
2.7 通过update-rc.d 命名设置开机自启动
- cd /etc/init.d
- sudo update-rc.d test defaults 95
注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。该命令的输出信息参考如下:
- update-rc.d: warning: /etc/init.d/test missing LSB information
- update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
- Adding system startup for /etc/init.d/test ...
- /etc/rc0.d/K95test -> ../init.d/test
- /etc/rc1.d/K95test -> ../init.d/test
- /etc/rc6.d/K95test -> ../init.d/test
- /etc/rc2.d/S95test -> ../init.d/test
- /etc/rc3.d/S95test -> ../init.d/test
- /etc/rc4.d/S95test -> ../init.d/test
- /etc/rc5.d/S95test -> ../init.d/test
卸载启动脚本的方法:
- cd /etc/init.d
- sudo update-rc.d -f test remove
命令输出的信息参考如下:
- Removing any system startup links for /etc/init.d/test ...
- /etc/rc0.d/K95test
- /etc/rc1.d/K95test
- /etc/rc2.d/S95test
- /etc/rc3.d/S95test
- /etc/rc4.d/S95test
- /etc/rc5.d/S95test
- /etc/rc6.d/K95test
3 Ubuntu设置开机启动脚本的方法
- #!/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.
- exit 0
- sudo chmod 777 test
- ps -ef | grep test | grep -v grep
去查看脚本test的进程以确定它是否被执行,但是查不到。后来一想,可能是shell执行了该脚本,所以无法查到该脚本的进程。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
CentOS服务器安装ab命令压力测试网站性能
网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。 性能测试工具目前最常见的有以下几种:ab、http_load、webbench、siege。今天我们专门来介绍ab。 ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。 下面我们开始介绍有关ab命令的使用: 1、ab的原理 2、ab的安装 3、ab参数说明 4、ab性能指标 5、ab实际使用 一、ab的原理 ab是apachebench命令的缩写。 ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。 ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原...
-
下一篇
Linux 中将用户添加到组的指令
在 Linux 操作系统下,如何添加一个新用户到一个特定的组中?如何同时将用户添加到多个组中?又如何将一个已存在的用户移动到某个组或者给他增加一个组?对于不常用 Linux 的人来讲,记忆 Linux 那繁多的命令行操作真是件不容易的事。 在 Linux 中,增加用户或改变用户的组属性可以使用useradd或者usermod命令。useradd增加一个新用户或者更新默认新用户信息。usermod则是更改用户帐户属性,例如将其添加到一个已有的组中。 在 Linux 用户系统中存在两类组。第一类是主要用户组,第二类是附加用户组。所有的用户帐户及相关信息都存储在/etc/passwd文件中,/etc/shadow和/etc/group文件存储了用户信息。 目录 Contents 1useradd 示例 – 增加一个新用户到附加用户组 2useradd 示例 – 增加一个新用户到主要用户组 3usermod 示例 – 将一个已有用户增加到一个已有用户组中 4附:管理用户(user)和用户组(group)的相关工具或命令 useradd 示例 – 增加一个新用户到附加用户组¶ 新增加一个用户并将...
相关文章
文章评论
共有0条评论来说两句吧...