linux下开机自启动及系统服务添加

转载 2015年07月09日 17:21:22

在Linux系统如何让程序开机时自动启动

 

      核心提示:系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”-->“所有程序”-->“启动”里面放个快捷方式就行,那Linux系统下呢?...系统的服务在开机时一般都可以自动启动,那在linux系统下如果想要程序在开机时自动启动怎么办?我们知道在 windows系统“开始”-->“所有程序”-->“启动”里面放个快捷方式就行,那Linux系统下呢?
 
这也是一个比较简单的问题,有不少的方法可以解决,这里介绍三种方法。因为是简单介绍,所以具体细节不是很详细,可以通过man看看相关手册。
 
一、/etc/rc.local
这是一个最简单的方法,编辑“/etc/rc.local”,把启动程序的shell命令输入进去即可(要输入命令的全路径),类似于windows下的“启动”。

使用命令 vi  /etc/rc.local   

然后在文件最后一行添加要执行程序的全路径。

例如,每次开机时要执行一个haha.sh,这个脚本放在/opt下面,那就可以在“/etc/rc.local”中加一行“/opt/./haha.sh”,或者两行“cd /opt”和“./haha.sh”。
 
二、crontab(类似于windows的任务计划服务)
通过crontab可以设定程序的执行时间表,例如让程序在每天的8点,或者每个星期一的10点执行一次。
crontab -l 列出时间表;
crontab -e编辑时间表;
crontab -d删除时间表;
 
“-l”没什么可说的,就是一个查看而已;
“-e”是编辑,和vi没什么差别(其实就是用vi编辑一个特定文件);
“-d”基本不用,因为它把该用户所有的时间表都删除了,一般都是用“-e”编辑把不要了的时间表逐行删除;
 
那到底该如何编辑呢?
 
crontab文件的格式是:M H D m d CMD。
一个6个字段,其中最后一个CMD就是所要执行的程序,如haha.sh。
M:分钟(0-59)
H:小时(0-23)
D:日期(1-31)
m:月份(1-12)
d:一个星期中的某天(0-6,0代表周日)
 
这5个时间字段用空格隔开,其值可以是一个数字,也可以用逗号隔开的多个数字(或其他) ,如果不需设置,则默认为“*”。
 
例如,每天的8点5分执行haha.sh,就是“5 8 * * * /opt/./haha.sh”。
 
好像和“开机程序自动启动”扯远了,现在回归正题。其实上面介绍的crontab的功能已经具备了开机自动启动的能力,可以写一个监测脚本,每5分钟执行一次(*/5 * * * * ./haha.sh),如果程序不在了就重新启动一次。
 
三、注册系统服务
操作系统自带的服务,如ssh,ftp等等,开机都是自动启动的,我们也可以通过这种方式让自己开发的程序提高“身价”。

 

比如我想把某个已经安装了的服务添加为系统服务,可以执行以下命令:

chkconfig --add 服务名称          (首先,添加为系统服务,注意add前面有两个横杠)

 

chkconfig -leve 启动级别 服务名 on         

(说明,3级别代表在命令行模式启动,5级别代表在图形界面启动,on表示开启)

 

chkconfig -leve 启动级别 服务名 off              

(说明,off表示关闭自启动)

 

例如:chkconfig -level 3 mysql on                     (说明:让mysql服务在命令行模式,随系统启动)

也可以使用   chkconfig --add 服务名称    来删除系统服务

******************************************************************************************

如果要查看哪些服务被添加为系统服务可以使用命令 :

   ntsysv  或者chkconfig --list

 

如果要查看哪些程序被添加为自启动,可以使用命令  :

cat   /etc/rc.local    (查看这个文件中添加了哪些程序路径)

*******************************************************************************************

 

 下面举例说说,如何把一个shell脚本添加为系统服务,并跟随系统启动:

可以看到“/etc/rc.d/init.d”下有很多的文件,每个文件都是可以看到内容的,其实都是一些shell脚本。
系统服务的启动就是通过“/etc/rc.d/init.d”中的脚本文件实现的。我们也可以写一个自己的脚本放在这里。
脚本文件的内容也很简单,类似于这个样子(例如起个名字叫做“hahad”):
. /etc/init.d/functions
start() {
        echo "Starting my process "
        cd /opt
        ./haha.sh
}
stop() {
        killall haha.sh
        echo "Stoped"
}
写了脚本文件之后事情还没有完,继续完成以下几个步骤:
chmod +x hahad                    #增加执行权限
chkconfig --add hahad             #把hahad添加到系统服务列表
chkconfig hahad on                 #设定hahad的开关(on/off)
chkconfig --list hahad               #就可以看到已经注册了hahad的服务

 

**************************************************************************************************************

***********************************************注意**********************************************************

**************************************************************************************************************

写了脚本,想用命令chkconfig加载自启动.提示"**服务不支持chkconfig",原来是自己写的脚本时,忘记写两行了.开头一般要这样写

#!/bin/bash
#chkconfig:345 61 61 //此行的345参数表示,在哪些运行级别启动,启动序号(S61);关闭序号(K61);之前序号用124和224都报错,后来改成两位的就成功了,不知道为什么
#description:Apache //此行必写,描述服务.

把脚本拷贝至/etc/init.d/目录下,执行命令:
#ln -s /etc/init.d/httpd /etc/rc.d/rc3.d/S61httpd
#ln -s /etc/init.d/httpd /etc/rc.d/rc4.d/S61httpd
#ln -s /etc/init.d/httpd /etc/rc.d/rc5.d/S61httpd

再执行
#chkconfig --levels httpd 345 on


这时候才完成了全部工作。

Linux中设置服务自启动的三种方式

有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务主要用三种方式进行这一操作: ln -s 在/etc/rc.d/rc*.d目录中建立/e...
  • deranotoo
  • deranotoo
  • 2016年12月05日 16:28
  • 865

Ubuntu下添加开机启动项的2种方法

这篇文章主要介绍了Ubuntu下添加开机启动项的2种方法,在ubuntu中添加启动脚本的方法,需要的朋友可以参考下 1、方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc....
  • u012501054
  • u012501054
  • 2017年05月03日 14:30
  • 1365

CentOS 7.x设置自定义开机启动,添加自定义系统服务

Centos 系统服务脚本目录 /usr/lib/systemd/ 有系统(system)和用户(user)之分,如需要开机没有登陆情况下就能运行的程序, 存在系统服务(system)里,即:/li...
  • sageparadise
  • sageparadise
  • 2016年02月02日 10:47
  • 1372

在Linux中利用Service命令添加系统服务及开机自启动

近期由于做嵌入式项目需要,要求将编写的程序在板载系统开机时自启动。这里做个笔记,备忘。 1 概念 通过查资料发现linux启动服务是用 SERVICE + COMMAND。这里的command命令本身...
  • u013554213
  • u013554213
  • 2017年12月13日 15:44
  • 310

Linux中设置服务自启动的三种方式

有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作...
  • sinat_25306771
  • sinat_25306771
  • 2016年10月12日 15:38
  • 11508

linux精简开机系统启动

和Windows系统一样,在Linux服务器运行的过程中,也会有很多无用的软件服务默认就在运行,这些服务占用了很多系统资源,而且带来了安全隐患,因此要关掉。1.重要的开机自启动服务新装Linux系统之...
  • codeTZ
  • codeTZ
  • 2016年08月22日 12:18
  • 1117

Linux中自启动某项服务

Linux自启动某项服务一.踩的坑由于我在电脑上重新安装Linux虚拟机,自信的我以为用了Linux这么久,应该没有什么难度,但是从我开始重新安装Linux系统才知道这么辣鸡的我。这里我就以开启SSH...
  • u014484863
  • u014484863
  • 2017年05月05日 12:15
  • 928

Linux配置启动项,自启动服务

Linux下有两种机制,一个是旧式的System V initialization,它来源于Unix并且至今仍被各种Linux distros所采用;另一种是近几年提出的Upstart机制。 参考:h...
  • hengyunabc
  • hengyunabc
  • 2014年02月08日 21:02
  • 14873

RedHat系列开机启动脚本顺序

RedHat系列Linux开机启动脚本顺序 如果服务器重启之后还需要手工开启相关服务、那还说明上次的配置工作未完成,现特地总结了下red hat linux下开机自动启动脚本所涉及的知识和方法、如下...
  • sdd00001
  • sdd00001
  • 2013年11月16日 17:46
  • 4897

linux添加开机自启动脚本示例详解

linux开机启动的顺序及添加开机自启动脚本的方法
  • linuxshine
  • linuxshine
  • 2017年02月17日 18:19
  • 7138
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下开机自启动及系统服务添加
举报原因:
原因补充:

(最多只允许输入30个字)