首页 帮助中心 香港大带宽服务器 Linux使用Systemctl控制和管理服务
Linux使用Systemctl控制和管理服务
时间 : 2024-12-13 13:36:20 编辑 : 华纳云 阅读量 : 74

在现代Linux系统中,systemd已经成为了标准的系统和服务管理器。systemd不仅接管了系统的启动流程,还提供了一个强大的工具systemctl,用于控制和管理系统上的服务。本文华纳云将详细介绍如何使用systemctl来管理和控制Linux中的服务。

systemctl是systemd系统和服务管理器的命令行工具。它允许用户启动、停止、重新启动服务,查看服务状态,以及进行其他与服务相关的管理任务。在使用systemctl之前,如果需要了解一些基本的命令和选项:可以参考《Linux中systemd服务和单元的解读

使用 Systemctl 控制和管理服务,列出全部服务,包括企业和禁用服务:

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

UNIT FILE                                   STATE   

arp-ethers.service                          disabled

auditd.service                              enabled

autovt@.service                             disabled

blk-availability.service                    disabled

brandbot.service                            static  

collectd.service                            disabled

console-getty.service                       disabled

console-shell.service                       disabled

cpupower.service                            disabled

crond.service                               enabled

dbus-org.fedoraproject.FirewallD1.service   enabled

....

在 Linux 中启动、重启、停止、重新加载和检查服务 ( httpd.service )的状态:

# systemctl start httpd.service

# systemctl restart httpd.service

# systemctl stop httpd.service

# systemctl reload httpd.service

# systemctl status httpd.service

httpd.service - The Apache HTTP Server

Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)

Active: active (running) since Tue 2015-04-28 17:21:30 IST; 6s ago

Process: 2876 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)

Main PID: 2881 (httpd)

Status: "Processing requests..."

CGroup: /system.slice/httpd.service

├─2881 /usr/sbin/httpd -DFOREGROUND

├─2884 /usr/sbin/httpd -DFOREGROUND

├─2885 /usr/sbin/httpd -DFOREGROUND

├─2886 /usr/sbin/httpd -DFOREGROUND

├─2887 /usr/sbin/httpd -DFOREGROUND

└─2888 /usr/sbin/httpd -DFOREGROUND

Apr 28 17:21:30 tecmint systemd[1]: Starting The Apache HTTP Server...

Apr 28 17:21:30 tecmint httpd[2881]: AH00558: httpd: Could not reliably determine the server's fully q...ssage

Apr 28 17:21:30 tecmint systemd[1]: Started The Apache HTTP Server.

Hint: Some lines were ellipsized, use -l to show in full.

当使用 systemctl 中的start、restart、stop 和reload等命令时,不会在终端上得到任何输出,唯一的status命令会打印输出。

激活服务以及在启动时启用或禁用服务(系统启动时自动启动服务)。

# systemctl is-active httpd.service 

# systemctl enable httpd.service 

# systemctl disable httpd.service

如何屏蔽或取消屏蔽服务:

# systemctl mask httpd.service 

ln -s '/dev/null' '/etc/systemd/system/httpd.service'

# systemctl unmask httpd.service 

rm '/etc/systemd/system/httpd.service'

使用systemctl命令终止服务:

# systemctl kill httpd

# systemctl status httpd

httpd.service - The Apache HTTP Server

Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)

Active: failed (Result: exit-code) since Tue 2015-04-28 18:01:42 IST; 28min ago

Main PID: 2881 (code=exited, status=0/SUCCESS)

Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Apr 28 17:37:29 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.

Apr 28 17:37:29 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.

Apr 28 17:37:39 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.

Apr 28 17:37:39 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.

Apr 28 17:37:49 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.

Apr 28 17:37:49 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.

Apr 28 17:37:59 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.

Apr 28 17:37:59 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.

Apr 28 18:01:42 tecmint systemd[1]: httpd.service: control process exited, code=exited status=226

Apr 28 18:01:42 tecmint systemd[1]: Unit httpd.service entered failed state.

Hint: Some lines were ellipsized, use -l to show in full.

列出全部系统挂载点:

# systemctl list-unit-files --type=mount

UNIT FILE                     STATE   

dev-hugepages.mount           static  

dev-mqueue.mount              static  

proc-sys-fs-binfmt_misc.mount static  

sys-fs-fuse-connections.mount static  

sys-kernel-config.mount       static  

sys-kernel-debug.mount        static  

tmp.mount                     disabled

如何卸载、挂载和重新加载系统挂载点及检查挂载点状态?

# systemctl start tmp.mount

# systemctl stop tmp.mount

# systemctl restart tmp.mount

# systemctl reload tmp.mount

# systemctl status tmp.mount

tmp.mount - Temporary Directory

Loaded: loaded (/usr/lib/systemd/system/tmp.mount; disabled)

Active: active (mounted) since Tue 2015-04-28 17:46:06 IST; 2min 48s ago

Where: /tmp

What: tmpfs

Docs: man:hier(7)

http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems

Process: 3908 ExecMount=/bin/mount tmpfs /tmp -t tmpfs -o mode=1777,strictatime (code=exited, status=0/SUCCESS)

Apr 28 17:46:06 tecmint systemd[1]: Mounting Temporary Directory...

Apr 28 17:46:06 tecmint systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.

Apr 28 17:46:06 tecmint systemd[1]: Mounted Temporary Directory.

如何启动时激活、启用或者禁用挂载点:

# systemctl is-active tmp.mount 

# systemctl enable tmp.mount 

# systemctl disable tmp.mount

如何在 Linux 中屏蔽(使其无法启动)或取消屏蔽挂载点。

# systemctl mask tmp.mount 

ln -s '/dev/null' '/etc/systemd/system/tmp.mount'

# systemctl unmask tmp.mount 

rm '/etc/systemd/system/tmp.mount'

列出全部可用系统套接字:

# systemctl list-unit-files --type=socket

UNIT FILE                    STATE   

dbus.socket                  static  

dm-event.socket              enabled

lvm2-lvmetad.socket          enabled

rsyncd.socket                disabled

sshd.socket                  disabled

syslog.socket                static  

systemd-initctl.socket       static  

systemd-journald.socket      static  

systemd-shutdownd.socket     static  

systemd-udevd-control.socket static  

systemd-udevd-kernel.socket  static  

11 unit files listed.

如何在 Linux 中启动、重启、停止、重新加载和检查套接字(例如: cups.socket )的状态。

# systemctl start cups.socket

# systemctl restart cups.socket

# systemctl stop cups.socket

# systemctl reload cups.socket

# systemctl status cups.socket

cups.socket - CUPS Printing Service Sockets

Loaded: loaded (/usr/lib/systemd/system/cups.socket; enabled)

Active: active (listening) since Tue 2015-04-28 18:10:59 IST; 8s ago

Listen: /var/run/cups/cups.sock (Stream)

Apr 28 18:10:59 tecmint systemd[1]: Starting CUPS Printing Service Sockets.

Apr 28 18:10:59 tecmint systemd[1]: Listening on CUPS Printing Service Sockets.

华纳云 推荐文章
管理Linux 磁盘分区常用的fdisk命令有哪些 rsync命令在Linux中的常用方法 用dmesg命令行排除linux系统故障和收集信息 文件和目录中查找特定字符串或单词的操作方法 适合Linux使用的4款二维码生成工具 Linux中用Netplan实现两个网络接口的桥接 Linux中使用Dtrx命令提取和压缩文件具体操作 Linux中恢复误删文件的方法 Linux中想查找或终止正在运行进程怎么做 什么是内核空间和用户空间 它们是如何通信的
客服咨询
7*24小时技术支持
技术支持
渠道支持