`
memorymyann
  • 浏览: 270621 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

如果你只是想知道如何添加一个开机启动的服务时候,那建议你直接看本文第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某些文件出错了,你可以进单用户模式下修改这些文件,然后再进入相应的模式。如何进入单用户模式是个很简单的内容,大家可以查询相关的资料。

分享到:
评论
1 楼 qwe_rt 2010-12-05  
HI ,非常nice的文章,
在阅读过程中,我发现我的ubuntu10.10没有这个文件(/etc/inittab)。

相关推荐

    Arm-linux 自定义开机启动程序,避开从桌面启动

    - [Linux开机启动服务设置](http://www.cnblogs.com/gzggyy/archive/2012/08/07/2626574.html) - [Linux系统启动过程详解](http://linux.chinaunix.net/techdoc/install/2006/03/10/928782.shtml) - [Linux开机启动...

    ARM Linux 程序开机自启动方法

    经常自己编写的应用程序,需要手动运行,本文档教你修改系统文件,让你的应用程序开机自启。

    centOS7设置Tomcat8开机启动

    在Linux系统中,尤其是CentOS 7,配置Apache Tomcat 8作为开机启动服务是确保服务器启动时自动运行Web应用程序的关键步骤。这个过程对于软件实施工程师来说非常重要,因为它可以简化维护工作,避免每次系统重启后...

    linux学习-将seafile启动脚本设置为开机启动服务.doc

    在Linux环境中,如果你通过编译安装了Seafile,而不是通过包管理器如yum,那么你需要手动创建一个Systemd服务文件来实现开机启动。 首先,我们需要了解Systemd的基本概念。Systemd是Linux系统中的初始化系统,用于...

    Linux DB29.5 开机自启动

    5. **测试与启动**:完成配置后,先用`systemctl start db2start`或`/etc/init.d/db2start start`测试启动服务,确保一切正常。然后,重启系统,验证DB2是否能自动启动。 6. **日志监控**:为了监控DB2的启动状态,...

    weblogic 开机自动启动

    手动启动服务将不会生效,只有在系统启动时服务才会生效。 删除服务 如果我们需要删除服务,可以通过注册表来实现。打开注册表,定位到 `HKEY_LOCAL_MACHINE\SYSTEM\services`,找到我们创建的服务,右键删除,...

    linux 开机自启动redis服务的方法

    保存并退出编辑器后,我们需要告诉`systemd`这个新的服务文件,并启用它作为开机启动服务: ```bash sudo systemctl enable redis ``` 接下来,你可以使用以下命令来管理Redis服务: - 启动Redis服务: ```bash ...

    nginx做成开机启动服务

    将Nginx配置为开机启动服务意味着在系统启动时,Nginx服务器会自动运行,无需手动启动,这对于保持网站的持续可用性和稳定性至关重要。下面我们将详细探讨如何在32位和64位系统上将Nginx设置为开机启动服务。 1. **...

    tomcat6开机启动

    标题中的“tomcat6开机启动”指的是在操作系统启动时,能够自动运行Tomcat 6.0.33服务器,使得用户无需手动开启服务,提高工作效率。Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,它是一个开源的Java ...

    linux设置Oracle开机自动启动.docx

    - **rc.local文件的作用**:`/etc/rc.d/rc.local` 是Linux系统启动过程中最后一个被调用的脚本,因此可以在该脚本中添加自定义命令来实现服务的自动启动等功能。 - **添加启动命令**:为了实现Oracle实例的自动启动...

    开机引导启动ISO装双系统

    如果有遗漏,需要手动添加。 10. **测试启动菜单**:最后,再次重启电脑,验证启动菜单是否正常工作,两个系统都能顺利启动。 通过以上步骤,你就成功地使用EasyBCD从ISO文件安装了双系统。记住,管理和维护双系统...

    java在linux系统下开机启动无法使用sudo命令的原因及解决办法

    在Linux系统中,尤其是CentOS 5.2这样的老版本,有时会遇到Java程序在开机启动时无法使用`sudo`命令的问题。这个问题通常涉及到Linux的启动流程、`sudo`命令的配置以及用户权限等方面。在给出的场景中,一个WEB应用...

    在linux下如何设置开机自动启动程序.pdf

    - 使用 `systemctl enable service_name` 可以使服务开机启动,`systemctl start/service_name` 用来启动服务。 6. **运行级别** - Linux的运行级别是控制系统的运行状态,如运行级别1是单用户模式,5是图形界面...

    VMware虚拟机安装linux后,每次重启后网卡(ens33网卡失效)找不到了,需要手动添加.怎么解决

    - 并设置为开机启动:`sudo systemctl enable dhclient` 2. **检查网络配置文件**: - 对于较新的Ubuntu版本,网络配置通常在`/etc/netplan`目录下的`.yaml`文件中。打开文件,确保ens33接口的配置正确,例如: ...

    Magisk 开机运行模块

    【Magisk 开机运行模块】是一种在Android设备上利用Magisk框架实现的自启动脚本或服务,它能够在系统启动时自动执行特定的任务,比如安装Xposed框架、优化性能、增强安全性和隐私保护等。Magisk是知名的Android系统...

    java应用程序开机自动启动

    在Linux或Mac系统中,可以使用`init.d`脚本、`systemd`服务或者`crontab`定时任务来实现开机启动。 - `init.d`:创建一个符合特定规范的脚本,放置在`/etc/init.d/`目录下,然后通过`chkconfig`或`update-rc.d`...

    linux(centOS)下weblogic创建域部署项目到开机启动收集.pdf

    自动登录和开机启动 为了使WebLogic在系统启动时自动启动并免密登录,需进行以下配置: 1. 创建一个名为`boot.properties`的文件,内容包括:`username=你的用户名`和`password=你的密码`。将文件放在`/opt/...

    Centos 6和Centos 7下服务启动方法及添加到开机启动项的方法

    - **开机启动**:将服务添加到开机启动项中是非常重要的一步,它可以确保关键服务能够随系统的启动而启动,减少手动干预的需求。 - **配置文件路径**:在某些情况下,你可能需要修改服务的配置文件以满足特定需求,...

Global site tag (gtag.js) - Google Analytics