1、、Linux 中的进程和服务
计算机中、一个正在执行的程序或命令,叫进程(process)。
启动之后一直存在、常驻内存的进程,一般称为“服务”(Service) // 我更喜欢叫它守护进程 Daemon
比如windows的那一堆服务:
此处思考一个问题:微服务开发中,每个微服务 是一个进程,还是一个线程? (进程)
2、service服务管理
2.1 改变服务状态的基本命令(开启、关闭、重启、检查状态)
以前我们在CentOS6中:
1)基本语法
service 服务名 start | stop| status
比如我们配置网络的时候,最后一个命令
service network restart //重启网络服务
这里补充一句:
centOS6 网络服务是 network.service, centOS7里 保留了这个服务,但是也新增了NetworkManager,
二者同时active ,容易产生冲突,导致网络不通,所以处理CentOS7的网络不通,我们可以关闭二者之一。
2)我们在安装了CentOS7的系统中,用CentOS6的命令来查看有哪些服务:
init.d 这个d其实就代表Daemon 守护进程、服务的意思
我们打开/etc/init.d 查看服务 发现只有两个 为啥呢??
具体情况我们可以参阅README
You are running a systemd-based OS where traditional init scripts have
been replaced by native systemd services files. Service files provide
very similar functionality to init scripts. To make use of service
files simply invoke "systemctl", which will output a list of all
currently running services (and other units). Use "systemctl
list-unit-files" to get a listing of all known unit files, including
stopped, disabled and masked ones. Use "systemctl start
foobar.service" and "systemctl stop foobar.service" to start or stop a
service, respectively. For further details, please refer to
systemctl(1).Note that traditional init scripts continue to function on a systemd
system. An init script /etc/rc.d/init.d/foobar is implicitly mapped
into a service unit foobar.service during system initialization.Thank you!
Further reading:
man:systemctl(1)
man:systemd(1)
http://0pointer.de/blog/projects/systemd-for-admins-3.html
http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities
简单来说,就是CentOS7 用 systemctl 替代了以前的service,来控制服务相关的命令。并且,这些服务都被转移到了
usr/lib/systemd/system 文件夹之下了
centOS7 操作服务的命令变成了
systemctl start | stop | restart | status 服务名
比如我们熟悉的
systemctl status firewalld //注意防火墙服务后面这个d不要忘记,它也是daemon的意思
2.2 设置后台服务的自启动配置
我们在Windows 中经常能看到这么一个名词——开机自启动
同样,有些LINUX的守护进程,也是可以配置开机是否自动启动的
在CentOS6中,我们用chkconfig 命令:
1) 基本语法 chkconfig (功能描述:查看所有服务器自启配置)
chkconfig 服务名 off (功能描述:关掉指定服务的自动启动)
chkconfig 服务名 on (功能描述:开启指定服务的自动启动)
chkconfig 服务名 --list (功能描述:查看服务开机启动状态)
我们根据提示看到了 CentOS7上 服务管理机制已经从SysV 升级到了 systemd
在CentOS6上,我们可可以 使用如下命令来开启关闭network服务自启动
chkconfig network on
chkconfig network off
开启/关闭 network 服务指定级别的自动启动 (关于服务级别,等会介绍)
chkconfig --level 指定级别 network on
chkconfig --level 指定级别 network off
那么CentOS7上的服务自启动又是如何进行的?
1)基本语法
systemctl list-unit-files (功能描述:查看服务开机启动状态)
systemctl disable service_name (功能描述:关掉指定服务的自动启动)
systemctl enable service_name (功能描述:开启指定服务的自动启动)
2.3、linux系统运行级别
1)centOS6的运行级别(Runlevel)
查看默认级别:
vi /etc/inittab
Linux有7种运行级别: 最常用的是 3 和5
- 运行级别0 :系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 (相当于Windows下的安全模式)
- 运行级别2:多用户状态(没有NFS :LINUX的网络网络文件系统),不支持网络
- 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式 (平时你打开虚拟机看到那个黑不溜秋的shell就是这个模式)
- 运行级别4:系统未使用,保留
- 运行级别5:x11控制台,登陆后进入图形GUI模式 (命令行运行 setup)
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
2)CentOS7的运行级别简化为 3 和5
multi-user.target 等价于原运行级别 3(多用户有网,无图形界面)
graphical.target 等价于原运行级别 5(多用户有网,有图形界面)
我们可以在 /etc/inittab中看到
3) 查看当前运行级别:
systemctl get-default
4)修改当前运行级别
systemctl set-default TARGET.target (这里 TARGET 取 multi-user 或者 graphical)
本专栏前期文章,站在最小使用原则的角度,先了解基本的知识,在实战中去体会,后面我会补充以操作系统原理的角度来深度剖析LINUX的各个管理策略。