通过systemctl管理服务

news2024/10/7 5:25:58

文章目录

  • 通过systemctl管理服务
    • 通过systemctl管理单一服务(service unit)
      • 使用案例
      • 服务启动/关闭/查看的练习
      • 关于systemctl命令启动/停止服务后面的后缀名是否加?
    • 通过systemctl查看系统上所有的服务
      • 使用案例
    • 通过systemctl管理不同的操作环境(target unit)
      • 使用案例
    • 通过systemctl分析各服务之间的依赖性
      • 使用案例
    • 与systemd的daemon运行过程相关的目录简介
    • 网络服务与端口对应简介
    • 关闭网络服务

通过systemctl管理服务

基本上,systemd这个启动服务的机制,主要是通过一个名为systemctl的命令来完成的。跟以前System V 需要service、chkconfig、setup、init等命令来协助不同,systemd只有systemctl这个命令来处理而已,全部的操作都得要systemctl。

通过systemctl管理单一服务(service unit)

一般来说服务的启动有两个阶段,一个是【开机的时候设置要不要启动这个服务】,以及【你现在要不要启动这个服务】,这两者之间有很大的差异。举个例子,假如我们现在要【立刻停止atd这个服务】时,正确的的方法(不能使用kill)要怎么处理?

systemctl [command] [unit]
command主要有:
start:立刻启动后面接的unit
stop:里关闭后面接的unit
restart:立刻重启后面接的unit,就是执行stop再start的意思
reload:不关闭后面接的unit的情况下,重新加载配置文件,让设置生效
enable:设置下次开机时,后面接的unit会被启动
disable:设置下次开机时,后面接的unit不会被启动
status:目前后面接的这个unit的状态,会里出有没有正在执行、开机默认执行与否、登录等信息等
is-aotive:目前有没有正在运行
is-enable:开机时有没有默认启用这个unit

使用案例

案例一:看看目前atd这个服务的状态是什么(前提是你得有at这个服务)

image-20230511120129615

  • 重点在于第二、第三行

  • Loaded:这行说明、开机的时候这个unit会不会启动,enabled为开机启动,disabled开机不会启动

  • Active:现在这个unit的状态是正在执行(running)或没有执行(dead)

  • 后面几行则是说明这个unit程序的PID状态以及最后一行显示这个服务的日志文件信息

  • 日志文件信息格式为:【时间】 【信息发送主机】【哪一个服务的信息】【实际信息内容】

所以上面的显示信息是:这个atd默认开机就启动,而且现在正在运行的意思。

案例二:正常关闭这个atd服务

image-20230511170444151

目前这个unit下次开机还是会启动,但是现在处于关闭状态,同时,最后两行为新增加的登录信息,告诉我们目前系统状态

上面案例中,我们已经关闭了ard,这样做才是对的。不应该使用kill的方式来关闭一个正常的服务。否则systemctl会无法继续监控该服务,那就比较麻烦了。虽然atd现在是关闭的,未来重新启动后,这个服务也会再次启动,因为他是enabled,【现在的状态】和【开机的默认状态】两者是有差异的

Active除了running和dead之外还有其他状态

  • active(running):正有一个或多个进程正在系统中运行的意思,举例来说,正在运行中的atd就是这种模式
  • active(exited):仅执行一次就正常结束的服务,目前并没有任何进程再系统中执行。
  • active(waiting):正在运行当中,不过还需要等待其他的事件发生才能继续运行。
  • inactive:这个服务目前没有运行
  • enabled:这个daemon将在开机时被运行
  • disabled:这个daemon在开机时不会被运行
  • static:这个daemon不可以自己启动(不可enable),不过可能会被其他的enabled的服务来唤醒(依赖属性的服务)
  • mask:这个daemon无论如何都无法被启动,因为已经被强制注销(非删除)。可通过systemctl unmask方式改为默认状态。

服务启动/关闭/查看的练习

找到系统中名为chronyd的服务,查看此服务的状态,查看完毕后,将此服务设置为:(1)开机不会启动(2)现在状况是关闭的

  1. 查看状态,确认是否为关闭/未启动
[root@localhost ~]# systemctl status chronyd.service
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2023-05-11 08:46:23 CST; 8h ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
 Main PID: 804 (chronyd)
   CGroup: /system.slice/chronyd.service
           └─804 /usr/sbin/chronyd

511 08:46:23 localhost.localdomain systemd[1]: Starting NTP client/server...
511 08:46:23 localhost.localdomain chronyd[804]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SC...EBUG)
511 08:46:23 localhost.localdomain chronyd[804]: Frequency -33.147 +/- 0.259 ppm read from /var/lib/chrony/drift
511 08:46:23 localhost.localdomain systemd[1]: Started NTP client/server.
511 08:46:33 localhost.localdomain chronyd[804]: Selected source 162.159.200.1
511 08:46:33 localhost.localdomain chronyd[804]: System clock wrong by -3.831645 seconds, adjustment started
511 08:46:29 localhost.localdomain chronyd[804]: System clock was stepped by -3.831645 seconds
511 08:46:33 localhost.localdomain chronyd[804]: Source 193.182.111.14 replaced with 193.182.111.142
511 09:08:10 localhost.localdomain chronyd[804]: Selected source 84.16.67.12
Hint: Some lines were ellipsized, use -l to show in full.
  1. 由上面知道目前是启动的,因此立刻将他关闭,同时开机不会启动才行
[root@localhost ~]# systemctl stop chronyd.service
[root@localhost ~]# systemctl disable chronyd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/chronyd.service.
# 其实就是从/etc/systemd/system 下面移除了一条链接文件而已
[root@localhost ~]# systemctl status chronyd.service
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled)
   Active: inactive (dead)
     Docs: man:chronyd(8)
           man:chrony.conf(5)
# 如此则将chronyd这个服务完整的关闭了

关于systemctl命令启动/停止服务后面的后缀名是否加?

在使用systemctl命令停止服务时,systemctl stop atd.service和systemctl stop atd这两条命令是等价的,都会停止atd服务。因为systemctl命令会自动识别服务类型,如果服务名能够唯一匹配到一个服务单元,就可以省略服务单元名的后缀。
不过,建议在使用systemctl命令时,尽量使用完整的服务单元名来指定服务,这样可以避免服务名和其他单元名发生冲突或者产生歧义。同时,完整的服务单元名也更加明确和易于理解,便于其他管理员或者开发人员进行服务管理和维护。
因此,建议使用下面的命令来停止atd服务:

systemctl stop atd.service

这样可以确保服务单元名的唯一性和明确性,避免发生不必要的错误或者冲突。

通过systemctl查看系统上所有的服务

上面谈到的是单一服务的启动、关闭、查看,以及依赖服务要注销的功能。那系统上面有多少的服务存在?这时候就得要通过list-units及list-unit-files来查看。语法如下

systemctl [command] [--type=TYPE] [--all]
command:
   list-units      :依据unit显示目前有启动的unit,若加上-all才会列出没启动的。
   list-units-files:依据/usr/lib/systemd/system/ 内的文件,将所有文件列表说明。
--type=TYPE:就是之前提到的unit类型,主要有service、socket、target等

使用案例

列出系统上面有启动的unit

[root@localhost ~]# systemctl list-units
UNIT                                                  LOAD   ACTIVE SUB       DESCRIPTION
proc-sys-fs-binfmt_misc.automount                     loaded active waiting   Arbitrary Executable File Formats File System Automoun
sys-devices-pci0000:00-0000:00:07.1-ata2-host1-target1:0:0-1:0:0:0-block-sr0.device loaded active plugged   VMware_Virtual_IDE_CDROM
sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:0-2:0:0:0-block-sda-sda1.device loaded active plugged   VMware_Virtual_S 1
sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:0-2:0:0:0-block-sda-sda2.device loaded active plugged   VMware_Virtual_S 2
sys-devices-pci0000:00-0000:00:10.0-host2-target2:0:0-2:0:0:0-block-sda.device loaded active plugged   VMware_Virtual_S
....
......
vsftpd.service                      loaded active running   Vsftpd ftp daemon
.....
...
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.
113 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
# 列出的项目中,主要的意义是:
# UNIT   :项目的名称,包括各unit的类别(看副文件名)
# LOAD   :开机时是否会被加载,默认systemctl显示的是加载的项目而已
# ACTIVE :目前的状态,须与后续的SUB搭配,就是我们用systemctl status 查看时,active的项目
# DESCRIPTION:详细描述
# 另外systemctl 不加删除,默认就是 list-units的意思

列出所有已经安装的unit有哪些

image-20230511190616499

使用【systemctl list-unit-files】会将系统上所有的服务通通显示出来,而不像list-units仅以unit分类作大致的说明。至于STATE状态就是开机是否会加载的那个状态项目。主要有enabled、disabled、mask、static等。

假设我不想要知道这么多的unit项目,我只想知道service这种类别的daemon而已,而且不论是否已经成功,通通要显示出来。

image-20230511193854823

只有*.service的项目才会出现

通过systemctl管理不同的操作环境(target unit)

上个小节我们知道系统上所有的systemd的unit查看的方式,那么可否列出跟操作界面有关的target项目呢?

[root@localhost ~]# systemctl list-units --type=target --all
  UNIT                      LOAD      ACTIVE   SUB    DESCRIPTION
  basic.target              loaded    active   active Basic System
  bluetooth.target          loaded    active   active Bluetooth
  cryptsetup.target         loaded    active   active Local Encrypted Volumes
  emergency.target          loaded    inactive dead   Emergency Mode
  final.target              loaded    inactive dead   Final Step
  getty-pre.target          loaded    inactive dead   Login Prompts (Pre)
  getty.target              loaded    active   active Login Prompts
  graphical.target          loaded    inactive dead   Graphical Interface
  initrd-fs.target          loaded    inactive dead   Initrd File Systems
  initrd-root-fs.target     loaded    inactive dead   Initrd Root File System
  initrd-switch-root.target loaded    inactive dead   Switch Root
  initrd.target             loaded    inactive dead   Initrd Default Target
  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-pre.target        loaded    active   active Network (Pre)
  network.target            loaded    active   active Network
  nss-user-lookup.target    loaded    inactive dead   User and Group Name Lookups
  paths.target              loaded    active   active Paths
  remote-fs-pre.target      loaded    inactive dead   Remote File Systems (Pre)
  remote-fs.target          loaded    active   active Remote File Systems
  rescue.target             loaded    inactive dead   Rescue Mode
  shutdown.target           loaded    inactive dead   Shutdown
  slices.target             loaded    active   active Slices
  sockets.target            loaded    active   active Sockets
  sound.target              loaded    active   active Sound Card
  swap.target               loaded    active   active Swap
  sysinit.target            loaded    active   active System Initialization
● syslog.target             not-found inactive dead   syslog.target
  time-sync.target          loaded    inactive dead   System Time Synchronized
  timers.target             loaded    active   active Timers
  umount.target             loaded    inactive dead   Unmount All Filesystems

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.

33 loaded units listed.
To show all installed unit files use 'systemctl list-unit-files'.

在centos7.9.2009中,默认情况下有26个target unit,而跟操作界面相关性比较高的target主要有下面几个。

  • graphical.target:就是命令加上图形界面,这个项目已经包含了下面的multi-user.target
  • multi-user.target:纯命令行模式
  • rescue.target:在无法使用root登录的情况下,systemd在启动时会多加一个额外的临时系统,与你原本的系统无关,这时你可以取得root的权限来维护你的系统。但是这是额外系统,因此可能需要用到chroot的方式来取得你原有的系统
  • emergency.target:紧急处理系统的错误,还是需要使用root登录的情况,在无法使用rescue.target时,可以尝试使用这种模式。
  • shutdown.target:就是关机的模式
  • getty.target:可以设置你需要几个tty之类的操作,如果你想要降低tty的数量,可以修改它的配置文件

正常的模式是 multi-user.target 以及 graphical.target 两个,恢复方面的模式主要是rescue.target 以及更紧急的emergency.target。如果要修改可提供登录的tty数量,则修改getty.target即可。基本上,我们最常使用的当然就是multi-user 以及graphical。

那么我如何知道目前的模式是哪一种呢?如何修改呢?

systemctl [command] [unit.target]
选项:
command:
     get-default:取得目前的target
     set-default:设置后面接的target称为默认的操作模式
     isolate:切换到后面接的模式  

使用案例

我们测试机器默认是图形界面、先查看是否为图形模式,再将模式模式转为命令行模式或图形界面。

[root@localhost ~]# systemctl get-default
multi-user.target # 命令行界面
[root@localhost ~]# systemctl set-default  graphical.target 
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@localhost ~]# systemctl get-default
graphical.target

在不重新启动的情况下,将目前的操作环境改为纯命令行模式,关闭图形界面

[root@localhost ~]# systemctl isolate multi-user.target

若需要重新取得图形界面

[root@localhost ~]# systemctl isolate graphical.target

需要注意的是,改变graphical.target 以及 multi-user.target 是通过isolate来完成的。

在正常的切换情况下,使用上述isolate的方式即可。不过未来方便起见,systemd 也提供了数个简单的命令给我们切换操作模式

systemctl poweroff     系统关机
systemctl reboot       重新开机
systemctl suspend      进入挂起模式
systemctl hibernate    进入休眠模式
systemctl rescue       强制进入恢复模式
systemctl emergency    强制进入紧急恢复模式

我们来一一解释一下上面的操作

  1. systemctl poweroff:该命令用于关闭系统,类似于传统的shutdown -h now命令。
  2. systemctl reboot:该命令用于重新启动系统,类似于传统的shutdown -r now命令。
  3. systemctl suspend:该命令用于将系统挂起(睡眠模式),可以快速恢复系统状态,但是会消耗一定的电量。
  4. systemctl hibernate:该命令用于将系统休眠(休眠模式),可以保存当前系统状态到硬盘中,以便下次唤醒时恢复。
  5. systemctl rescue:该命令用于强制进入恢复模式,该模式下只会启动最小限度的系统服务,可以用于修复系统问题,如丢失了root密码等。
  6. systemctl emergency:该命令用于强制进入紧急恢复模式,该模式下只会启动最小限度的系统服务,并且所有本地文件系统都会以只读方式挂载,可以用于修复严重的系统问题,如磁盘损坏等。

通过systemctl分析各服务之间的依赖性

如何追踪某一个unit的依赖性呢?举例来说,我们怎么知道graphical.target 会用到 multi-user.target?那graphical.target 下面还有哪些东西?

systemctl list-dependencies [unit] [--reverse]
选项:
--reverse:反向追踪谁使用这个unit的意思。

使用案例

列出目前的target环境下,用到了哪些unit

[root@localhost ~]# systemctl get-default
graphical.target
[root@localhost ~]# systemctl list-dependencies
default.target
● ├─display-manager.service
● ├─network.service
● ├─systemd-readahead-collect.service
● ├─systemd-readahead-replay.service
● ├─systemd-update-utmp-runlevel.service
● └─multi-user.target
●   ├─atd.service
●   ├─auditd.service
●   ├─crond.service
●   ├─dbus.service
●   ├─irqbalance.service
●   ├─kdump.service
●   ├─network.service
●   ├─NetworkManager.service
●   ├─plymouth-quit-wait.service
●   ├─plymouth-quit.service
●   ├─postfix.service
●   ├─rhel-configure.service
●   ├─rsyslog.service
●   ├─sshd.service
●   ├─systemd-ask-password-wall.path
●   ├─systemd-logind.service
●   ├─systemd-update-utmp-runlevel.service
●   ├─systemd-user-sessions.service
●   ├─tuned.service
●   ├─vmtoolsd.service
●   ├─vsftpd.service
●   ├─basic.target
●   │ ├─microcode.service
●   │ ├─rhel-dmesg.service
●   │ ├─selinux-policy-migrate-local-changes@targeted.service
●   │ ├─paths.target
●   │ ├─slices.target
●   │ │ ├─-.slice
●   │ │ └─system.slice
●   │ ├─sockets.target
●   │ │ ├─dbus.socket
●   │ │ ├─dm-event.socket
●   │ │ ├─systemd-initctl.socket
●   │ │ ├─systemd-journald.socket
●   │ │ ├─systemd-shutdownd.socket
●   │ │ ├─systemd-udevd-control.socket
●   │ │ └─systemd-udevd-kernel.socket
●   │ ├─sysinit.target
●   │ │ ├─dev-hugepages.mount
●   │ │ ├─dev-mqueue.mount
●   │ │ ├─kmod-static-nodes.service
●   │ │ ├─lvm2-lvmetad.socket
●   │ │ ├─lvm2-lvmpolld.socket
●   │ │ ├─lvm2-monitor.service
●   │ │ ├─plymouth-read-write.service
●   │ │ ├─plymouth-start.service
●   │ │ ├─proc-sys-fs-binfmt_misc.automount
●   │ │ ├─rhel-autorelabel-mark.service
●   │ │ ├─rhel-autorelabel.service
●   │ │ ├─rhel-domainname.service
●   │ │ ├─rhel-import-state.service
●   │ │ ├─rhel-loadmodules.service
●   │ │ ├─sys-fs-fuse-connections.mount
●   │ │ ├─sys-kernel-config.mount
●   │ │ ├─sys-kernel-debug.mount
●   │ │ ├─systemd-ask-password-console.path
●   │ │ ├─systemd-binfmt.service
●   │ │ ├─systemd-firstboot.service
●   │ │ ├─systemd-hwdb-update.service
●   │ │ ├─systemd-journal-catalog-update.service
●   │ │ ├─systemd-journal-flush.service
●   │ │ ├─systemd-journald.service
●   │ │ ├─systemd-machine-id-commit.service
●   │ │ ├─systemd-modules-load.service
●   │ │ ├─systemd-random-seed.service
●   │ │ ├─systemd-sysctl.service
●   │ │ ├─systemd-tmpfiles-setup-dev.service
●   │ │ ├─systemd-tmpfiles-setup.service
●   │ │ ├─systemd-udev-trigger.service
●   │ │ ├─systemd-udevd.service
●   │ │ ├─systemd-update-done.service
●   │ │ ├─systemd-update-utmp.service
●   │ │ ├─systemd-vconsole-setup.service
●   │ │ ├─cryptsetup.target
●   │ │ ├─local-fs.target
●   │ │ │ ├─-.mount
●   │ │ │ ├─boot.mount
●   │ │ │ ├─home.mount
●   │ │ │ ├─rhel-readonly.service
●   │ │ │ └─systemd-remount-fs.service
●   │ │ └─swap.target
●   │ │   └─dev-mapper-centos\x2dswap.swap
●   │ └─timers.target
●   │   └─systemd-tmpfiles-clean.timer
●   ├─getty.target
●   │ └─getty@tty1.service
●   └─remote-fs.target

因为我们把操作模式变成了 multi-user.target ,因此这边使用list-dependencies时,所列出的default.target其实是multi-user.target的内容。根据线条连接结构,我们也能够知道,multi-user.target 其实还会用到 basic.target、getty.target、remote-fs.target 三大项目,而basic.target 又用到了 sockets.target、sysint.target、timers.target等,依赖关系显示的很清楚。

如果查出谁会用到multi-user.target?

[root@localhost ~]# systemctl list-dependencies --reverse
default.target

reverse,本来就是反向的意思,所以加上这个选项,代表【谁还会用到我的服务】的意思,所以 multi-user.target主要是被default.target所使用

那么default-target又使用了多少服务呢?

[root@localhost ~]# systemctl list-dependencies default.target
default.target
● ├─display-manager.service
● ├─network.service
● ├─systemd-readahead-collect.service
● ├─systemd-readahead-replay.service
● ├─systemd-update-utmp-runlevel.service
● └─multi-user.target
●   ├─atd.service
●   ├─auditd.service
●   ├─crond.service
●   ├─dbus.service
●   ├─irqbalance.service
●   ├─kdump.service
●   ├─network.service
●   ├─NetworkManager.service
●   ├─plymouth-quit-wait.service
●   ├─plymouth-quit.service
●   ├─postfix.service
●   ├─rhel-configure.service

与systemd的daemon运行过程相关的目录简介

  1. /usr/lib/systemd/system/:使用CentOS官方提供的软件安装后,默认的启动脚本配置文件都放在这里,这里的数据尽量不要修改,要修改时,请到/etc/systemd/system下面修改较好。

  2. /run/systemd/system/:系统执行过程中所产生的服务脚本,这些脚本的优先级要比/usr/lib/systemd/system 高

  3. /etc/systemd/system/:管理员依据主机系统的需求所建立的执行脚本,其实这里目录有点像以前的/etc/rc.d/rc5.d/Sxx 之类的功能,执行优先级又比/run/systemd/system/ 高

  4. /etc/sysconfig/*:该目录存放系统服务的配置文件。这些配置文件包含了服务启动时的参数和环境变量等信息。例如,/etc/sysconfig/iptables文件包含了iptables防火墙的配置信息。如果服务单元文件中指定了某个配置文件路径,则该路径的配置文件会覆盖该目录中的同名配置文件。

  5. /var/lib/:该目录存放系统和服务的运行时数据,如数据库、缓存、日志等。例如,/var/lib/mysql目录存放了MySQL数据库的数据文件。在服务启动时,服务进程会使用该目录中存储的数据。

  6. /run/:该目录存放运行时文件,如进程ID文件、锁文件等。例如,/run/httpd/httpd.pid文件存放了Apache HTTP服务器进程的PID。这些文件通常在系统启动时自动创建,系统关闭时自动删除。如果该目录中的文件不可用或损坏,服务可能无法正常启动。

需要注意的是,上述目录和文件的优先级关系是有限制的,例如,某些服务单元文件中可能会指定某个配置文件的路径,此时该配置文件的路径就是服务单元文件中指定的路径,而不是根据优先级关系找到的路径。

我们知道systemd里面有很多的本机会用到socket服务,里面可能会产生很多的socket文件,那你怎么知道socket文件放置在哪?

[root@localhost ~]# systemctl list-sockets
LISTEN                      UNIT                         ACTIVATES
/dev/log                    systemd-journald.socket      systemd-journald.service
/run/dbus/system_bus_socket dbus.socket                  dbus.service
/run/dmeventd-client        dm-event.socket              dm-event.service
/run/dmeventd-server        dm-event.socket              dm-event.service
/run/lvm/lvmetad.socket     lvm2-lvmetad.socket          lvm2-lvmetad.service
/run/lvm/lvmpolld.socket    lvm2-lvmpolld.socket         lvm2-lvmpolld.service
/run/systemd/initctl/fifo   systemd-initctl.socket       systemd-initctl.service
/run/systemd/journal/socket systemd-journald.socket      systemd-journald.service
/run/systemd/journal/stdout systemd-journald.socket      systemd-journald.service
/run/systemd/shutdownd      systemd-shutdownd.socket     systemd-shutdownd.service
/run/udev/control           systemd-udevd-control.socket systemd-udevd.service
kobject-uevent 1            systemd-udevd-kernel.socket  systemd-udevd.service

12 sockets listed.
Pass --all to see loaded but inactive sockets, too.

这样很清楚就能够知道正在监听本地服务需求的socket文件所在的位置

网络服务与端口对应简介

网络服务与端口是一一对应的,每个网络服务都需要使用一个端口来进行通信。以下是常见网络服务及其对应的端口:

  • FTP(文件传输协议):20(数据端口)、21(控制端口)

  • SSH(安全外壳协议):22

  • Telnet(远程终端协议):23

  • SMTP(简单邮件传输协议):25

  • DNS(域名系统):53

  • HTTP(超文本传输协议):80

  • POP3(邮局协议版本3):110

  • HTTPS(安全超文本传输协议):443

  • RDP(远程桌面协议):3389

当网络服务需要进行通信时,它会使用相应的端口进行数据的传输和接收。这样的设计可以让不同的网络服务在同一台计算机上并存,同时也可以让不同的计算机上的网络服务进行通信。

也可以查询/etc/service来查询服务的端口

less  /etc/service
# 文件内容较多建议使用less

image-20230512151346445

这个文件的内容是以下面的格式来显示的

< dademon name > < port/封包协议 > < 该服务的说明 >

关闭网络服务

什么是网络服务,基本上产生一个网络监听端口(port)的进程,他就可以称为网络服务,那么如何查看网络端口?

# 默认没有netstat命令需要手动安装net-tools
[root@localhost ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1080/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1311/master         
tcp6       0      0 :::21                   :::*                    LISTEN      1087/vsftpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1080/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1311/master 

那么如果我要关闭vsftpd服务

[root@localhost ~]# systemctl stop vsftpd.service
[root@localhost ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1080/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1311/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1080/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1311/master   

上面的案例只是举例,关闭了vsftpd然后再打开。如果你系统里面有一堆网络端口在监听,而你压根不知道是干什么用的,就建议你停止该服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517822.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试京东失败,再看看2年前的面试题,根本不是一个难度···

刚从京东走出来&#xff0c;被二面难到了&#xff0c;我记得学长两年前去面试的时候&#xff0c;问的问题都特别简单&#xff0c;咋现在难度高了这么多。面试前我也刷过很多的题和看过很多资料&#xff0c;后来想想&#xff0c;这年头网上资料泛滥&#xff0c;测试面试文档更是…

JVM 方法区

栈、堆、方法区的交互关系 线程共享角度: 新建对象分配: 方法区的理解 方法区(Method Area) 与 Java 堆一样&#xff0c;是各个线程共享的内存区域方法区在 JVM 启动的时候被创建&#xff0c;并且它的实际物理内存空间中和 Java 堆区一样都可以不连续的方法区的大小&#xf…

08-02 底层数据设计策略 - 分库分表,热点热数据隔离

关系型数据库的伸缩 读写分离 缓存和搜索引擎本质上也是一种读写分离 商品是典型的读多写少的场景 分库分表 略知一二 分表 分库 业务量大的数据基本都得使用分库分表&#xff0c;不然单表的数据量大之后&#xff0c;性能太差 数据迁移和扩容 成倍扩容 直接…

centos搭建redis并配置redis主从复制

一、gcc环境搭建 1.检查是否有gcc环境&#xff1a; gcc -v#运行命令 gcc -v #如果显示:-bash: gcc: command not found # 表示没有该环境 #如果显示下文&#xff0c;代表有gcc环境 Using built-in specs. COLLECT_GCCgcc COLLECT_LTO_WRAPPER/usr/libexec/gcc/x86_64-redha…

Java中ArrayList的三种构造方法

ArrayList的构造方法 //三种构造方法 ArrayList()// 无参构造 ArrayList(Collection<? extends E> c) //利用其他 Collection 构建 ArrayList ArrayList(int initialCapacity) //指定顺序表初始容量1.无参构造方法 其中elementData是一个成员数组&#xff0c;类型是Ob…

什么是敏捷开发?敏捷开发流程的8个步骤

文章目录 一、什么是敏捷开发&#xff1f;二、敏捷开发模式的分类三、SCRUM 的工作流程四、敏捷开发流程的8个步骤包括&#xff1a;五、敏捷开发模型 一、什么是敏捷开发&#xff1f; 敏捷开发&#xff08;Agile&#xff09;是一种以人为核心、迭代、循序渐进的开发方法。 在…

phpstorm 配置xdebug

目录 配置全局环境 phpstorm 项目xdebug配置 额外补充&#xff1a; 配置全局环境 本地运行命令 php -v, 看是否有Xdebug相关的信息若没有&#xff0c;安装xdebug&#xff0c;以下是mac相关方式&#xff1a; pecl search xdebug 查询&#xff0c;找到之后用 pecl install xdebug…

【企业信息化】第4集 免费开源ERP: Odoo 16 Rental租赁管理系统

文章目录 前言一、概览二、使用功能1.提高出租效率2.产品 & 价格3.销售订单4.跟进5.报告6.集成 三、总结 前言 唯一可以满足您所有需求的租赁软件 从时间安排到开具发票。 您的所有租赁流程都集中在一处。 一、概览 从租金报价到发票 从一处管理所有事务。 从一个视图创建您…

强力推荐,两款Excel插件,极致好用,让你秒变高手

Excel是我们日常生活工作中应用最多、业界最标准的表格软件。 由于Excel的用户数量非常庞大&#xff0c;在社区支持方面非常丰富&#xff0c;用户可以轻松地找到各种教程和解决方案。 虽然Excel很功能已经成熟&#xff0c;但自身也存在一定的局限性&#xff0c;很多用户在网上…

git仓库新建项目第一次推送代码流程记录

git仓库新建项目第一次推送代码流程记录 换了个坑之后,公司改用SVN管理代码,隔了好长时间没用git,突然又捡起来,有点懵逼,简单记录一下。 电脑安装git之后,在项目父文件夹处,右键选择“Git Bash Here”打开git小黑窗。 在gti后台创建新项目目录之后,如果是空的项目,…

洛谷P1909-买铅笔

洛谷P1909-买铅笔 大家来看一道简单的题&#xff0c;第一次写的时候我过了一半&#xff0c;看了半天自己的代码&#xff0c;还感觉没问题&#xff0c;还是学艺不精啊 先看题目 #include <iostream> using namespace std; int n;//要买的铅笔数 int n1,m1; int n2,m2; i…

(数字图像处理MATLAB+Python)第八章图像复原-第一节:图像复原概述

文章目录 一&#xff1a;图像复原概述二&#xff1a;图像退化模型&#xff08;1&#xff09;连续退化模型&#xff08;2&#xff09;离散退化模型 三&#xff1a;图像退化函数的估计&#xff08;1&#xff09;基于模型的估计法&#xff08;2&#xff09;运动模糊退化估计 一&am…

(双指针)leetcode11. 盛最多水的容器

文章目录 一、题目1、题目描述2、基础框架3、原题链接 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、本题小知识 一、题目 1、题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中…

win10系统ssh连接阿里云linux服务器并传输文件教程

前言 因为业务需要&#xff0c;最近搞了一台linux的阿里云服务器&#xff0c;现在要连接阿里云服务器。 之前没有玩过这种云服务器&#xff0c;两眼一抹黑&#xff0c;在网上搜索资料也比较少&#xff0c;所以写篇博客记录一下连接的步骤&#xff0c;以防止忘记。 SSH命令行…

如何使用Nodejs搭建HTTP服务,实现公网远程访问「内网穿透」

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 转载自内网穿透工具的文章&#xff1a;使用Nodejs搭建HTTP服务&#xff0c;并实现公网远程访问「内网穿透」 前言 Node.js…

Linux 之 yum使用(yum 命令使用讲解)

一、yum介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖的软件包&#x…

优思学院|何时应该使用8D方法?

8D&#xff08;Eight Disciplines&#xff09;过程是一种用于问题解决和改进的方法&#xff0c;其包含8个步骤。 D0是准备8D过程的阶段&#xff0c;其作用在于帮助我们判断是否需要使用8D来解决问题。如果问题的根本原因明显&#xff0c;可以通过直接采取措施来解决异常&#…

基于turtlebot3实现SLAM建图及自主导航仿真

一、turtlebot3依赖安装 1、安装turtlebot3 sudo apt-get install ros-noetic-turtlebot3-* //安装gmapping建图算法依赖 apt-get install ros-noetic-gmapping //安装dwa局部路径规划算法 apt-get install ros-noetic-dwa-local-planner 2、安装键盘依赖 sudo apt-get insta…

别再手动一个个添加了。使用While循环控制器轻松遍历获取文件参数

目录 测试环境 应用 实现单线程在单次迭代内遍历获取文件参数 软件测试学习心得分享 一、最后这里详细的给大家说下&#xff0c;对于0基础的朋友&#xff0c;应该怎么去学习软件测试。 二、自学软件测试需要多久&#xff1f;&#xff08;从真正的零基础到找到软件测试的工…

设计原则之【接口隔离原则】,我只做我能做的事

文章目录 一、什么是接口隔离原则二、实例三、总结接口隔离原则与单一职责原则的区别 一、什么是接口隔离原则 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09;是指用多个专门的接口&#xff0c;而不使用单一的总接口&#xff0c;客户端不应该依赖…