linux -- 启动时启动服务或者执行命令
运行等级
首先,我们需要知道Linux系统关于运行等级的知识。在不同的linux系统上(例如ubuntu和Fedora)这些数字与和所代表的意义可能不同,但主要的有以下几个:
- 单用户模式。
- 多用户模式。
- 网络多用户模式。
- 用于特殊目的的预留
- 添加显示管理器到等级3
因此,对于普通的运行等级,服务使用等级3,这时不管X11是否启动,服务将自动启动。
服务,守护进程,服务器
在Ubuntu中,可以使用sys-rc-conf命令简单的选择需要启动的已安装服务。
在Fedora下,可以使用chkconfig达到同样的目的。
自定义脚本与应用
当然也有其它的方法配置系统启动时需要自动运行的服务与应用程序。在/etc/rcX.d(X表示运行等级)目录下,有许多需要运行在每个等级下的命令/脚本/应用。可以把具有某种目的(维护/挂载文件系统等)的脚本链接到这个目录下,脚本就会在系统启动时执行。
创建连接时,需要注意命名格式:Sxx或者Syy(xx和yy使用数字代替,例如K36mysqld和S64mysqld)。这些命令将根据数字的大小依次执行,字母S与K是告诉系统这是个启动或者结束命令(S->Start, K->Kill)。就是说,在选择中运行等级下,系统启时执行S开头的连接,关闭时执行K开头的链接。
例如:
$ ls /etc/rc0.d/ -ano
total
drwxr-xr-x. Apr : .
drwxr-xr-x. Mar : ..
lrwxrwxrwx. Dec : K01livesys-late -> ../init.d/livesys-late
lrwxrwxrwx. Dec : K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. Apr : K80redis -> ../init.d/redis
lrwxrwxrwx. Apr : K90network -> ../init.d/network
lrwxrwxrwx. Dec : K99livesys -> ../init.d/livesys
另一种方法:
可以在/etc/rc.local文件中加入需要执行的命令,当系统启动完成时,这些命令将被执行。
就是说,这些命令将在运行等级3后被执行,MySql, Apache等服务后启动完后运行。尽管这是一种简单的方案,但我还是推荐使用上一种方案,因为上一方案可以完全控制执行哪此命令,以及执行的时间和位置。当然这可能需要你有对Linux系统环境很好的了解。
引用
linux -- 启动时启动服务或者执行命令的更多相关文章
- JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令
通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过.基本原理是,首先通过 Runtime.getR ...
- tomcat启动时启动窗口出现乱码一招搞定
先来看看问题(图示),在tomcat的启动窗口打印的启动信息中包含了大量的中文乱码,虽然这些对tomcat本身的使用没有任何影响,但却非常碍眼,影响视觉效果! tomcat启动时启动窗口出现乱码的解决 ...
- Linux下如何保持gnome-terminal窗口执行命令后停留而不立刻关闭(gnome-terminal -x)
Linux下如何保持gnome-terminal窗口执行命令后停留而不立刻关闭(gnome-terminal -x) 转自:http://jakfruit.blog.163.com/blog/stat ...
- Debian GNU Linux服务列表的获取、服务的关闭/开启、服务在启动时是否自己主动执行的生效/失效
/********************************************************************* * Author : Samson * Date ...
- 在web项目启动时,使用监听器来执行某个方法
在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 这里写了个简 ...
- dubbo启动时检查服务
Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true". 可以通过 che ...
- springBoot启动时让方法自动执行的几种实现方式
一.开篇名义 在springBoot中我们有时候需要让项目在启动时提前加载相应的数据或者执行某个方法,那么实现提前加载的方式有哪些呢?接下来我带领大家逐个解答 1.实现ServletContextAw ...
- 运行docker容器镜像2(指定容器启动时启动的脚本)
docker中启动容器有以下两种情况. 第一种是通过 # docker run containerid 启动一个容器. 第二种是重新启动已经关闭的容器. # docker start containe ...
- linux免交互登陆远程主机并执行命令(密钥对和Expect)
原文章摘自:http://lizhenliang.blog.51cto.com/7876557/1607723/ Linux下实现免交互登陆一般有两种: 1. SSH无密码认证方式 客户端使用ssh- ...
随机推荐
- LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。
var data = DataSource.Skip(iDisplayStart).Take(iDisplayLength).Select(o => new { MatNR = o.MatNR, ...
- iOS 生成本地验证码
在应用程序注册.登陆或者有关支付确认的界面,经常会用到验证码,验证码有的是通过手机发送获取的,有的是在本地点击获取的,通过手机发送获取的动态验证码可以使用第三方类库实现,本地点击获取的是在本地自己绘制 ...
- Objective-C ,ios,iphone开发基础:http网络编程
- (IBAction)loadData:(id)sender { NSURL* url = [NSURL URLWithString:@"http://162.105.65.251:808 ...
- 给jdk写注释系列之jdk1.6容器(8)-TreeSet&NavigableMap&NavigableSet源码解析
TreeSet是一个有序的Set集合. 既然是有序,那么它是靠什么来维持顺序的呢,回忆一下TreeMap中是怎么比较两个key大小的,是通过一个比较器Comparator对不对,不过遗憾的是,今天仍然 ...
- jquery手写焦点轮播图-------解决最后一张无缝跳转第一张的问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [改善Java代码]预防线程死锁
线程死锁DeadLock是多线程编码中最头疼的问题,也是最难重现的问题,因为Java是单进程多线程语言.
- sqlserver和oracle中对全半角的转换
oracle中对全半角的转换 to_single_byte(c)转换成半角 to_multi_byte(c)转换成全角 SELECT To_single_byte('881898?71') FROM ...
- poj 1904 强连通分量
思路:先有每个儿子向所有他喜欢的姑娘建边,对于最后给出的正确匹配,我们建由姑娘到相应王子的边.和某个王子在同一强连通分量,且王子喜欢的姑娘都是该王子能娶得.思想类似匈牙利算法求匹配的时候,总能找到增广 ...
- 转:云计算的三种服务模式:IaaS,PaaS和SaaS
转: http://www.cnblogs.com/beanmoon/archive/2012/12/10/2811547.html 云服务”现在已经快成了一个家喻户晓的词了.如果你不知道PaaS, ...
- 为什么Java byte 类型的取值范围是-128~127 (转)
概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ,然 后 对 整个数 加 1 步骤: 1.确定byte是1个字节,也就是8位 2.最大的应该是0111 1111,因为第一位是符号位, ...