返回首页

LINUX服务管理,系统启动时如何判断及开启服务,

来源:www.chengshu.net   时间:2021-10-01 21:21   点击:140  编辑:admin   手机版

逐个解答。但根据问题间的关系,回答顺序和你提问的顺序有所不同。

=============================================
“请写出尽量多的方法,并说明方法的原理。”
---------------------------------------------

我用Everest Linux 0.6是Redhat系列的远方旁枝。源自Redhat的发行版有类似的服务管理方式。太多的方法没有用,一种基本方法再加两三种附加变体方法足矣。

=============================================
“如何关闭服务及如何手动开启服务”
---------------------------------------------

简而言之:
service [服务名] start
service [服务名] stop
细节见下。

以我的现状为例,所有的主要独立服务都在“/etc/rc.d/init.d”中有对应的控制脚本,能控制服务的启停、重启,甚至不重启而重新加载配置。当然,也可以自己制作自己的控制脚本。我自己制作了Apache、Tomcat、PostgreSQL和花生壳的控制脚本。

[root@TFW-EVL06-LT /]# ls -l /etc/rc.d/init.d/
总计 316
……
-rwxr-xr-x 1 root root 1773 smb
……
-rwxr-xr-x 1 root root 3340 sshd
……
lrwxrwxrwx 1 root root 66 tfw_httpd -> /ext/prog/c/Apache/Httpd.EverestLinux-0.6-tb20090422/tfw/rc_script
lrwxrwxrwx 1 root root 61 tfw_pgsql -> /ext/prog/m/PostgreSQL.Everest-Linux-0.6-tb0422/tfw_rc_script
lrwxrwxrwx 1 root root 32 tfw_phlinux -> /usr/local/phlinux/tfw_rc_script
lrwxrwxrwx 1 root root 39 tfw_tomcat -> /ext/prog/c/Apache/Tomcat/tfw/rc_script
……
-rwxr-xr-x 1 root root 2497 xinetd
……
[root@TFW-EVL06-LT /]#

以此为例,可以用“service smbd start”来启动Windows网络邻居服务;用“service sshd stop”来关闭安全隧道登录服务;用“service tfw_pgsql reload”不重启地重新加载PostgreSQL配置;用“service tfw_phlinux restart”重新启动花生壳。

=============================================
“读哪个文件判断是否启动服务”
---------------------------------------------

没有简述,想了解请看完。

在“/etc/rc.d/rc[N].d”目录里存放着上述脚本的链接。“[N]”为0~6间的数字,对应系统运行级别。以运行级别3为例:

[root@TFW-EVL06-LT /]# ls -l /etc/rc.d/rc3.d/
总计 0
……
lrwxrwxrwx 1 root root 20 03-03 13:00 K04tfw_tomcat -> ../init.d/tfw_tomcat
……
lrwxrwxrwx 1 root root 14 S55sshd -> ../init.d/sshd
……
[root@TFW-EVL06-LT /]#

这些链接有的以“K”开头,有的以“S”开头。

系统在切换都一个运行级别时,会首先检查以“K”开头的链接,按其后面两位数字所标明的顺序依次检查这些链接所对应的服务;如果开着就以“stop”参数调用服务控制脚本关闭此服务。

例子中“/etc/rc.d/rc3.d/K04tfw_tomcat”的含义即为“当系统切换到运行级别3时,检查一下Tomcat是否在运行;如果在运行,就用‘service tfw_tomcat stop’关掉Tomcat”。

在关完服务后,系统再根据数字依次检查以“S”开头的链接,如果对应的服务没有开启,就以“start”参数调用服务控制脚本开启此服务。

例子中“/etc/rc.d/rc3.d/S55sshd”的含义即为“当系统切换到运行级别3时,检查一下安全登录遂道是否在运行;如果没在运行,就用‘service sshd start’启动安全登录遂道”。

=============================================
“如何查询已经开启的服务”
---------------------------------------------

没有简述,想了解请看完。

[root@TFW-EVL06-LT /]# service network status
Coppied.
配置设备:
lo eth0 ppp0
当前的活跃设备:
lo eth0 ppp0
[root@TFW-EVL06-LT /]# service tfw_httpd status
Usage: /etc/init.d/tfw_httpd {start|stop|restart}
[root@TFW-EVL06-LT /]#

可以看到,有一些服务控制脚本支持“status”参数,可以用“service [服务名] status”来查看;还有一些服务控制脚本不支持“status”参数,此时就只能凭经验判断了。

=============================================
“可以用TELNET、FTP举例,我的RH系统内有XINETD,也希望讲解下”
---------------------------------------------

在Redhat风格的发行版中,Telnet和FTP一版不是独立服务,而是被“超级服务器”XINETD托管。

XINETD是一个独立服务,和前述服务无异。它的控制脚本是“/etc/rc.d/init.d/xinetd”。

=============================================
“读哪个文件来判断服务的设置”
---------------------------------------------

不同的独立服务一般都拥有自己的配置文件。

典型情况下,“/etc/samba/smb.conf”是Windows网络邻居服务的主要配置文件,“/etc/ssh/sshd_config”是安全隧道服务器端的主要配置文件。

在我的计算机上,“/ext/prog/c/Apache/Httpd.EverestLinux-0.6-tb20090422/conf/”下的文件就是Apache-Httpd服务的主要配置文件。

在我曾经用过的Redhat系发行版Magic Linux 2.0中,Telnet和FTP等非独立服务的端口等配置信息出现在XINETD的配置文件中;而我现在所用的发行版Everest Linux 0.6虽然仍是Redhat系,Telnet和FTP的端口信息已经移到其各自的配置文件中。

顶一下
(0)
0%
踩一下
(0)
0%