systemctl命令的使用

一、简介

systemctl命令是RHEL 7上新的系统服务管理指令,其将此前service和chkconfig两个命令组合在一起。其功能可大致分为:查询或发送相应的控制命令给systemd、管理unit、启动或禁止相应的服务等等。

二、systemctl命令的使用

1、命令格式

systemctl [OPTIONS...] COMMAND [NAME...]

systemctl命令选项一般用的不多,更多时候是使用其子命令进行操作。

2、systemctl命令的子命令COMMAND

下面为常用的systemctl子命令的使用格式以及在旧版本中对应的实现方式:

功能 旧指令 新指令
启动服务 service NAME start systemctl start NAME[.service]
停止服务 service NAME stop systemctl stop NANME[.service]
重启服务 service NAME restart systemctl restart NAME[.service]
查看对应服务的状态 service NAME status systemctl status NAME[.service]
条件式重启 service NAME condrestart systemctl try-restart NAME[.service]
重载或重启服务 - systemctl [reload|restart] NAME[.service]
重载或条件式重启服务 - systemctl [reload|try-restart] NAME[.service]
查看相应的服务的激活状态 - systemctl is-active NAME[.service]
查看所有已激活的服务 - systemctl list-units --type service
查看所有服务(包括已激活及未激活的) chkconfig --list NAME systemctl is-enabled NAME[.service]
设置服务开机自启 chkconfig NAME on systemctl enable NAME[.service]
禁止服务开机自启 chkconfig NAME off systemctl disable NAME[.service]
查看某服务是否能够开机自启 chkconfig --list NAME systemctl is-enabled NAME[.service]
查看服务的依赖关系 - systemctl list-dependencies NAME[.service]
级别切换 init N systemctl isolate NAME.target
查看运行级别 runlevel systemctl list-units --type target
查看所有级别 - systemctl list-units -t target -a
获取默认运行级别 - systemctl get-default
修改默认运行级别 - systemctl set-default NAME[.service]
切换至救援模式 - systemctl rescue
切换至emergency模式 - systemctl emergency
关机 - systemctl
重启 - systemctl reboot
挂起 - systemctl suspend
快照 - systemctl hibernate
快照并挂起 - systemctl hybrid-sleep
重新读取unit服务文件 - systemctl daemon-reload

注意:在RHEL 7 上对应的运行级别文件分别为:

级别0:runlevel0.target或poweroff.target
级别1:runlevel1.target或rescue.target
级别2:runlevel2.target或multi-user.target
级别3:runlevel3.target或multi-user.target
级别4:runlevel4.target或multi-user.target
级别5:runlevel5.target或graphical.taget
级别6:runlevel6.targe或reboot.target

三、使用案例

  • 管理服务
    启动服务:
[root@localhost ~]# systemctl start httpd

重启服务:

[root@localhost ~]# systemctl restart httpd

关闭服务:

[root@localhost ~]# systemctl stop httpd

查看服务状态:

[root@localhost ~]# systemctl status httpd
● httpd.service - apache
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; linked; vendor preset: disabled)
   Active: failed (Result: exit-code) since 六 2018-04-07 15:52:10 CST; 1min 23s ago
  Process: 3080 ExecStop=/bin/kill ${MAINPID} (code=exited, status=1/FAILURE)
  Process: 3077 ExecStart=/usr/local/apache/bin/apachectl -k start -DFOREGROUND (code=exited, status=0/SUCCESS)
 Main PID: 3077 (code=exited, status=0/SUCCESS)

查看服务的依赖关系:

[root@localhost ~]# systemctl list-dependencies apache
apache.service
● ├─system.slice
● └─basic.target
●   ├─firewalld.service
●   ├─microcode.service
●   ├─rhel-autorelabel-mark.service
●   ├─rhel-autorelabel.service
●   ├─rhel-configure.service
●   ├─rhel-dmesg.service
●   ├─rhel-loadmodules.service
●   ├─paths.target
●   ├─slices.target
●   │ ├─-.slice
●   │ └─system.slice
●   ├─sockets.target
●   │ ├─dbus.socket
●   │ ├─dm-event.socket
●   │ ├─systemd-initctl.socket
●   │ ├─systemd-journald.socket
●   │ ├─systemd-shutdownd
....
  • 系统管理
    重启系统:
[root@localhost ~]# systemctl reboot
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(192.168.0.188:22) at 15:56:05.

切换至运行级别1:

[root@localhost ~]# systemctl isolate runlevel1.target
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.
[root@localhost ~]# runlevel
3 1
救援模式

查看当前运行级别:

[root@localhost ~]# systemctl list-units --type target
UNIT                  LOAD   ACTIVE SUB    DESCRIPTION
basic.target          loaded active active Basic System
cryptsetup.target     loaded active active Encrypted Volumes
getty.target          loaded active active Login Prompts
local-fs-pre.target   loaded active active Local File Systems (Pre)
local-fs.target       loaded active active Local File Systems
multi-user.target     loaded active active Multi-User System
network-online.target loaded active active Network is Online
network.target        loaded active active Network
paths.target          loaded active active Paths
remote-fs.target      loaded active active Remote File Systems
slices.target         loaded active active Slices
sockets.target        loaded active active Sockets
swap.target           loaded active active Swap
sysinit.target        loaded active active System Initialization
timers.target         loaded active active Timers

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

15 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'

你可能感兴趣的:(systemctl命令的使用)