300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux chkconfig 添加服务 开机启动

linux chkconfig 添加服务 开机启动

时间:2021-06-03 05:20:12

相关推荐

linux chkconfig 添加服务 开机启动

chkconfig使用说明

chkconfig是管理系统服务(service)的命令行工具。所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。

chkconfig可以更新(启动或停止)和查询系统服务(service)运行级信息。更简单一点,chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。

chkconfig 提供5个功能:

1. 设置service启动信息

# chkconfig name on/off/reset

on、off、reset用于改变service的启动信息。

on表示开启,off表示关闭,reset表示重置。

默认情况下,on和off开关只对运行级2,3,4,5有效,reset可以对所有运行级有效。例如,

# chkconfig httpd on

2. 设置service运行级别

# chkconfig --level levels

例如,

# chkconfig --level 2345 httpd on

指定运行级为2,3,4,5

等级0表示:表示关机

等级1表示:单用户模式

等级2表示:无网络连接的多用户命令行模式

等级3表示:有网络连接的多用户命令行模式

等级4表示:不可用

等级5表示:带图形界面的多用户模式

等级6表示:重新启动

3. 添加service

# chkconfig --add name

添加一个chkconfig管理的service,并在/etc/rc[0-6].d 目录下添加相应的符号链接(symbolic links)。

4. 移除service

# chkconfig --del name

从chkconfig 管理名单中删除该service,并且删除 /etc/rc[0-6].d 目录下所有与之关联的符号链接(symbolic links)。

5. 列出service的启动信息

# chkconfig --list [name]

如果不指定name,会列出所有services的信息。

每个service每个运行级别都会有一个启动和停止脚本;当切换运行级别时,init不会重启已经启动的service,也不会重新停止已经停止的service。

下面举例说明

(1).列出所有服务的启动情况

$ chkconfig --listauditd0:off 1:off 2:on 3:on 4:on 5:on 6:offredis0:off 1:off 2:off 3:off 4:off 5:off 6:offrestorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:offrpcbind0:off 1:off 2:on 3:on 4:on 5:on 6:offrpcgssd0:off 1:off 2:off 3:on 4:on 5:on 6:offrpcsvcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:offrsyslog0:off 1:off 2:on 3:on 4:on 5:on 6:offsaslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:offsmb 0:off 1:off 2:off 3:on 4:off 5:on 6:off。。。xinetd based services:rsync:offswat:off

(2)增加mysqld服务

$ chkconfig --add mysqld

(3)删除mysqld服务

$ chkconfig --del mysqld

(4)设置mysqld运行级别为2,3,4,5

$ chkconfig --level 2345 httpd on

(5)列出mysqld 服务启动信息情况

$ chkconfig --list mysqldmysqld0:off 1:off 2:on 3:on 4:on 5:on 6:off

(6)设置启动信息

$ chkconfig mysqld on

默认的运行级别为2,3,4,5

实际上,与4中命令作用是一样的。

====================================================

添加linux服务

所谓系统服务(service),就是随系统启动而启动,随系统关闭而关闭的程序。更通俗的讲,就是进程的开机启动。

本文主要介绍如何添加一个service。

1. 开发一个程序

首先开发一个软件,使其成为service。代码如下:

//capsule.c#include <unistd.h>#include <time.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <signal.h>int init_daemon();int main(){ init_daemon();while(1){ sleep(2);}return 0;}int init_daemon(){int i;pid_t pid;if ( (pid = fork()) < 0){return (-1);}else if (pid){_exit(0); /* parent terminates */}/* child 1 continues... */if (setsid() < 0) /* become session leader */{return (-1);}signal(SIGHUP, SIG_IGN);if ( (pid = fork()) < 0){return (-1);}else if (pid){_exit(0); /* child 1 terminates */}chdir("/");/* change working directory *//* close off file descriptors */for (i = 0; i < 255; i++){close(i);}/* redirect stdin, stdout, and stderr to /dev/null */open("/dev/null", O_RDONLY);open("/dev/null", O_RDWR);open("/dev/null", O_RDWR);return (0);}

init_daemon()完成进程的精灵化过程,包括脱离终端转入后台等。

编译

# gcc capsule.c –o capsule

将可执行文件拷贝到/usr/local/sbin目录下

# cp capsule /usr/local/sbin/

2.编写service脚本

service一般通过chkconfig工具进行管理。chkconfig管理的每个service需要在其init.d脚本中添加两行或更多注释行。

第一行告诉chkconfig 该service运行的默认级别,以及启动和停止的优先权。如果该service不在任何运行级启动,可以设置为”-“。

第二行包含描述信息。

针对刚才的可执行文件,编写service脚本capsuled如下:

#!/bin/bash## capsuled A test service program## chkconfig: - 92 12# description: A test service prog## @name: capsuled# @author: lanyang# @created: .01.23## Source function library.. /etc/init.d/functionsPROG=capsuledRETVAL=0FULL_PATH=/usr/local/sbin/capsulestart(){echo -n $"Starting $PROG ..."daemon $FULL_PATHRETVAL=$?echo}stop(){echo -n $"Stopping $PROG ..."killproc $FULL_PATHRETVAL=$?echo}case "$1" instart)start;;stop)stop;;restart)stopsleep 5startRETVAL=$?;;status)status $FULL_PATHRETVAL=$?;;*)echo $“Usage: $0 {start|stop|restart|status}”exit 1esacexit $RETVAL

3.在/etc/init.d/目录下添加service脚本

# cp capsuled /etc/init.d# chmod a+x capsuled

4.添加service,使chkconfig命令可以管理该service

# chkconfig --add capsuled

5.设置service启动运行级别

# chkconfig --level 2345 capsuled on

查看启动信息

# chkconfig --list capsuledcapsuled 0:off 1:off 2:on 3:on 4:on 5:on 6:off

6.启动service

# service capsuled startStarting capsuled ... [ OK ]# ps -ef | grep capsuleroot 17729 1 0 18:31 ? 00:00:00 /usr/local/sbin/capsule# service capsuled statuscapsule (pid 17729) is running...# service capsuled stopStopping capsuled ... [ OK ]

7.小结

# service capsuled start

# /etc/init.d/capsuled start

作用是一样的。实际上,前者是通过调用后者实现的。

管理service使用的chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。其中,[0-6]指的是系统的7个运行级别。

/etc/rc[0-6].d目录,内容全部是链接(symbolic links),一般链接到/etc/init.d/目录下的某个service脚本文件。

例如,

$ ll /etc/rc5.d/S85httpdlrwxrwxrwx. 1 root root 15 Jul 30 /etc/rc5.d/S85httpd -> ../init.d/httpd

其中,85是启动优先级;

$ ll /etc/rc6.d/K15httpdlrwxrwxrwx. 1 root root 15 Jul 30 /etc/rc6.d/K15httpd -> ../init.d/httpd

其中,15是停止优先级。

类似的,

# ll /etc/rc4.d/ | grep capsuledlrwxrwxrwx. 1 root root 18 Jan 23 17:53 S92capsuled -> ../init.d/capsuled# ll /etc/rc5.d/ | grep capsuledlrwxrwxrwx. 1 root root 18 Jan 23 17:53 S92capsuled -> ../init.d/capsuled

92是启动优先级

# ll /etc/rc6.d/ | grep capsuledlrwxrwxrwx. 1 root root 18 Jan 23 17:52 K12capsuled -> ../init.d/capsuled

12是停止优先级

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。