首页 > 技术文章 > 服务进程、启动管理

wang-yy 2020-04-12 09:50 原文

服务进程管理

服务、系统状态查看

查看系统所有安装的服务

$ systemctl list-unit-files --type=service

查看系统所有运行的服务项

$ systemctl list-units --type=service

查看系统所有开机自启动的服务项

$ systemctl list-unit-files --type=service | grep enabled

查看指定服务项状态

$ systemctl status <服务项名称>

查看服务项的依赖关系

$ systemctl list-dependencies <服务项名称>

查看出错的服务

$ systemctl list-units --type=service --state=failed

清除服务项的错误状态

$ systemctl reset-failed <服务项名称>

查看系统启动耗时

$ systemd-analyze

查看各项服务启动耗时

$ systemd-analyze blame | grep .service

服务的管理

启动、停止、重启服务

$ systemctl start/stop/restart <服务项名称>

重新读取配置文件

$ systemctl reload <服务项名称>

使服务开机自启动、不自启

$ systemctl enable/disable <服务项名称>

启用、禁用服务

$ systemctl umadk/mask <服务项名称>

查看系统默认的启动级别

 $ systemctl get-default

切换到某个启动级别

$ systemctl isolate <启动级别对应的 target 名>
例如
切换到图形界面
$ systemctl isolate graphical.target

设置系统默认的启动级别

image-20210312093439154

$ systemctl set-default <启动级别对应的 target 名>

日志管理

开启日志持久化存储

	Systemd默认只会把日志存储在内存中,一旦重启系统日志将全部丢失。所以强烈建议打开该功能。
	去掉/etc/systemd/journald.conf这个文件内Storage=这一行前面的#号注释,然后将等号后面的内容改为persistent。
	保存配置文件之后重启一下日志记录服务即可。
$ systemctl restart systemd-journald.service

查看自从本次开机后所有的日志信息

$ journalctl [-e] [-f]
	-e 表示输出之后跳转到末行
	-f 表示实时滚动显示
当没有使用-f时,使用PageUp或PageDown翻页,查看完毕后按q退出

查看特定 Unit (服务)所有的日志信息

$ journalctl [-e] [-f] -u <service名称>
当没有使用-f时,使用PageUp或PageDown翻页,查看完毕后按q退出

查看特定时间点内所有的日志信息

$ journalctl --since="yyyy-MM-dd hh:mm:ss" --until="yyyy-MM-dd hh:mm:ss"
使用PageUp或PageDown翻页,查看完毕后按q退出。
例如
查看2020年5月20日09:30:00至2020年5月20日10:00:00之间的所有日志
$ journalctl --since="2020-05-20 09:30:00" --until="2020-05-20 10:00:00"

查看日志当前占用的磁盘空间

$ journalctl --disk-usage

修改日志最大占用的磁盘空间

去掉/etc/systemd/journald.conf这个文件内SystemMaxUse=这一行前面的#号注释,然后在等号后面填上数值即可。

例如

修改日志最大占用的磁盘空间为 50M
$ SystemMaxUse=50M
保存配置文件之后重启一下日志记录服务即可。
$ systemctl restart systemd-journald.service

服务启动管理

centos6服务管理

RPM软件包

# 手动
$ service 服务名 动作 (start、stop、restart热重启 reload、status)
# 自动
$ chkconfig 服务名 on|off (开机启动、不启动)
	on 默认指定级别是:2 3 4 5
$ chkconfig --level 35 httpd on  修改为35级别启动
$ chkconfig --list 列出开机启动、不启动的详细信息

image-20210312094124308

系统启动级别(7个)

$ vim /etc/inittab
	# Default runlevel. The runlevels used are:
	#   0 - halt (Do NOT set initdefault to this)   关机
	#   1 - Single user mode    单个用户模式
	#   2 - Multiuser, without NFS (The same as 3, if you do not have networking) 比3少启动网络服务
	#   3 - Full multiuser mode   完整多用户模式
	#   4 - unused
	#   5 - X11 桌面启动
	#   6 - reboot (Do NOT set initdefault to this) 重启
当给0、1设置默认启动级别时,会导致无限关机重启 

包含关系的软件结构

# telnet :远程连接管理协议,端口23(明文传输)
安装:
1、查找telnet相关的包  yum  search  <关键词>  #查询中所有和关键词相关的	包
	yum  search telnet
	yum -y install telnet-service会出现一个xinetd的依赖安装
	chkconfig --list | grep telnet
	chkconfig --list
	service xinetd status
2、cd /etc/xinetd.d/
	vim telnet
	将disable后改为no
	service xinetd restart
	netstat -antp  观察23端口
3、service xinetd start
	有些软件只是某软件中的一项子功能,开启主软件,子功能才能开启,并使用
 	 Complete!Dependency
	源码软件的启动
	命令安装后的绝对路径来启动
	/usr/local/apache2/bin/apachectl start|stop|restart|reload|status...

centos7服务管理

系统启动级别

系统启动级别文件存放目录:/usr/lib/systemd/system			#所有可使用级别
lrwxrwxrwx. 1 root root 15 Sep 23 01:40 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Sep 23 01:40 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Sep 23 01:40 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Sep 23 01:40 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Sep 23 01:40 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Sep 23 01:40 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Sep 23 01:40 runlevel6.target -> reboot.target
在7中只有01356级别
将以上的系统级别文件软链接到:/etc/systemd/system/	multi-user.target.wants
ln -s /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
default.target文件软链接的是哪个级别的文件,就按照哪个级别开机。
系统默认启动的软件连接目录:/etc/systemd/system/multi-user.target.wants
\#存放了各个软件的软链接,在本目录中有软链接的代表会开机自启动

RPM软件包:

手动:
	systemctl start|stop|restart|...  服务名.service
自动:
	systemctl enable|disable 	服务名.service
telnet服务:
	yum -y install telnet-server		#安装
	systemctl start telnet.socket		#手动启动
	systemctl enable telnet.socket		#开机自启动
1.	查看每一个服务的开机自启动状态
	C6:chkconfig --list
	C7:systemctl list-unit-files --type=service

服务进程管理

服务、系统状态查看

查看系统所有安装的服务

$ systemctl list-unit-files --type=service

查看系统所有运行的服务项

$ systemctl list-units --type=service

查看系统所有开机自启动的服务项

$ systemctl list-unit-files --type=service | grep enabled

查看指定服务项状态

$ systemctl status <服务项名称>

查看服务项的依赖关系

$ systemctl list-dependencies <服务项名称>

查看出错的服务

$ systemctl list-units --type=service --state=failed

清除服务项的错误状态

$ systemctl reset-failed <服务项名称>

查看系统启动耗时

$ systemd-analyze

查看各项服务启动耗时

$ systemd-analyze blame | grep .service

服务的管理

启动、停止、重启服务

$ systemctl start/stop/restart <服务项名称>

重新读取配置文件

$ systemctl reload <服务项名称>

使服务开机自启动、不自启

$ systemctl enable/disable <服务项名称>

启用、禁用服务

$ systemctl umadk/mask <服务项名称>

查看系统默认的启动级别

 $ systemctl get-default

切换到某个启动级别

$ systemctl isolate <启动级别对应的 target 名>
例如
切换到图形界面
$ systemctl isolate graphical.target

设置系统默认的启动级别

image-20210312093439154

$ systemctl set-default <启动级别对应的 target 名>

日志管理

开启日志持久化存储

	Systemd默认只会把日志存储在内存中,一旦重启系统日志将全部丢失。所以强烈建议打开该功能。
	去掉/etc/systemd/journald.conf这个文件内Storage=这一行前面的#号注释,然后将等号后面的内容改为persistent。
	保存配置文件之后重启一下日志记录服务即可。
$ systemctl restart systemd-journald.service

查看自从本次开机后所有的日志信息

$ journalctl [-e] [-f]
	-e 表示输出之后跳转到末行
	-f 表示实时滚动显示
当没有使用-f时,使用PageUp或PageDown翻页,查看完毕后按q退出

查看特定 Unit (服务)所有的日志信息

$ journalctl [-e] [-f] -u <service名称>
当没有使用-f时,使用PageUp或PageDown翻页,查看完毕后按q退出

查看特定时间点内所有的日志信息

$ journalctl --since="yyyy-MM-dd hh:mm:ss" --until="yyyy-MM-dd hh:mm:ss"
使用PageUp或PageDown翻页,查看完毕后按q退出。
例如
查看2020年5月20日09:30:00至2020年5月20日10:00:00之间的所有日志
$ journalctl --since="2020-05-20 09:30:00" --until="2020-05-20 10:00:00"

查看日志当前占用的磁盘空间

$ journalctl --disk-usage

修改日志最大占用的磁盘空间

去掉/etc/systemd/journald.conf这个文件内SystemMaxUse=这一行前面的#号注释,然后在等号后面填上数值即可。

例如

修改日志最大占用的磁盘空间为 50M
$ SystemMaxUse=50M
保存配置文件之后重启一下日志记录服务即可。
$ systemctl restart systemd-journald.service

服务启动管理

centos6服务管理

RPM软件包

# 手动
$ service 服务名 动作 (start、stop、restart热重启 reload、status)
# 自动
$ chkconfig 服务名 on|off (开机启动、不启动)
	on 默认指定级别是:2 3 4 5
$ chkconfig --level 35 httpd on  修改为35级别启动
$ chkconfig --list 列出开机启动、不启动的详细信息

image-20210312094124308

系统启动级别(7个)

$ vim /etc/inittab
	# Default runlevel. The runlevels used are:
	#   0 - halt (Do NOT set initdefault to this)   关机
	#   1 - Single user mode    单个用户模式
	#   2 - Multiuser, without NFS (The same as 3, if you do not have networking) 比3少启动网络服务
	#   3 - Full multiuser mode   完整多用户模式
	#   4 - unused
	#   5 - X11 桌面启动
	#   6 - reboot (Do NOT set initdefault to this) 重启
当给0、1设置默认启动级别时,会导致无限关机重启 

包含关系的软件结构

# telnet :远程连接管理协议,端口23(明文传输)
安装:
1、查找telnet相关的包  yum  search  <关键词>  #查询中所有和关键词相关的	包
	yum  search telnet
	yum -y install telnet-service会出现一个xinetd的依赖安装
	chkconfig --list | grep telnet
	chkconfig --list
	service xinetd status
2、cd /etc/xinetd.d/
	vim telnet
	将disable后改为no
	service xinetd restart
	netstat -antp  观察23端口
3、service xinetd start
	有些软件只是某软件中的一项子功能,开启主软件,子功能才能开启,并使用
 	 Complete!Dependency
	源码软件的启动
	命令安装后的绝对路径来启动
	/usr/local/apache2/bin/apachectl start|stop|restart|reload|status...

centos7服务管理

系统启动级别

系统启动级别文件存放目录:/usr/lib/systemd/system			#所有可使用级别
lrwxrwxrwx. 1 root root 15 Sep 23 01:40 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Sep 23 01:40 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Sep 23 01:40 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Sep 23 01:40 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Sep 23 01:40 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Sep 23 01:40 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Sep 23 01:40 runlevel6.target -> reboot.target
在7中只有01356级别
将以上的系统级别文件软链接到:/etc/systemd/system/	multi-user.target.wants
ln -s /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
default.target文件软链接的是哪个级别的文件,就按照哪个级别开机。
系统默认启动的软件连接目录:/etc/systemd/system/multi-user.target.wants
\#存放了各个软件的软链接,在本目录中有软链接的代表会开机自启动

RPM软件包:

手动:
	systemctl start|stop|restart|...  服务名.service
自动:
	systemctl enable|disable 	服务名.service
telnet服务:
	yum -y install telnet-server		#安装
	systemctl start telnet.socket		#手动启动
	systemctl enable telnet.socket		#开机自启动
1.	查看每一个服务的开机自启动状态
	C6:chkconfig --list
	C7:systemctl list-unit-files --type=service

推荐阅读