系统管理
Linux中的进程和服务
计算机中,一个正在执行的程序或命令,被叫做“进程”(process)。
启动之后一直存在、常驻内存的进程,一般被称作“服务”(service)
service 服务管理(CentOS 6 版本-了解)
基本语法
service 服务名 start|stop|restart|status
- centos6及以前的版本使用的是service命令做服务管理,而从7开始使用systemctl来做服务管理了
- start:启动服务
- stop:停止服务
- restart:重启服务
- status:查看服务状态
经验技巧
service能够启动的服务名称位于/etc/init.d/
目录,如下图,发现只有2个服务(下图中绿色的部分表示可执行文件)
案例实操
查看网络服务状态
[root@Demo-Server ~]# service network status
已配置设备:
lo ens33
当前活跃设备:
lo ens33 docker0 virbr0
停止网络服务
[root@Demo-Server ~]# service network stop
启动网络服务
[root@Demo-Server sin]# service network start
Starting network (via systemctl): [ 确定 ]
重启网络服务
[root@Demo-Server ~]# service network restart
Starting network (via systemctl): [ 确定 ]
chkconfig 设置后台服务的自启配置(CentOS 6 版本)
基本语法
命令 | 解释 |
---|---|
chkconfig | 查看所有服务器自启配置 |
chkconfig 服务名 off | 关掉指定服务的自动启动 |
chkconfig 服务名 on | 开启指定服务的自动启动 |
chkconfig 服务名 —list | 查案服务开机启动状态 |
案例实操
开启/关闭 network(网络)服务的自动启动
[root@Demo-Server ~]# chkconfig network on
[root@Demo-Server ~]# chkconfig network off
开启/关闭 network 服务指定级别的自动启动
[root@Demo-Server ~]# chkconfig --level 指定级别 network on
[root@Demo-Server ~]# chkconfig --level 指定级别 network off
systemctl(CentOS 7 版本 重点掌握)
基本语法
systemctl start|stop|restart|status 服务名
systemctl:system control的意思,系统控制
经验技巧
systemctl能够操作的服务名称位于/usr/lib/systemd/system
目录,
案例实操
查看防火墙服务的状态
[root@Demo-Server ~]# systemctl status firewalld
停止防火墙服务
[root@Demo-Server ~]# systemctl stop firewalld
启动防火墙服务
[root@Demo-Server ~]#systemctl start firewall
重启防火墙服务
[root@Demo-Server ~]#systemctl restart firewalld
systemctl mask和systemctl disable有什么区别?
systemctl mask
和systemctl disable
的区别一般很难注意到,因为我大部分时候只会使用systemctl disable
,并不会用到systemctl mask
。在一次遇到问题的时候,需要使用systemctl mask
来禁用服务,下边具体说明。
systemctl enable的作用
我们知道,在系统中安装了某个服务以后,需要将该服务设置为开机自启,那么一般会执行systemctl enable xxx
,这个时候会发现shell中会输出两行提示,一般类似如下:
[root@Demo-Server ~]# systemctl enable NetworkManagerCreated symlink from /etc/systemd/system/multi-user.target.wants/NetworkManager.service to /usr/lib/systemd/system/NetworkManager.service.Created symlink from /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service to /usr/lib/systemd/system/NetworkManager-dispatcher.service.Created symlink from /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service to /usr/lib/systemd/system/NetworkManager-wait-online.service.
这个命令会在/etc/systemd/system/
目录下创建需要的符号链接,表示服务需要进行启动。通过stdout输出的信息可以看到,软连接实际指向的文件为/usr/lib/systemd/system/
目录中的文件,实际起作用的也是这个目录中的文件。
systemctl disable xxx的作用
执行systemctl disable xxx
后,会禁用这个服务。它实现的方法是将服务对应的软连接从/etc/systemd/system
中删除。命令执行情况一般类似如下:
[root@Demo-Server ~]# systemctl disable NetworkManagerRemoved symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
在执行systemctl disable xxx
的时候,实际只是删除了软连接,并不会产生其他影响。
systemctl mask xxx的作用
执行 systemctl mask xxx
会屏蔽
这个服务。它和systemctl disable xxx
的区别在于,前者只是删除了符号链接,后者会建立一个指向/dev/null
的符号链接,这样,即使有其他服务要启动被mask
的服务,仍然无法执行成功。执行该命令的效果一般类似如下:
[root@Demo-Server ~]# systemctl mask NetworkManager Created symlink from /etc/systemd/system/NetworkManager.service to /dev/null.
systemctl mask xxx 和 systemctl disable xxx 的区别
在执行过mask
后,如果想要启动服务,那么会报类似如下错误:
[root@Demo-Server ~]# systemctl start NetworkManagerFailed to start NetworkManager.service: Unit is masked.
使用systemctl unmask xxx取消屏蔽
如果使用了mask,要想重新启动服务,必须先执行unmask将服务取消屏蔽。mask和unmask是一对操作,用来屏蔽和取消屏蔽服务。
systemctl设置后台服务的自启动配置
基本语法
命令 | 描述 |
---|---|
systemctl list-unit-files | 查看服务开机启动状态 |
systemctl disable service_name | 关掉指定服务的自动启动 |
systemctl enable service_name | 开启指定服务的自动启动 |
案例实操
查看服务开机启动状态
关闭防火墙服务的自动启动
先查看
关闭服务
再查看
重启服务器再查看
[root@Demo-Server ~]# shutdown -r now
开启防火墙服务的自动启动
[root@Demo-Server ~]# systemctl enable firewalld
关闭防火墙
临时关闭防火墙
查看防火墙状态
system status firewalld
临时关闭防火墙
system stop firewalld
开机启动时关闭防火墙
设置开机自动启动防火墙
systemctl enable firewalld
服务名称后面的.service可以省略不写
设置开机不启动防火墙
systemctl disable firewalld.service
关机重启命令
在 linux 领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
基本语法
(1)sync:将数据由内存同步到硬盘中
linux中为提高效率,写磁盘的时候会先将数据写入缓冲器,缓冲区满了之后才会刷到磁盘,sync命令可以将缓冲区的数据立即写入磁盘。
(2)half:停机,关闭系统,但不断电
(3)poweroff:关机,断电
(4)reboot:重启,等同于shutdown -r now
(5)shutdown [选项] 时间
选项 | 功能 |
---|---|
-H | 相当于—half,停机 |
-r | -r=reboot 重启 |
参数 | 功能 |
---|---|
now | 立刻关机 |
时间 | 等待多久后关机(单位是分钟) |
8.8.2、经验技巧
Linux 系统中为了提高磁盘的读写效率,对磁盘采取了 “预读迟写”操作方式。当用户保存文件时,Linux 核心并不一定立即将保存数据写入物理磁盘中, 而是将数据保存在缓冲区中,等缓冲区满时再写入磁盘,这种方式可以极大的提高磁盘写入数据的效率。但是,也带来了安全隐患,如果数据还未写入磁盘时,系统掉电或者其他严重问题出现,则将导致数据丢失。使用 sync 指令可以立即将缓冲区的数据写入磁盘。
8.8.3、案例实操
(1)sync:将数据由内存同步到硬盘中
[root@test1 ~]# sync
(2)reboot:重启
[root@test1 ~]# reboot
(3)halt:停机(不断电)
[root@test1 ~]# halt
(4)10分钟后关机,并广播消息
广播的消息所有登录的用户屏幕上都会显示。
[root@test1 ~]# shutdown 10 "在10分钟后关机"
(5)shutdown 时间点:指定时间点关机
下面设置23点50分关机
[root@testx ~]# shutdown 23:50
(6)shutdown -c:取消关机,并广播消息
[root@test1 ~]# shutdown -c
(7)shutdown -h now:立马关机(等同于reboot)
[root@test1 ~]# shutdown -h now
(8)shutdow -r now:立即重启(等同于reboot)
[root@test1 ~]# shutdown -r now