通过systemctl管理服务
文章目录
- 通过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这个服务)
-
重点在于第二、第三行
-
Loaded:这行说明、开机的时候这个unit会不会启动,enabled为开机启动,disabled开机不会启动
-
Active:现在这个unit的状态是正在执行(running)或没有执行(dead)
-
后面几行则是说明这个unit程序的PID状态以及最后一行显示这个服务的日志文件信息
-
日志文件信息格式为:【时间】 【信息发送主机】【哪一个服务的信息】【实际信息内容】
所以上面的显示信息是:这个atd默认开机就启动,而且现在正在运行的意思。
案例二:正常关闭这个atd服务
目前这个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)现在状况是关闭的
- 查看状态,确认是否为关闭/未启动
[root@localhost ~]# systemctl status chronyd.service
● chronyd.service - NTP client/serverLoaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)Active: active (running) since 四 2023-05-11 08:46:23 CST; 8h agoDocs: man:chronyd(8)man:chrony.conf(5)Main PID: 804 (chronyd)CGroup: /system.slice/chronyd.service└─804 /usr/sbin/chronyd5月 11 08:46:23 localhost.localdomain systemd[1]: Starting NTP client/server...
5月 11 08:46:23 localhost.localdomain chronyd[804]: chronyd version 3.4 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SC...EBUG)
5月 11 08:46:23 localhost.localdomain chronyd[804]: Frequency -33.147 +/- 0.259 ppm read from /var/lib/chrony/drift
5月 11 08:46:23 localhost.localdomain systemd[1]: Started NTP client/server.
5月 11 08:46:33 localhost.localdomain chronyd[804]: Selected source 162.159.200.1
5月 11 08:46:33 localhost.localdomain chronyd[804]: System clock wrong by -3.831645 seconds, adjustment started
5月 11 08:46:29 localhost.localdomain chronyd[804]: System clock was stepped by -3.831645 seconds
5月 11 08:46:33 localhost.localdomain chronyd[804]: Source 193.182.111.14 replaced with 193.182.111.142
5月 11 09:08:10 localhost.localdomain chronyd[804]: Selected source 84.16.67.12
Hint: Some lines were ellipsized, use -l to show in full.
- 由上面知道目前是启动的,因此立刻将他关闭,同时开机不会启动才行
[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/serverLoaded: 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有哪些
使用【systemctl list-unit-files】会将系统上所有的服务通通显示出来,而不像list-units仅以unit分类作大致的说明。至于STATE状态就是开机是否会加载的那个状态项目。主要有enabled、disabled、mask、static等。
假设我不想要知道这么多的unit项目,我只想知道service这种类别的daemon而已,而且不论是否已经成功,通通要显示出来。
只有*.service的项目才会出现
通过systemctl管理不同的操作环境(target unit)
上个小节我们知道系统上所有的systemd的unit查看的方式,那么可否列出跟操作界面有关的target项目呢?
[root@localhost ~]# systemctl list-units --type=target --allUNIT LOAD ACTIVE SUB DESCRIPTIONbasic.target loaded active active Basic Systembluetooth.target loaded active active Bluetoothcryptsetup.target loaded active active Local Encrypted Volumesemergency.target loaded inactive dead Emergency Modefinal.target loaded inactive dead Final Stepgetty-pre.target loaded inactive dead Login Prompts (Pre)getty.target loaded active active Login Promptsgraphical.target loaded inactive dead Graphical Interfaceinitrd-fs.target loaded inactive dead Initrd File Systemsinitrd-root-fs.target loaded inactive dead Initrd Root File Systeminitrd-switch-root.target loaded inactive dead Switch Rootinitrd.target loaded inactive dead Initrd Default Targetlocal-fs-pre.target loaded active active Local File Systems (Pre)local-fs.target loaded active active Local File Systemsmulti-user.target loaded active active Multi-User Systemnetwork-online.target loaded active active Network is Onlinenetwork-pre.target loaded active active Network (Pre)network.target loaded active active Networknss-user-lookup.target loaded inactive dead User and Group Name Lookupspaths.target loaded active active Pathsremote-fs-pre.target loaded inactive dead Remote File Systems (Pre)remote-fs.target loaded active active Remote File Systemsrescue.target loaded inactive dead Rescue Modeshutdown.target loaded inactive dead Shutdownslices.target loaded active active Slicessockets.target loaded active active Socketssound.target loaded active active Sound Cardswap.target loaded active active Swapsysinit.target loaded active active System Initialization
● syslog.target not-found inactive dead syslog.targettime-sync.target loaded inactive dead System Time Synchronizedtimers.target loaded active active Timersumount.target loaded inactive dead Unmount All FilesystemsLOAD = 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.targetmulti-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:取得目前的targetset-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 强制进入紧急恢复模式
我们来一一解释一下上面的操作
systemctl poweroff
:该命令用于关闭系统,类似于传统的shutdown -h now命令。systemctl reboot
:该命令用于重新启动系统,类似于传统的shutdown -r now命令。systemctl suspend
:该命令用于将系统挂起(睡眠模式),可以快速恢复系统状态,但是会消耗一定的电量。systemctl hibernate
:该命令用于将系统休眠(休眠模式),可以保存当前系统状态到硬盘中,以便下次唤醒时恢复。systemctl rescue
:该命令用于强制进入恢复模式,该模式下只会启动最小限度的系统服务,可以用于修复系统问题,如丢失了root密码等。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运行过程相关的目录简介
-
/usr/lib/systemd/system/
:使用CentOS官方提供的软件安装后,默认的启动脚本配置文件都放在这里,这里的数据尽量不要修改,要修改时,请到/etc/systemd/system下面修改较好。 -
/run/systemd/system/
:系统执行过程中所产生的服务脚本,这些脚本的优先级要比/usr/lib/systemd/system 高 -
/etc/systemd/system/
:管理员依据主机系统的需求所建立的执行脚本,其实这里目录有点像以前的/etc/rc.d/rc5.d/Sxx 之类的功能,执行优先级又比/run/systemd/system/ 高 -
/etc/sysconfig/*
:该目录存放系统服务的配置文件。这些配置文件包含了服务启动时的参数和环境变量等信息。例如,/etc/sysconfig/iptables
文件包含了iptables防火墙的配置信息。如果服务单元文件中指定了某个配置文件路径,则该路径的配置文件会覆盖该目录中的同名配置文件。 -
/var/lib/
:该目录存放系统和服务的运行时数据,如数据库、缓存、日志等。例如,/var/lib/mysql
目录存放了MySQL数据库的数据文件。在服务启动时,服务进程会使用该目录中存储的数据。 -
/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.service12 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
这个文件的内容是以下面的格式来显示的
< 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然后再打开。如果你系统里面有一堆网络端口在监听,而你压根不知道是干什么用的,就建议你停止该服务。
相关文章:

通过systemctl管理服务
文章目录 通过systemctl管理服务通过systemctl管理单一服务(service unit)使用案例服务启动/关闭/查看的练习关于systemctl命令启动/停止服务后面的后缀名是否加? 通过systemctl查看系统上所有的服务使用案例 通过systemctl管理不同的操作环境(target unit)使用案例…...

面经|小红书经营分析师
感觉面试官还挺严肃的,并且猎头说因为工作经验不够是外包岗位。 但是没想到最后败在了SQL上,很久没刷题了 平时工作中还是需要想下给公司整体带来的收益结果是什么,实际工作中不一定会用到,但是要有这个思路,面试的时候…...

abpvnext后台工作者使用quartz扩展的一些思路和使用细节记录--(未完待续)
需求背景描述: 我有一个温湿度数据采集的物联网系统,每个租户都需要定时执行若干种任务, 不同的租户, 他定时执行的间隔不一样 ,比如 A租户,数据保存间隔60秒,数据是否超限的轮询间隔是是600…...

提升应届生职场竞争力:有效策略和关键推动因素
应届生进入职场是一个关键的阶段,他们需要通过有效的方法和策略来提高自己的竞争力,以适应职场的挑战并取得成功。以下是一些可以帮助应届生提升竞争力的方法和策略,以及对其职场发展起到关键推动和支撑作用的方面。 学习和继续教育ÿ…...

PBDB Data Service:List of fossil collections(化石采集记录列表)
List of fossil collections(化石采集记录列表) 描述用法参数以下参数可用于按各种条件查询集合。以下参数可用于筛选所选内容以下参数还可用于根据分类筛选结果列表以下参数可用于生成数据存档您可以使用以下参数选择要检索的额外信息,以及要…...

centos安装SNB服务
Samba 是一种开源软件,它提供了一种让 Linux 和 Unix 系统与 Windows 操作系统相互通信的标准协议。Samba 允许 Linux 和 Unix 系统作为文件服务器和打印服务器,提供 Windows 客户端所需的服务。 具体来说,Samba 通过实现 SMB/CIFS 协议来实现…...

课程《JavaWeb基础框架程序设计》考试题下篇——数据库与表单操作用题(人事管理平台的添加员工档案信息的操作题)
文章目录 📋前言🎯第三题(40分)🎯报错以及解决方法📝最后 📋前言 这篇文章是大学课程《JavaWeb基础框架程序设计》考试题目的内容,包括了原题和答案。题目只包括了三道编程题&#…...

Linux-初学者系列——篇幅4_系统运行相关命令
系统运行相关命令-目录 一、关机重启注销命令1、重启或者关机命令-shutdown语法格式:常用参数:01 指定多久关闭/重启系统02 指定时间关闭/重启系统03 实现立即关闭/重启系统04 取消关闭/重启系统计划 2、重启或者关机命令-halt/poweroff/reboot/systemct…...

无缝集成:利用Requests库轻松实现数据抓取与处理
目录 引言安装基本用法发送HTTP请求处理HTTP响应高级功能总结 引言 Requests是Python中一个常用的第三方库,用于向Web服务器发起HTTP请求并获取响应。该库的使用简单,功能强大,被广泛应用于网络爬虫、API访问、Web应用开发等领域。 本文将介…...

几种内部排序算法的cpp代码实现与分析
零、测试函数 typedef void (*SortFunc) (int*&, int);inline void swap(int &a, int &b) {int tmp a;a b;b tmp; }inline void printArr(int* a, int n) {for (int k 0; k < n; k) {std::cout << a[k] << ;}std::cout << std::endl; }…...

第3天学习Docker-Docker部署常见应用(MySQL、Tomcat、Nginx、Redis、Centos)
前提须知: (1)搜索镜像命令 格式:docker search 镜像名 (2)设置Docker镜像加速器 详见文章:Docker设置ustc的镜像源(镜像加速器) 1、部署MySQL 拉取镜像(这…...

给大家介绍四款最受欢迎的抓包神器
身为互联网人,无论在平时开发还是在测试过程中,我们都不可避免的会涉及到网络安全性,如何监测网络请求,从而最大程度的保证数据的安全,需要我们了解并掌握抓包的技巧。那么何谓抓包呢?抓包就是将网络传输发…...

解决Reids过期方案 游标遍历清除Redis过期的key
游标遍历清除Redis过期的key 为什么要清除Redis过期的Key Redis的过期清理是一种懒惰的清理方案,他不会过期后立刻清除,而是在Key被访问的时候进行删除,Redis这么做的目的就是为了提高性能降低资源开销。 具体来说,一个K…...

K8s基础10——数据卷、PV和PVC、StorageClass动态补给、StatefulSet控制器
文章目录 一、数据卷类型1.1 临时数据卷(节点挂载)1.2 节点数据卷(节点挂载)1.3 网络数据卷NFS1.3.1 效果测试 1.4 持久数据卷(PVC/PV)1.4.1 效果测试1.4.2 测试结论 二、PV、PVC生命周期2.1 各阶段工作原理…...

oracle系统查询~3
查看实例的基本信息 SQL> col host_name for a25 col instance_name for a15 col version for a15 col status for a10 set linesize 600 col host_name for a20 select instance_number,instance_name,host_name,version,startup_time,status,archiver f…...

Mybatis源码(九)— chche
Mybatis中共有三级缓存,其中一级缓存默认开启,作用范围是在sqlSession对象(同一个会话),二级缓存需要手动配置开启,作用范围是在sqlSessionFactory对象下的同一个namespace范围(所以二级缓存是可…...

回溯法--N皇后问题
N皇后问题 一、问题描述二、示例2.1 四皇后的2个可行解2.2 过程图示 三、问题分析3.1涉及到的概念递归回溯 3.2 分析 四、 代码实现4.1 实现思路宏观:微观: 4.2 递归函数NS图4.3 代码 一、问题描述 1、按照国际象棋的规则,皇后可以攻击与之处…...

ajax请求
ajax的优点 可以无需刷新页面而与服务器进行通信允许你根据用户事件来更新部分页面内容 ajax的缺点 没有浏览历史,不能回退存在跨域问题SEO不友好 get请求 <button>点击发送请求</button><div id"result"></div><script>…...

K8S系列之污点和容忍度详细分析
架构图 本篇文档主要介绍污点和容忍度的关系。 污点和容忍度 污点顾名思义就是脏的东西,给节点添加污点来限制pod调度到该节点上,如果pod可以容忍这种污点就可以被调度到有污点的节点上,如果不能容忍就不能被调度到该节点上。 污点作用于节…...

【算法】Minimum Moves to Move a Box to Their Target Location 推箱子
文章目录 Minimum Moves to Move a Box to Their Target Location 推箱子问题描述:分析代码 Tag Minimum Moves to Move a Box to Their Target Location 推箱子 问题描述: 问题 「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓…...

决策引擎平台建设方案
文档修订历史 时间版本主要内容2023.05.12v1.0.0初始化 1. 概述 1.1 需求 1.1.1 需求背景 当同一个业务场景中,有非常多的业务分支后,需要有非常多的 if 判断,来承载这些简单的业务逻辑,但随着业务的发展,业务逐渐…...

SpringBoot Starter 作用及原理
本文会以 mybatis 为例,通过对比 mybatis-spring 和 mybatis-spring-boot-starter 代码示例,了解 Starter 的作用。并对 mybatis-spring-boot-starter 进行简单剖析,了解 Starter 原理。 下面还有投票,一起参与进来吧👍…...

【rust】| 05——语法基础 | 流程控制
系列文章目录 【rust】| 00——开发环境搭建 【rust】| 01——编译并运行第一个rust程序 【rust】| 02——语法基础 | 变量(不可变?)和常量 【rust】| 03——语法基础 | 数据类型 【rust】| 04——语法基础 | 函数 【rust】| 05——语法基础 | 流程控制 文章目录 流程控制1. 条…...

解决Makefile: recipe for target ‘xxx‘ failed
author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 问题 在android编译Kernel调用makefile引起的recipe for target 很多文章写的是由于编译文件路径引起或者是makefile代码中的空格引起的 分析 但是如果makefile文件不是手动配置的而且源代码提供的,…...

小黑子—多媒体技术与运用基础知识三:数字图形图像处理技术
多媒体技术与运用3.0 多媒体系列第三章1. 颜色科学1.1 颜色的性质1.1.1 颜色的物理性质1.1.2颜色三特性1.1.3三原色与三补色 1.2 颜色空间1.2.1 与设备无关的颜色空间1.2.1 与设备相关的颜色空间 1.3 常见的多媒体系统颜色空间1.3.1 RGB颜色空间1.3.2 CMYK颜色模型1.3.3 HSB颜色…...

Nginx实现ChatGPT API代理
文章目录 一、前言说明二、前置准备三、nginx配置三、代理域名用途 一、前言说明 本篇文章可以直接用于公司生产级的使用,所需要的资源直接改为公司级的即可平替使用文章均已通过实践应用,保证文章准确性,但因不同环境的不同可能效果不一致可…...

FileNotFoundError: [Errno 2] No such file or directory: ‘dot‘
FileNotFoundError: [Errno 2] No such file or directory: ‘dot’ 在绘制树形结构图的时候出现上述报错:已安装环境为ubuntu,python3.9 解决方案: 1、在终端输入sudo apt-get install graphviz,按回车键,输入密码&a…...

【分布族谱】正态分布和二项分布的关系
文章目录 正态分布二项分布验证 正态分布 正态分布,最早由棣莫弗在二项分布的渐近公式中得到,而真正奠定其地位的,应是高斯对测量误差的研究,故而又称Gauss分布。测量是人类定量认识自然界的基础,测量误差的普遍性&am…...

7.设计模式之责任链模式
前言 责任链,即将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递, 链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。为了避免请求发送者与多个请求处理者耦合在…...

JAVA8的新特性——Stream
JAVA8的新特性——Stream 在这个深夜写下这篇笔记,窗外很安静,耳机里是《季节更替》,我感触还不是很多,当我选择封面图片的时候才发现我们已经渐渐远去,我们都已经奔赴生活,都在拼命想着去换一个活法&#…...