分享

linux手动添加开机启动的服务

 昵称10897937 2013-01-31

如果你只是想知道如何添加一个开机启动的服务时候,那建议你直接看本文第2部分,如果你想读的更流畅,那建议从头看起,如果你耐心不错,希望继续读的时候,就请读完本文。

 

第一部分,这里介绍一种最"原始的"(请原谅我这么称呼)的办法,当然它不一定是最好的,但肯定是有用的,而且对任何发行版,任何你想要加载的服务都是统一的。(不同的发行版可能有自己添加开机启动服务的办法,不同的软件也有自己添加到开机启动的办法)。这种办法缺点就是相对比较麻烦。

 

我们以自己的脚本为例。

步骤:

 

1.如果你看本文的目的是开机启动tomcat那么第一步你可以不用看了,当然希望你看下,肯定是有好处的。第一步是编写脚本,其实很多时候我们不用编写脚本,比如我们只是想开机启动tomcat(当然我们现在的办法对开机启动TOMCAT也是可行的),他的脚本已经写好了就是catalina.sh(可能会拼错了)。但任何脚本都必须遵守一种约定才能利用这种办法进行开机启动,约定就是:1.他必须是以  脚本名 start 这种带start方式启动, 2.他必须是以 脚本名 stop 这种方式终止。 很幸运catalina.sh遵循这种约定。(其实,第2条不必要遵守,因为我们开机启动的服务可能不需要停止,那你就不用遵守了,如果你开机启动的服务不需要启动,连第一条也不用遵守,当然这就没有意义了。当你需要从启服务时候,希望你遵守使用restart参数)。下面我编写了个简单的脚本,它遵守第一条:

[root@liumengli init.d]# cat tidus 
#!/bin/sh

case "$1" in
start)
        /userful_shell/echo_data.sh &
;;
stop)
        echo >/userful_shell/data.txt
;;
esac

exit 0
如果要启动的脚本并不遵守这种标准,那么在在看过上面脚本后,这个问题应该不难解决。这个脚本是如果参数是start就后台启动/userful_shell/echo_data.sh,如果是stop就清空/userful_shell/data.txt文件。下面给出/userful_shell/echo_data.sh的内容

[root@liumengli init.d]# cat /userful_shell/echo_data.sh 
#!/bin/sh

COUNT=1
while [ ${COUNT} -ge 0 ]
do
        echo "I love yuna" >> /userful_shell/data.txt
        sleep 10
done
exit 0
[root@liumengli init.d]# 
不难理解,不多做解释了。

 

第2步:在编写完遵循规则的脚本后,最好把它放在/etc/init.d/目录下,当然这不是必需的,只是一种习惯。执行cat /etc/inittab,可以看到语句 id:5:initdefault: 中间的数字5可能不是一样,可能是3也可能是5,当然也有其它的可能。如果是5的话就进入/etc/rc5.d/目录下,如果是3就进入/etc/rc3.d目录,依次类推。

 

第3步,在进入到/etc/rcN.d目录后(N为非负整数),将你上面编号的脚本链接到这个目录,最好按照下面的格式

ln -s 你编写好的脚本的绝对路径 ./SNN后面的字符就随便 ,ln命令本身不难,但链接后到该目录下的名字有一定的约束,你执行ls -l观察该目录下其它的内容,你会发现他们都是链接,此外,他们都是以K或者S开头,然后紧接的是2位或者3位的整数最后再接的是一个名字。S开头表示在启动你的脚本时候将会以start为参数,如果是以K为开头则表示会以stop为参数(既KILL的意思),后面的数字则表示他会在什么时候运行,01会最先运行,紧接着是02,03,04以此类推,在正确的做完链接以后,从新启动你的系统就可以看到你要的服务已经被运行了,当然你的保证你以上的三个步骤都是正确的。

 

 

第2部分,更简单的办法:

 

至此你已经掌握了linux开机启动最复杂的办法了(不知道是不是之一,有点麻烦而且带点蠢的感觉,但他肯定是可以用的),还有更好的办法,你不妨执行下cat /etc/rc.local看看这个文件,不需要任何帮助手册和文档,看完这个文件后你就有更好的办法来添加一个开机启动的服务。

 

第3部分,更多的关于linux开机的内容

 

当你有更多耐心来读我这篇算是冗长的文章的下半段时候,你会掌握linux开机的更多内容。(当然我相信这些东西是有用的)。

 

执行cat /etc/inittab,你可以发现这么几句

id:5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

 

第一行就表示该系统启动后会在运行级别5下运行,而5模式下运行会对应l5:5:wait:/etc/rc.d/rc 5,既会启动所有rc5.d目录中的脚本,linux运行级别一共分为7种:

 

0启动停止整个系统

1单用户或管理模式

2多用户模式,部分网络服务启动。

3正常操作运行模式,启动所有的网络服务

4用户自定义模式,可以用该级别来定制所需要的运行服务

5某些unix操作系统变体将其作为缺省的x-windows模式,也有些把它作为系统维护模式

6重启动

 

笔者的默认模式是5(fedora系统),不同模式下区别就是各自启动的服务不同。启动服务最少的就是1,单用户模式(有点像windows下的修复模式),它仅仅包含了作为一个操作系统所必需启动的进程,这种启动模式作用就是在你的linux某些服务出问题而导致你无法启动的时候,例如你修改了x-windows某些文件出错了,你可以进单用户模式下修改这些文件,然后再进入相应的模式。如何进入单用户模式是个很简单的内容,大家可以查询相关的资料。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多