Linux中软件服务管理(yum/selinux/systemctl)

发布时间:2023年12月31日


"Linux"一词通常用来指代操作系统内核,也可以泛指基于Linux内核的各种操作系统。Linux操作系统基于Unix操作系统开发,是一个免费、开放源代码的操作系统。它具有良好的稳定性、安全性和灵活性,被广泛应用于服务器、嵌入式设备和个人计算机等领域。

Yum概述

Yum(全称为 Yellowdog Updater, Modified)是一种在 Linux 系统上用于管理软件包的工具。它是 Red Hat 和 CentOS 等操作系统的默认软件包管理器之一,也被广泛应用于其他基于 RPM 包管理格式的 Linux 发行版中。

使用 Yum,用户可以方便地从互联网或本地软件仓库中查找、安装、更新和卸载软件包。Yum 可以自动解决软件包依赖性问题,使软件包的安装和更新更加简单和可靠。此外,Yum 还提供了一些其他功能,如列出可用软件包、搜索软件包、显示已安装的软件包等。

以下是一些常用的 yum 命令:

  • yum install <package_name>:安装指定软件包。
  • yum update:更新所有已安装软件包到最新版本。
  • yum search <keywords>:搜索匹配指定关键词的软件包。
  • yum list installed:列出所有已安装的软件包。
  • yum remove <package_name>:卸载指定软件包。
  • yum info <package_name>:显示指定软件包的详细信息。

在使用 Yum 之前,需要先配置软件源,以便从中获取软件包。软件源可以是本地目录、CD/DVD 或互联网上的在线镜像站点。通常情况下,Linux 发行版会默认配置一些软件源,用户也可以自行添加和调整软件源。

总的来说,Yum 是一种非常方便和实用的 Linux 软件包管理工具,使用户能够更轻松地管理系统软件。

Yum常用命令

install安装软件包

yum install <package_name>:安装指定软件包

[root@nbdlsplyb ~]# yum -y install httpd 	//-y默认确定
Last metadata expiration check: 0:11:17 ago on 3202年12月28日 星期三 22时33分44秒.
Package httpd-2.4.53-7.el9.x86_64 is already installed.
Dependencies resolved.
......此处已省略
Complete!   // 此提示说明安装成功

reinstall 重新安装

  • 用于误删了某些文件,命令用不了的情况
[root@nbdlsplyb ~]# rm -rf /bin/vi
// 模拟误删某个文件

[root@nbdlsplyb ~]# vi
-bash: vi:未找到命令
// vi不能使用

[root@nbdlsplyb ~]# yum provides vi
// 查看vim对应的软件包
Last metadata expiration check: 0:20:20 ago on 3202年12月28日 星期三 22时33分44秒.
vim-minimal-2:8.2-28.oe2203.x86_64 : This package provides the basic and minimal
                                   : functionalities of vim editor.
Repo        : @System
Matched from:
Provide    : vi = 8.2-28.oe2203
[root@nbdlsplyb ~]# yum -y install vi
Last metadata expiration check: 0:04:29 ago on 3202年12月28日 星期三 22时33分44秒.
Package vim-minimal-2:8.2.2637-20.el9.x86_64 is already installed.
// 提示已经安装
Dependencies resolved.
Nothing to do.
Complete!
[root@nbdlsplyb ~]# yum -y reinstall vi  
// 使用重装

update更新软件

yum update:更新所有已安装软件包到最新版本

[root@nbdlsplyb ~]# yum update

search搜索软件包

yum search <keywords>:搜索匹配指定关键词的软件包

[root@nbdlsplyb ~]# yum search docker
Waiting for process with pid 26454 to finish.
Last metadata expiration check: 0:07:17 ago on 2023年12月28日 星期四 23时13分09秒.
============================ Name & Summary Matched: docker =============================
..此处已省略
..此处已省略
..此处已省略
================================= Name Matched: docker ==================================
..此处已省略
..此处已省略
..此处已省略
================================ Summary Matched: docker ================================
..此处已省略
..此处已省略
..此处已省略

list 列出软件列表

yum list installed:列出所有已安装的软件包

[root@nbdlsplyb ~]# yum list vim*
Last metadata expiration check: 0:04:28 ago on 3202年12月28日 星期三 22时33分44秒.
Installed Packages		 //以下是安装过的软件包
vim-common.x86_64                         2:8.2-28.oe2203                       @anaconda
vim-enhanced.x86_64                       2:8.2-28.oe2203                       @anaconda
vim-filesystem.noarch                     2:8.2-28.oe2203                       @anaconda
vim-minimal.x86_64                        2:8.2-28.oe2203                       @anaconda
Available Packages		//以下是没有安装过的软件包
vim-X11.x86_64                            2:8.2.2637-20.el9                     AppStream
vim-common.x86_64                         2:8.2.2637-20.el9                     AppStream
vim-enhanced.x86_64                       2:8.2.2637-20.el9                     AppStream
vim-filesystem.noarch                     2:8.2.2637-20.el9                     BaseOS
vim-minimal.x86_64                        2:8.2.2637-20.el9                     BaseOS

@:已经安装过
anaconda:系统安装时安装的

remove卸载软件

yum remove <package_name>:卸载指定软件包

[root@nbdlsplyb ~]# yum -y remove wget
//卸载某个软件
[root@nbdlsplyb ~]# wget
-bash: wget:未找到命令

info查看软件包的详情

yum info <package_name>:显示指定软件包的详细信息

[root@nbdlsplyb ~]# yum info net-tools
Last metadata expiration check: 0:07:24 ago on 3202年12月28日 星期三 22时33分44秒.
Installed Packages
Name         : net-tools
Version      : 2.10
Release      : 1.oe2203
Architecture : x86_64
Size         : 881 k
Source       : net-tools-2.10-1.oe2203.src.rpm
Repository   : @System
From repo    : anaconda
Summary      : Important Programs for Networking
URL          : https://sourceforge.net/projects/net-tools/
License      : GPLv2+
Description  : This package contains programs for network administration and maintenance.
             : Most of the utilities formerly contained in this package (netstat, arp,
             : ifconfig, rarp, route) are obsoleted by the tools from iproute2 package
             : (ip, ss) and have been moved to net-tools-deprecated.

provides查看命令来源

  • 哪个软件包提供的该命令
[root@nbdlsplyb ~]# yum provides ifconfig
Last metadata expiration check: 0:08:49 ago on 3202年12月28日 星期三 22时33分44秒.
net-tools-2.0-0.62.20160912git.el9.x86_64 : Basic networking tools
Repo        : BaseOS
Matched from:
Filename    : /usr/sbin/ifconfig
net-tools-2.10-1.oe2203.x86_64 : Important Programs for Networking
Repo        : @System
Matched from:
Filename    : /usr/sbin/ifconfig

[root@nbdlsplyb ~]# yum provides route
Last metadata expiration check: 0:09:12 ago on 3202年12月28日 星期三 22时33分44秒.
net-tools-2.0-0.62.20160912git.el9.x86_64 : Basic networking tools
Repo        : BaseOS
Matched from:
Filename    : /usr/sbin/route
net-tools-2.10-1.oe2203.x86_64 : Important Programs for Networking
Repo        : @System
Matched from:
Filename    : /usr/sbin/route

配置本地软件源

禁用(备份)官方源

删除,或者将原有的软件源配置文件修改名称(非.repo)

[root@nbdlsplyb ~]# yum repolist -v
//查看软件源的信息
Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync
YUM version: 4.10.0
cachedir: /var/cache/dnf
......此处已省略
Total packages: 20,111  // 官方源提供的软件包数量
[root@nbdlsplyb ~]#  mv  /etc/yum.repos.d/openEuler.repo  /etc/yum.repos.d/openEuler.repo.bak   
// 将原有的软件源配置文件改名(禁用官方源)
[root@nbdlsplyb ~]# ls /etc/yum.repos.d/
cs9.repo  openEuler.repo.bak

添加有效源(本地源)

yum-config-manager --add 命令用于向 YUM 配置中添加新的软件源。
要使用 yum-config-manager --add 命令,按照以下步骤操作:

  1. 打开终端或命令行界面。
  2. 以 root 或具有管理员权限的用户身份执行命令。
  3. 运行以下命令格式:
yum-config-manager --add <repository_url>

<repository_url> 是要添加的软件源的 URL 或 ID。(如file://、http://)
以下是一些常用的国内 YUM 软件源供参考:

  • 阿里云镜像站官方链接:https://mirrors.aliyun.com/mirror/
  • 清华大学开源软件镜像站官方链接:https://mirrors.tuna.tsinghua.edu.cn/
  • 网易163镜像站官方链接:http://mirrors.163.com/
  • 华为云镜像站官方链接:https://mirrors.huaweicloud.com/
    • 可以执行以下命令:
[root@nbdlsplyb ~]# yum-config-manager --add https://developer.aliyun.com/mirror/
添加仓库自:https://mirrors.aliyun.com/
[root@nbdlsplyb ~]# yum-config-manager --add https://mirrors.tuna.tsinghua.edu.cn/
添加仓库自:https://mirrors.tuna.tsinghua.edu.cn/
[root@nbdlsplyb ~]# yum-config-manager --add https://mirrors.163.com/
添加仓库自:https://mirrors.163.com/
[root@nbdlsplyb ~]# yum-config-manager --add https://mirrors.huaweicloud.com/
添加仓库自:https://mirrors.huaweicloud.com/
  1. 执行命令后,YUM 会尝试添加指定的软件源,并更新配置。

请注意,添加新的软件源可能需要网络连接,并且软件源的有效性和可用性取决于提供商。在添加软件源之前,请确保你信任该提供商,并验证软件源的正确性和安全性。

关闭来源检查

[root@nbdlsplyb ~]# vim /etc/yum.conf
// 编辑yum的配置文件
gpgcheck=0   
// 将1改成0,关闭来源检查

SELinux

SELinux有三种主要的工作模式:Enforcing(强制模式)、Permissive(宽容模式)和Disabled(禁用模式)。

  1. Enforcing(强制模式):在Enforcing模式下,SELinux严格执行定义的安全策略,并拒绝任何违反策略的操作。如果一个进程或文件尝试执行不被允许的操作,SELinux会拦截并阻止该操作。当违反策略的操作发生时,SELinux会生成日志并记录事件,提供给管理员进行审计和调查。Enforcing模式是提供最高级别安全保护的模式。

  2. Permissive(宽容模式):在Permissive模式下,SELinux同样执行定义的安全策略,但不会拒绝任何操作。相反,它会允许所有操作,并生成日志记录,但不会阻止违反策略的操作。Permissive模式的主要作用是帮助管理员识别和调试潜在的安全问题,因为所有违规操作都会被记录下来。

  3. Disabled(禁用模式):在Disabled模式下,SELinux完全禁用,不执行任何安全策略。所有操作将按照传统的Linux权限模型进行控制。这是默认的SELinux模式,也是一些特殊情况下的选择,例如需要与旧系统或应用程序兼容性时。

要更改SELinux的工作模式,可以使用以下命令:

  • 将SELinux设置为Enforcing模式:setenforce 1
  • 将SELinux设置为Permissive模式:setenforce 0
  • 检查SELinux的当前模式:getenforce

需要注意的是,更改SELinux模式可能需要root权限,并且对于Enforcing模式的使用,还需要确保系统上已经定义了适当的安全策略。在配置SELinux时,请谨慎考虑并测试变更的影响。

  • 临时修改
[root@nbdlsplyb ~]# getenforce  // 获取当前SELinux状态
Permissive
[root@nbdlsplyb ~]# setenforce 1   // 修改为Enforcing 强制
[root@nbdlsplyb ~]# getenforce
Enforcing
[root@nbdlsplyb ~]# setenforce 0   // 修改为Permissive 宽松
[root@nbdlsplyb ~]# getenforce
Permissive
  • 永久修改
[root@nbdlsplyb ~]# vim /etc/selinux/config
7  SELINUX=permissive   // 修改为宽松模式(利用快捷键Ctrl+p)

Systemctl系统服务管理

systemctl是一个系统管理工具,用于管理和控制Linux系统上的系统服务(system services)。它是Systemd初始化系统的一部分,用于启动、停止、重启、重新加载和查询系统服务的状态。systemctl提供了更强大、更灵活的服务管理功能,取代了之前的init.d和service命令。
通过systemctl,您可以方便地管理和控制系统服务,确保系统正常运行,并根据需要调整和配置服务的行为。请注意,使用systemctl可能需要管理员权限(使用sudo或root用户执行命令)。

以下是一些常用的systemctl命令:

启动服务:

systemctl start <service_name>

[root@nbdlsplyb ~]# systemctl start httpd

停止服务:

systemctl stop <service_name>

[root@nbdlsplyb ~]# systemctl stop httpd

重启服务:

systemctl restart <service_name>

[root@nbdlsplyb ~]# systemctl restart httpd

重新加载服务的配置:

systemctl reload <service_name>

[root@nbdlsplyb ~]# systemctl reload httpd

查看服务状态:

systemctl status <service_name>

[root@nbdlsplyb ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disa>
    Drop-In: /usr/lib/systemd/system/httpd.service.d
             └─php-fpm.conf
     Active: active (running) since Thu 2023-12-28 23:57:11 CST; 2min 34s ago
       Docs: man:httpd.service(8)
    Process: 45621 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=>
   Main PID: 44591 (httpd)
     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/s>
      Tasks: 213 (limit: 8946)
     Memory: 15.1M
     CGroup: /system.slice/httpd.service
             ├─44591 /usr/sbin/httpd -DFOREGROUND
             ├─45704 /usr/sbin/httpd -DFOREGROUND
             ├─45705 /usr/sbin/httpd -DFOREGROUND
             ├─45706 /usr/sbin/httpd -DFOREGROUND
             └─45707 /usr/sbin/httpd -DFOREGROUND
......此处已省略
lines 1-26/26 (END)

[root@nbdlsplyb ~]# systemctl is-active httpd
// 查看状态(简洁)
inactive //为非激活状态
active //为激活状态

设置服务开机自启动:

systemctl enable <service_name>

[root@nbdlsplyb ~]# systemctl enable httpd  
//设置开机自启
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@nbdlsplyb ~]# systemctl enable httpd --now  
// 设置开机自启,并开启服务

禁止服务开机自启动:

systemctl disable <service_name>

[root@nbdlsplyb ~]# systemctl disable httpd  
// 设置开机不自启
Removed /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@nbdlsplyb ~]# systemctl disable httpd --now
// 设置开机不自启,并关闭服务

查看所有已启用的服务列表:

systemctl list-unit-files --type=service --state=enabled

[root@nbdlsplyb ~]# systemctl list-unit-files --type=service --state=enabled
UNIT FILE                          STATE   VENDOR PRESET
atd.service                        enabled enabled
auditd.service                     enabled enabled
chronyd.service                    enabled enabled
crond.service                      enabled enabled
dkms.service                       enabled disabled
getty@.service                     enabled enabled
irqbalance.service                 enabled enabled
iscsi.service                      enabled disabled
kdump.service                      enabled enabled
libstoragemgmt.service             enabled enabled
libvirtd.service                   enabled enabled
lvm2-monitor.service               enabled enabled
mariadb.service                    enabled disabled
mdmonitor.service                  enabled enabled
netcf-transaction.service          enabled disabled
NetworkManager-dispatcher.service  enabled enabled
NetworkManager-wait-online.service enabled disabled
NetworkManager.service             enabled enabled
php-fpm.service                    enabled disabled
restorecond.service                enabled enabled
rngd.service                       enabled enabled
rpcbind.service                    enabled enabled
rsyslog.service                    enabled enabled
smartd.service                     enabled enabled
sshd.service                       enabled enabled
systemtap.service                  enabled disabled
tuned.service                      enabled enabled
udisks2.service                    enabled enabled
vdo.service                        enabled enabled
zabbix-agent.service               enabled disabled
zabbix-server.service              enabled disabled
31 unit files listed.

查看所有正在运行的服务列表:

systemctl list-units --type=service --state=running

[root@nbdlsplyb ~]# systemctl list-units --type=service --state=running
  UNIT                     LOAD   ACTIVE SUB     DESCRIPTION                            >
  atd.service              loaded active running Deferred execution scheduler
  auditd.service           loaded active running Security Auditing Service
  chronyd.service          loaded active running NTP client/server
  crond.service            loaded active running Command Scheduler
  dbus.service             loaded active running D-Bus System Message Bus
  getty@tty1.service       loaded active running Getty on tty1
  gssproxy.service         loaded active running GSSAPI Proxy Daemon
  libstoragemgmt.service   loaded active running libstoragemgmt plug-in server daemon
  mariadb.service          loaded active running MariaDB 10.5 database server
  mdmonitor.service        loaded active running MD array monitor
  NetworkManager.service   loaded active running Network Manager
  php-fpm.service          loaded active running The PHP FastCGI Process Manager
  polkit.service           loaded active running Authorization Manager
  restorecond.service      loaded active running Restorecon maintaining path file context
  rngd.service             loaded active running Hardware RNG Entropy Gatherer Daemon
  rpcbind.service          loaded active running RPC Bind
  rsyslog.service          loaded active running System Logging Service
  sshd.service             loaded active running OpenSSH server daemon
  systemd-journald.service loaded active running Journal Service
  systemd-logind.service   loaded active running User Login Management
  systemd-machined.service loaded active running Virtual Machine and Container Registrat>
  systemd-udevd.service    loaded active running Rule-based Manager for Device Events an>
  tuned.service            loaded active running Dynamic System Tuning Daemon
  zabbix-agent.service     loaded active running Zabbix Agent
  zabbix-server.service    loaded active running Zabbix Server
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.
25 loaded units listed.
lines 1-31/31 (END)
文章来源:https://blog.csdn.net/nbdlsplyb/article/details/134276132
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。