控制服务和守护进程

#控制服务和守护进程
###1.systemd
###1.1systemd简介
systemd是用户空间的第一个应用程序,即/sbin/init

init程序的类型:

SysV风格:init(centos5),实现系统初始化时,随后的初始化操作都是借助于脚本来实现的
特点:

  • 脚本中含有大量的命令,每个命令都要启动一个进程,命令执行完以后就要终止这个进程。如此一来,系统初始化时将大量的创建进程,销毁进程,工作效率会非常低
  • 服务间可能会存在依赖关系,必须严格按照一定的顺序来启动服务,前一个服务没启动完后面的服务就无法执行启动过程。不能并行进行
    配置文件:/etc/inittab
    Upstart风格:init(centos6),由ubuntu研发的,通过总线形式以接近于并行的方式工作,效率比SysV高
  • 特点:
    1.基于总线方式能够让进程间互相通信的一个应用程序
    2.不用等服务启动完成,只要一初始化就可以把自己的状态返回给其他进程

配置文件:/etc/inittab,/etc/init/*.conf

  • Systemd风格:systemd(centos7)
  • 特点:启动速度比SysV和Upstart都快
    1.不需要通过任何脚本来启动服务,systemd自身就可以启动服务,其本身就是一个强大的解释器,启动服务时不需要sh/bash的参与
    2.systemd不真正在系统初始化时去启动任何一个服务
    3.只要服务没用到,它告诉你启动了,实际上并没有启动。仅当第一次去访问时才会真正启动服务
    配置文件:/usr/lib/systemd/system,/etc/systemd/system
    系统启动和服务器进程由systemd系统和服务管理器进行管理。此程序提供了一种方式,可以在启动时和运行中的系统上激活系统资源、服务器守护进程和其他进程。

守护进程是在执行各种任务的后台等待或运行的进程。为了侦听连接,守护进程使用套接字。套接字可以由守护进程创建,或者与守护进程分离,并且可能由另一个进程创建(如systemd),随后在客户端建立连接时将套接字传递到守护进程。

服务通常指的是一个或多个守护进程,但启动或停止一项服务可能会对系统的状态进行一次性更改(如配置网络接口),不会留下守护进程之后继续运行。
###1.2systemd的新特性
系统引导时实现服务并行启动
按需激活进程
系统状态快照
基于依赖关系定义服务控制逻辑
###1.3 systemd的核心概念Unit
systemd使用unit的概念来管理服务,这些unit表现为一个个配置文件。

systemd通过对这些配置文件进行标识和配置达到管理服务的目的:

//这些unit文件中主要包含了系统服务、监听socket、保存的系统快照
//及其它与init相关的信息保存至以下目录:
/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system

###Unit的类型:

Service unit //文件扩展名为.service,用于定义系统服务
Target unit //文件扩展名为.target,用于模拟实现“运行级别”

[root@localhost system]# ll
total 8
drwxr-xr-x. 2 root root   31 Jun 30 14:40  basic.target.wants
drwxr-xr-x. 2 root root   31 Jun 30 14:36  bluetooth.target.wants
lrwxrwxrwx. 1 root root   37 Jun 30 14:36  ctrl-alt-del.target -> /usr/lib/systemd/system/reboot.target
lrwxrwxrwx. 1 root root   41 Jun 30 14:36  dbus-org.bluez.service -> /usr/lib/systemd/system/bluetooth.service
lrwxrwxrwx. 1 root root   41 Jun 30 14:40  dbus-org.fedoraproject.FirewallD1.service -> /usr/lib/systemd/system/firewalld.service
lrwxrwxrwx. 1 root root   44 Jun 30 14:38  dbus-org.freedesktop.Avahi.service -> /usr/lib/systemd/system/avahi-daemon.service
lrwxrwxrwx. 1 root root   44 Jun 30 14:36  dbus-org.freedesktop.ModemManager1.service -> /usr/lib/systemd/system/ModemManager.service
lrwxrwxrwx. 1 root root   57 Jun 30 14:36  dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
lrwxrwxrwx. 1 root root   41 Jun 30 14:38  dbus-org.freedesktop.timedate1.service -> /usr/lib/systemd/system/timedatex.service
lrwxrwxrwx. 1 root root   40 Jun 30 14:43  default.target -> /usr/lib/systemd/system/graphical.target
drwxr-xr-x. 2 root root   45 Jun 30 14:40  default.target.wants
drwxr-xr-x. 2 root root   38 Jun 30 14:40 'dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants'
lrwxrwxrwx. 1 root root   35 Jun 30 14:40  display-manager.service -> /usr/lib/systemd/system/gdm.service
drwxr-xr-x. 2 root root   32 Jun 30 14:36  getty.target.wants
drwxr-xr-x. 2 root root   88 Jun 30 14:57  graphical.target.wants
drwxr-xr-x. 2 root root   36 Jun 30 14:39  local-fs.target.wants
drwxr-xr-x. 2 root root 4096 Jun 30 14:57  multi-user.target.wants
drwxr-xr-x. 2 root root   48 Jun 30 14:36  network-online.target.wants
drwxr-xr-x. 2 root root   26 Jun 30 14:40  printer.target.wants
drwxr-xr-x. 2 root root   52 Jun 30 14:39  remote-fs.target.wants
drwxr-xr-x. 2 root root 4096 Jun 30 14:40  sockets.target.wants
drwxr-xr-x. 2 root root  241 Jun 30 14:40  sysinit.target.wants
lrwxrwxrwx. 1 root root   39 Jun 30 14:36  syslog.service -> /usr/lib/systemd/system/rsyslog.service
lrwxrwxrwx. 1 root root    9 May 11  2019  systemd-timedated.service -> /dev/null
drwxr-xr-x. 2 root root   91 Jun 30 14:40  timers.target.wants
drwxr-xr-x. 2 root root   29 Jun 30 14:40  vmtoolsd.service.requires

runlevel0.target和poweroff.target //关机 --------- (init 0)
runlevel1.target和rescue.target //单用户模式 --------(init 1)
runlevel2.target和multi-user.target //对于systemd来说,2/3/4级别没有区别
runlevel3.target和multi-user.target //对于systemd来说,2/3/4级别没有区别
runlevel4.target和multi-user.target //对于systemd来说,2/3/4级别没有区别
unlevel5.target和graphical.target //图形级别 --------(init 5)
unlevel6.target和reboot.target //重启 ---------(init 6)
Device unit //文件扩展名为.device,用于定义内核识别的设备
Mount unit //文件扩展名为.mount,用于定义文件系统挂载点
Socket unit //文件扩展名为.socket,用于标识进程间通信用的socket文件
Snapshot unit //文件扩展名为.snapshot,用于管理系统快照
Swap unit //文件扩展名为.swap,用于标识swap设备
Automount unit //文件扩展名为.automount,用于实现文件系统的自动挂载点
Path unit //文件扩展名为.path,用于定义文件系统中的一个文件或目录

  • 立即关机:
systemctl   isoiato reboot.target

###Unit关键特性

1.//基于socket的激活机制:
socket与服务程序分离,当有人去访问时才会真正启动服务,以此来实现按需激活进程与服务的并行启动
2.//基于bus的激活机制:
所有使用dbus实现进程间通信的服务,可以在第一次被访问时按需激活
3.//基于device的激活机制:
支持基于device激活的系统服务,可以在特定类型的硬件接入到系统中时,按需激活其所需要用到的服务
4.//基于path的激活机制:
某个文件路径变得可用,或里面出现新文件时就激活某服务
5.//系统快照:
保存各unit的当前状态信息于持久存储设备中,必要时能自动载入
6.//向后兼容sysv init脚本
###不兼容特性
1.//systemctl命令固定不变
2.//非由systemd启动的服务,systemctl无法与之通信
3.//只有已经启动的服务在级别切换时才会执行stop,在centos6以前是所有S开头的服务全部start,所有K开头的服务全部stop
4.//系统服务不会读取任何来自标准输入的数据流
5.//每个服务的unit操作均受5分钟超时时间限制
###2. 使用systemctl管理服务
//语法:systemctl COMMAND name[.service|.target]
//常用COMMAND:
start name.service //启动服务

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-07-11 14:27:51 CST; 25s ago
     Docs: man:httpd.service(8)

stop name.service //停止服务

[root@localhost ~]# systemctl stop httpd
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd.service(8)

restart name.service //重启服务

[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-07-11 14:31:10 CST; 23s ago
     Docs: man:httpd.service(8)

status name.service //查看服务状态

[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-07-11 14:31:10 CST; 58s ago
     Docs: man:httpd.service(8)
 Main PID: 225776 (httpd)
   Status: "Running, listening on: port 80"
    Tasks: 213 (limit: 23329)
   Memory: 41.3M
   CGroup: /system.slice/httpd.service
           ├─225776 /usr/sbin/httpd -DFOREGROUND
           ├─225777 /usr/sbin/httpd -DFOREGROUND
           ├─225778 /usr/sbin/httpd -DFOREGROUND
           ├─225779 /usr/sbin/httpd -DFOREGROUND
           └─225780 /usr/sbin/httpd -DFOREGROUND

Jul 11 14:31:10 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Jul 11 14:31:10 localhost.localdomain httpd[225776]: AH00558: httpd: Could not reliably determine the server's>
Jul 11 14:31:10 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Jul 11 14:31:10 localhost.localdomain httpd[225776]: Server configured, listening on: port 80
lines 1-19/19 (END)

try-restart name.service //条件式重启服务,若服务已经启动则重启,若服务未启动则不做任何操作

[root@localhost ~]# systemctl try-restart httpd

reload-or-restart name.service //重载或重启服务,能reload则reload,否则restart

[root@localhost ~]# systemctl reload-or-restart httpd
[root@localhost ~]# 

reload-or-try-restart name.service //重载或条件式重启服务,能reload则reload,否则try-restart
mask name.service //禁止设定为开机自启

[root@localhost ~]# systemctl mask httpd
Created symlink /etc/systemd/system/httpd.service → /dev/null.

unmask name.service //取消禁止设定为开机自启

[root@localhost ~]# systemctl unmask httpd
Removed /etc/systemd/system/httpd.service.

list-dependencies name.service //查看服务的依赖关系

[root@localhost ~]# systemctl list-dependencies httpd
httpd.service
● ├─-.mount
● ├─httpd-init.service
● ├─system.slice
● └─sysinit.target
●   ├─dev-hugepages.mount
●   ├─dev-mqueue.mount
●   ├─dracut-shutdown.service
●   ├─import-state.service
●   ├─iscsi-onboot.service
●   ├─kmod-static-nodes.service
●   ├─ldconfig.service
●   ├─loadmodules.service
●   ├─lvm2-lvmpolld.socket
●   ├─lvm2-monitor.service
●   ├─multipathd.service
●   ├─nis-domainname.service
●   ├─plymouth-read-write.service
●   ├─plymouth-start.service
●   ├─proc-sys-fs-binfmt_misc.automount
●   ├─selinux-autorelabel-mark.service
●   ├─sys-fs-fuse-connections.mount
●   ├─sys-kernel-config.mount
●   ├─sys-kernel-debug.mount

is-active name.service //查看某服务当前激活与否的状态

[root@localhost ~]# systemctl is-active httpd
active

is-enabled name.service //查看服务是否开机自动启动

[root@localhost ~]# systemctl is-enabled httpd
disabled

enable name.service //设定某服务开机自动启动

[root@localhost ~]# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

disable name.service //禁止服务开机自动启动

[root@localhost ~]# systemctl disable httpd
Removed /etc/systemd/system/multi-user.target.wants/httpd.service.

isolate name.target //切换至某级别,如systemctl isolate graphical.target就是切换至图形界面
list-unit-files --type service //查看所有服务的开机自动启动状态(是否开机自启)
list-units --type service //查看所有已经激活的服务状态信息
list-units --type target //查看所有已装载的级别
list-units --type service --all //查看所有服务(已启动/已停止)的状态信息
list-units --type target --all //查看所有的级别
get-default //查看默认运行级别

[root@localhost ~]# systemctl get-default httpd
Too many arguments.

set-default name.target //设置默认运行级别

[root@localhost ~]# systemctl get-default starthttpd
Too many arguments.

rescue //切换至紧急救援模式(大多数服务不启动,但是会加载驱动)

[root@localhost ~]# systemctl rescue httpd
Too many arguments.

emergency //切换至emergency模式(驱动不会加载,系统不会初始化,服务不会启动)
halt //关机
poweroff //关机
reboot //重启

[root@localhost ~]# systemctl reboot httpd
[root@localhost ~]# 
连接断开


suspend //挂起系统,此时不能关机,否则无用
hibernate //创建并保存系统快照,下次系统重启时会自动载入快照
hybrid-sleep //混合睡眠,快照并挂起
###3. CentOS6以前版本的系统控制服务方式
service NAME start //启动NAME服务
service NAME stop //停止NAME服务
service NAME status //查看NAME服务状态
service NAME restart //重启NAME服务
chkconfig --add NAME //把NAME脚本纳入管理并设置开机自启
chkconfig NAME on //设置开机自启
chkconfig NAME off //设置开机不自动启动
#网络管理

1.网卡命名

1.1 传统网卡命名机制

传统命名:
以太网eth[0,1,2,…]
wlan[0,1,2,…]

1.2 redhat7网卡命名机制

systemd对网络设备的命名方式:

如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测,则根据此索引进行命名,例如eno1
如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
如果用户显式启动,也可根据MAC地址进行命名,例如enx2387a1dc56
上述均不可用时,则使用传统命名机制
上述命名机制中,有的需要biosdevname程序的参与。所以必须安装biosdevname程序且启用它。

1.3 网络接口名称组成格式

基于固件、设备结构、设备类型

  • 由两个字母开头标示固件
    以太网网卡以 en 开头
    无线网卡以 wl 开头
  • 设备结构
    o:主板上集成的设备的设备索引号
    s:扩展槽的索引号
    x:基于MAC地址的命名
    ps:基于物理位置拓扑的命名。如enp2s1,表示PCI总线上第2个总线的第1个插槽的设备索引号
    ###1.4回归传统命名
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33
[root@localhost network-scripts]# mv ifcfg-ens33 ifcfg-eth0
[root@localhost network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0//此处要把ens33改成eht0
UUID=233e5103-03ba-4dbd-8cc3-ef4dbefbb941
DEVICE=eth0//此处要把ens33改成eth0
ONBOOT=yes

//编辑/etc/default/grub配置文件,在以GRUB_CMDLINE_LINUX开头的行内rhgb的前面加上net.ifnames=0 biosdevname=0

[root@localhost ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cs-swap rd.lvm.lv=cs/root rd.lvm.lv=cs/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

//为grub2生成其配置文件

[root@localhost ~]# grub2-mkconfig -o /etc/grub2.cfg
Generating grub configuration file ...
done

//重启系统

[root@localhost ~]# reboot

###2. 网络管理常用命令

2.1 ifconfig

//查看当前处于活动状态的所有网络接口

[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.181.159  netmask 255.255.255.0  broadcast 192.168.181.255
        inet6 fe80::20c:29ff:fe08:7110  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:08:71:10  txqueuelen 1000  (Ethernet)
        RX packets 84995  bytes 30522908 (29.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 116892  bytes 26506082 (25.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 24  bytes 3508 (3.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24  bytes 3508 (3.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:40:02:68  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

//查看所有网卡状态信息, 包括禁用和启用

[root@localhost ~]# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.181.159  netmask 255.255.255.0  broadcast 192.168.181.255
        inet6 fe80::20c:29ff:fe08:7110  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:08:71:10  txqueuelen 1000  (Ethernet)
        RX packets 85483  bytes 30559262 (29.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 117642  bytes 26689404 (25.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 24  bytes 3508 (3.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24  bytes 3508 (3.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:40:02:68  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

//网卡配置信息含义如下:

UP: 网卡处于活动状态
BROADCAST: 支持广播
RUNNING: 网线已接入
MULTICAST: 支持组播
MTU: 最大传输单元(字节),即此接口一次所能传输的最大封包

inet: 显示IPv4地址行
inet6: 显示IPv6地址行
link/enther: 指设备硬件(MAC)地址
txqueuelen: 传输缓存区长度大小
RX packets: 接收的数据包
TX packets: 发送的数据包
errors: 总的收包的错误数量
dropped: 由于各种原因, 导致拷贝在内存过程中被丢弃
collisions: 网络信号冲突情况, 值不为0则可能存在网络故障

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值