Linux的系统服务分为RPM包安装的服务和源码包安装的服务,其中RPM包安装的服务又分为独立服务和基于XINETD的服务。RPM包安装服务于源码包安装服务的区别在于安装的位置不同,源码包一般安装在/usr/local下,RPM一般安装在系统默认位置。这几种不同的服务启动与自启动的方式也不尽相同。
查询RPM包已安装的服务:chkconfig --list
一、独立服务
独立服务的启动有两种方式,一种使用绝对路径来启动,另一种使用service服务。其效果是一样的。
独立服务的自启动有三种方式,一种通过chkconfig来设置,以sshd命令为例
chkconfig --level 2345 sshd on/off //--level一般默认为2345,所以可不写
用chkconfig查询到sshd的自启动默认是打开的,于是我们将它关闭
关闭成功。
第二种修改自启动的方式是修改配置文件/etc/rc.d/rc.local
第三种方式是使用第三方软件ntsysv
ps:ubuntu系统无chkconfig功能,kali系统的ssh服务默认关闭,将其修改为开机自启动
编辑ssh的配置文件 vim /etc/ssh/sshd_config
将PasswordAuthentication no的注释去掉,改为yes
将#PermitRootLogin yes的注释去掉
启动ssh服务 service ssh start
设置开机自启动 update-rc.d ssh enable
二、基于XINETD的服务
先要安装xinetd服务
yum -y install xinetd
安装完成后使用chkconfig命令可以看到最后有xinetd服务的信息。
/etc/init.d //启动脚本位置
/etc/xinetd.conf //xinetd配置文件
/etc/xinetd.d //基于xinetd服务的启动脚本
/var/lib //服务产生的数据
/var/log //日志
/etc/sysconfig //初始化环境配置文件位置
基于xinetd的服务的启动方式:先修改某个xinetd服务的配置文件,这里以telnet为例,修改/etc/xinetd.d/telnet,将disable改为no;再用service重启xinetd服务
telnet服务的服务端口是23号,用netstat -tlun命令可以看到telnet服务已开启
xinetd服务的启动与自启动是一致的,当上面开启了Telnet服务时,查看它的自启动也是开启的。
xinetd服务的自启动有两种方式
chkconfig telnet on
ntsys
三、源码包安装的服务
使用绝对路径调动启动脚本来启动,不同的源码包的启动脚本不同,可以查看源码包的安装说明,查看启动脚本的方法。
/usr/local/apache/bin/apachetcl start
源码包服务的自启动,通过修改/etc/rc.d/rc.local文件来设置。
源码包安装的服务不能被service启动,但是可以通过为这个服务加一个软链接的方式来将它的命令放到/etc/init.d下,这样它就能被service控制。
源码包安装的服务不能被chkconfig和ntsysv管理,但是可以通过修改/etc/init.d目录下的配置文件,使得它能被chkconfig和ntsysv来管理。
grep -v "#" /usr/local/apache2/bin/apachectl > /etc/init.d/apache
vim /etc/init.d/apache
#chkconfig:35 86 76 //指定httpd脚本可以被chkconfig命令管理,格式是:chkconfig: 运行级别 启动顺序 关闭顺序(用vim /etc/inid.3 查看已有的启动顺序,这里设置不要使用已有的启动顺序。)
#description:source package apache //说明,内容随意
将Apache加入到系统服务,查看chkconfig观察其是否可自启动
总结如下图: