linux自有服务概述
所谓自有服务,简单来说,就是Linux系统开机自动运行的服务(程序)。
systemctl管理服务命令
在 CentOS 7 之前,CentOS 使用了 service 和 chkconfig 命令来管理服务。这些命令是基于 SysVinit 系统初始化系统的,它使用传统的运行级别(runlevels)来管理服务的启动和停止。
从Centos7开始,统一使用systemctl来管理服务, systemctl同时具有service和chkconfig命令的功能。
CentOS 7 之前
- service 命令
service 命令用于启动、停止或重新启动系统服务。
使用示例:
sudo service httpd start #启动服务
sudo service httpd stop #停止服务
sudo service httpd restart #重启服务
sudo service httpd status #查看服务状态
- chkconfig 命令
chkconfig 命令用于管理系统服务的自动启动。你可以用它来列出、添加、删除或更改系统服务在特定运行级别下的启动设置。
使用示例:
chkconfig --list #列出所有服务的启动状态
sudo chkconfig --level 345 httpd on #为服务设置在特定运行级别下自动启动,这里,345 表示运行级别 3、4 和 5,httpd 是要设置的服务。
sudo chkconfig --level 345 httpd off #禁用服务在特定运行级别下的自动启动
CentOS 7
从 CentOS 7 开始,系统迁移到了使用 systemd 作为初始化系统和服务管理器,这导致了原先的 service 和 chkconfig 命令的使用方式发生了变化。在 CentOS 7 及以后的版本中,你应该使用以下命令来管理服务:
systemctl:用于控制和管理系统服务。
systemctl enable/disable:用于设置服务的自启动。
使用示例:
sudo systemctl start httpd #启动服务
sudo systemctl stop httpd #停止服务
sudo systemctl restart httpd #重启服务
sudo systemctl status httpd #查看服务状态
sudo systemctl enable httpd #设置服务开机自启
sudo systemctl disable httpd #禁止服务开机自启
systemctl list-units --type service --all #列出所有服务,包括已运行的和没有运行的 空格可以翻页,q退出
systemctl list-units --type service #列出已运行的服务
systemctl list-units --type service | grep sshd #systemctl显示系统服务与管道命令相结合,筛选我们想要的服务信息
reload热重载技术
reload:重新加载指定服务的配置文件(并非所有服务都支持reload,通常使用restart)
如Nginx,更改了配置文件,但是不能重启Nginx服务,只是想立即让我们配置文件的更改生效,则就可以使用热重载技术了。
语法:
systemctl reload 系统服务名称
服务持久化
所谓服务持久化,就是服务在开机的时候,是否自动启动。
语法:systemctl [选项] 服务名
选项:enable:指定服务开机自动启动
disable:取消服务开机自动启动
systemctl disable crond #取消crond服务开机启动
常用自有服务
ntpd或systemd-timesyncd时间同步服务
概述
ntpd是 Network Time Protocol Daemon的缩写,它是一个用于同步计算机时钟的传统守护进程。它可以运行在网络中的任何设备上,并通过复杂的算法调整本地时钟以匹配远程服务器的时间。
systemd-timesyncd则是systemd提供的一个轻量级时间同步服务。它的设计目标是为了提供一个简单而高效的解决方案来保持系统的时钟与网络时间服务器同步。
主要区别
复杂性和功能
ntpd 提供了更高级的功能,例如支持多种时间源、复杂的漂移补偿机制以及更高的精度控制。这使得它适合于需要高精度时间同步的环境。
systemd-timesyncd更加简化,专注于基本的时间同步需求。它不支持像ntpd那样的复杂配置选项和算法优化。
资源消耗
由于其丰富的特性集,ntpd可能会占用更多的系统资源。
相比之下,systemd-timesyncd被设计成低开销的服务,更适合资源受限的嵌入式系统或不需要极高精度的应用场景。
易用性
使用ntpd需要手动编辑配置文件并理解各种参数的意义,对于新手来说可能较为困难。
systemd-timesyncd的配置非常直观,通常只需要指定一个或几个时间服务器即可完成设置。
集成度
如果已经采用了基于systemd的初始化框架,则选择systemd-timesyncd将更加自然,因为它与其他systemd组件无缝协作。
对于传统 Linux 发行版或者那些未完全迁移到systemd的环境中,继续沿用ntpd或许更为合适。
适用范围
在科研机构、数据中心以及其他对时间敏感的关键基础设施中,推荐采用具备强大功能集合的ntpd来实现精确的时间管理。
日常桌面操作系统或是小型物联网装置则可以选择相对简单的 systemd-timesyncd 进行日常操作所需的基础级别时间校准。
两者之间的显著区别体现在以下几个方面:
特性 ntpd systemd-timesyncd
调整策略 渐进式微调 即刻纠正
功能定位 支持双向通信,可设为主控端 纯粹消费型客户
对应用层潜在冲击 较低 相对较高
结论
综上所述,在决定选用哪一种工具之前应考虑具体应用场景的要求——当追求极致准确性且愿意承担额外管理和计算成本时可倾向于ntpd; 若仅需满足一般性的定时任务而不希望增加过多负担的话,systemd-timesyncd应该是个不错的选择。
ntp同步服务器原理
NTP(Network Time Protocol)是一种用于在网络上同步计算机时钟的协议。它允许网络中的计算机从时间服务器获取精确的时间信息,从而保持所有设备的时间同步。NTP同步服务器的工作原理主要包括以下几个关键步骤:
- 时间请求(Time Request)
当一个客户端(例如计算机或服务器)需要同步时间时,它会向一个或多个NTP服务器发送一个时间请求。这个请求通常是通过UDP协议发送到端口123。 - 时间响应(Time Response)
NTP服务器接收到请求后,会计算当前的时间,并将其封装在一个NTP消息中返回给客户端。这个消息包含了服务器的时间戳、客户端的请求时间戳以及其他一些控制信息。 - 时间计算
客户端接收到服务器的响应后,会使用NTP协议定义的算法来计算正确的时间。这个算法考虑了往返时间(Round Trip Time, RTT)和服务器与客户端之间的时间差,从而计算出精确的本地时间。 - 时间调整
根据从服务器接收到的信息,客户端会调整其系统时钟,使其尽可能接近服务器的时钟。这通常涉及到以下几个步骤:
计算偏移量:计算客户端的系统时间和NTP服务器时间的差异。
调整时钟:根据计算出的偏移量调整本地时钟。
补偿网络延迟:考虑到网络延迟,可能需要进一步调整以补偿往返时间。 - 持续同步
为了保持时间的准确性,客户端通常会定期(例如每15分钟或每小时)向NTP服务器发送请求,并调整其系统时钟以保持与服务器时间的同步。 - 防止时钟漂移
为了防止时钟漂移(即长时间累积的误差),一些客户端实现会使用更复杂的算法,如频率校正(Frequency Correction),来调整时钟的频率而非仅仅时间,从而保持更长时间的准确性。 - 安全性
为了提高安全性,NTP协议支持多种认证机制,如MD5、SHA等,以及NTPv4引入的加密模式(如AES),以保护时间数据在传输过程中的安全性和完整性。
配置示例:
在Linux系统中,你可以使用ntpd或chrony服务来配置和运行NTP客户端。例如,使用ntpd,你可以在/etc/ntp.conf文件中配置服务器地址:
server ntp1.example.com
server ntp2.example.com
然后,启动ntpd服务:
sudo systemctl start ntpd
ntpd时间同步操作
一、安装 ntpd 服务
# Debian/Ubuntu 系统
sudo apt update && sudo apt install ntp
# CentOS/RHEL 系统
sudo yum install ntp
安装后会自动生成默认配置文件 /etc/ntp.conf。
二、配置 NTP 服务器/客户端
编辑配置文件 /etc/ntp.conf,示例配置如下:
- 基础时间源配置
# 指定公共 NTP 服务器(示例)
server pool.ntp.org iburst
server time.windows.com iburst
说明:
iburst 选项可在初始同步时加速时间校正。
可替换为其他服务器(如 time.nist.gov, asia.pool.ntp.org)。
2. 访问控制(服务器端可选)
# 允许本地网络访问(示例)
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
说明:
nomodify 禁止客户端修改配置,notrap 禁止陷阱服务。
三、启动与管理服务
# 启动服务并设置开机自启
sudo systemctl start ntpd
sudo systemctl enable ntpd
# 查看服务状态
sudo systemctl status ntpd
# 查看日志(排查问题)
sudo journalctl -u ntpd -f
服务启动后,ntpd 会逐步调整系统时间以避免时间跳跃。
四、验证时间同步状态
1. 检查对等体状态
ntpq -pn
2. 查看时间同步摘要
ntpstat
3. 查看系统时间
timedatectl
确保 System clock synchronized: yes。
五、常见问题排查
1. 防火墙配置
确保防火墙放行 UDP 123 端口:
# firewalld(CentOS)
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload
# ufw(Ubuntu)
sudo ufw allow 123/udp
2. 强制手动同步
若需临时强制同步(需停止 ntpd):
sudo systemctl stop ntpd
sudo ntpdate pool.ntp.org
sudo systemctl start ntpd
注意:ntpdate 需与 ntpd 服务互斥使用。
3. 配置文件语法检查
sudo ntpdate -q -d # 调试模式检查配置
附:参考配置模板
# /etc/ntp.conf 示例
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp.log
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
此模板结合了对公共服务器的同步和访问权限控制。
通过上述步骤,可完成 ntpd 服务的基本配置与时间同步管理。
systemd-timesyncd同步原理
systemd-timesyncd 是 systemd 系统中用于网络时间协议(NTP)同步的守护进程。它的主要目的是自动调整系统时间,使其与互联网上的时间服务器同步,确保系统时间的准确性。以下是 systemd-timesyncd 的基本工作原理和一些关键概念:
- NTP 协议
systemd-timesyncd 使用 NTP 协议从网络上的时间服务器获取时间信息。NTP 是一种网络协议,允许计算机时钟同步到更准确的时间源,通常是原子钟或全球定位系统(GPS)。 - 时间服务器
systemd-timesyncd 可以配置为使用一个或多个预定义的时间服务器。这些服务器可以是公共的,也可以是私有的。例如,pool.ntp.org 提供了一个公共的 NTP 服务器池,你可以将其用作时间源。 - 时间同步策略
systemd-timesyncd 支持多种时间同步策略,包括:
即时同步:系统在启动时尝试与时间服务器同步。
定期同步:定期检查并更新系统时间,以保持其准确性。
手动同步:用户可以手动触发时间同步。 - 时间偏移和调整
当 systemd-timesyncd 与时间服务器通信时,它会计算本地系统时间与服务器时间的差异(时间偏移)。然后,根据这个差异调整系统时钟。这个过程称为“时间校准”。 - 配置文件
systemd-timesyncd 的配置通常在 /etc/systemd/timesyncd.conf 文件中进行。在这个文件中,你可以设置:
NTP 服务器地址。
同步间隔。
是否在启动时同步时间。
其他相关选项,如频率容忍度等。 - 工作流程
当 systemd-timesyncd 启动时,它会读取配置文件,然后尝试连接到配置的时间服务器。一旦连接成功,它就会开始与服务器通信,获取当前的时间信息,并根据这些信息调整系统时间。 - 日志和调试
systemd-timesyncd 的日志可以通过 journalctl 命令查看,这有助于诊断同步问题或确认同步状态。例如:
journalctl -u systemd-timesyncd - 安全性和可靠性
使用 systemd-timesyncd 时,重要的是要确保配置的安全性,避免使用不可信的时间源。此外,定期检查和更新服务器列表以及软件版本也是保持系统时间准确性的关键。
通过以上步骤和概念,你可以更好地理解 systemd-timesyncd 的工作原理及其在维护系统时间准确性方面的作用。
systemd-timesyncd时间同步操作
一、安装与冲突检查
安装 systemd-timesyncd
sudo apt update && sudo apt install systemd-timesyncd
注意:与 ntpd、chrony 互斥,需先卸载冲突服务(如 sudo apt remove ntp)。
二、配置 NTP 服务器
1.编辑配置文件
修改 /etc/systemd/timesyncd.conf,指定 NTP 服务器:
[Time]
NTP=ntp7.aliyun.com
NTP=ntp6.aliyun.
可替换为其他公共服务器(如 pool.ntp.org、time.windows.com)。
支持同时配置多个服务器,以空格分隔。
2.可选参数(根据需求添加):
FallbackNTP=0.cn.pool.ntp.org # 备用服务器
RootDistanceMaxSec=5 # 最大允许时间偏差(秒)
PollIntervalMinSec=32 # 最小轮询间隔
PollIntervalMaxSec=2048 # 最大轮询间隔
三、启动与启用服务
1.激活服务
sudo timedatectl set-ntp true # 启用时间同步
sudo systemctl restart systemd-timesyncd.service
sudo systemctl enable systemd-timesyncd.service
说明:若服务不存在,执行 sudo dpkg-reconfigure systemd-timesyncd 修复。
2.验证服务状态
systemctl status systemd-timesyncd # 检查运行状态
timedatectl status # 查看同步状态
成功时显示 System clock synchronized: yes。
四、查看同步详情
1.同步日志与统计
timedatectl show-timesync # 显示详细同步状态
journalctl -u systemd-timesyncd -f # 实时日志
2.时间偏差检查
timedatectl | grep -i "synchronized"
输出示例:
System clock synchronized: yes
NTP service: active
五、常见问题处理
1.同步失败(System clock synchronized: no)
检查防火墙是否放行 UDP 123 端口。
确认 NTP 服务器可访问(如 ping ntp7.aliyun.com)。
尝试更换备用服务器(如 FallbackNTP=0.cn.pool.ntp.org)。
2.服务无法启动
确保已卸载冲突服务(如 ntpd)。
执行 sudo dpkg-reconfigure systemd-timesyncd 修复配置。
附:推荐配置模板
[Time]
NTP=ntp1.aliyun.com ntp2.aliyun.com
FallbackNTP=0.cn.pool.ntp.org 1.cn.pool.ntp.org
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048
此模板平衡了稳定性和兼容性,适配多数内网/公网环境。
firewalld防火墙
CentOS6x中防火墙叫做iptables
CentOS7.x 中默认使用的防火墙是firewalld
简介
Firewalld 是 CentOS 7.x 中默认提供的防火墙管理工具,它采用区域(Zone)和服务(Service)的概念来简化网络安全管理。相比传统的 iptables,Firewalld 提供了动态更新规则的能力,无需重启服务即可生效,从而提高了灵活性和效率。
基本概念
区域(Zone):Firewalld 将网络划分为不同的区域,每个区域对应一组特定的安全级别和规则。常见的区域包括 trusted(完全信任)、home(家庭网络)、work(工作环境)、public(公共场所)等。
服务(Service):服务是一组预定义的规则集合,描述了允许或拒绝哪些类型的流量。例如,HTTP、SSH 和 FTP 都有各自的服务定义。
主要功能
Firewalld 的主要功能包括但不限于:
动态修改防火墙规则,支持实时生效而无需重启服务或系统。
支持 IPv4 和 IPv6 流量的独立管理。
提供丰富的命令行工具 firewall-cmd 来管理和查询规则。
工作原理
Firewalld 并不直接处理数据包过滤逻辑,而是作为一个前端界面,负责生成和维护底层的 netfilter(即 iptables)规则集。它的优势在于提供了更高层次的抽象,让用户能够专注于业务需求而非复杂的链表结构
配置文件位置
Firewalld 的配置文件存储在 /etc/firewalld/ 目录下。其中:
/etc/firewalld/zones/ 存储各个区域的具体规则。
/etc/firewalld/services/ 定义可用的服务及其对应的端口和协议。
常用命令
以下是常用的 Firewalld 操作命令:
# 查看状态
systemctl status firewalld
# 启动服务
systemctl start firewalld
# 停止服务
systemctl stop firewalld
添加规则
假设需要允许来自某个特定 IP 地址的主机访问 HTTP (TCP 端口 80),可以使用以下命令添加永久规则:
sudo firewall-cmd --zone=public \
--add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port=80 protocol=tcp accept' \
--permanent
此命令的作用是向 public 区域添加一条富规则,允许 IP 地址为 192.168.1.100 的设备通过 TCP 协议访问端口 80,并将其保存为持久化配置。
应用更改
当新增或修改规则后,需重新加载配置以使变更立即生效:
sudo firewall-cmd --reload
查询现有规则
为了验证某条规则是否已成功添加,或者查看当前活动的规则列表,可以执行以下命令:
# 列出所有启用的区域
firewall-cmd --get-active-zones
# 显示指定区域的所有规则
firewall-cmd --zone=public --list-all
常见操作示例
开放 HTTP 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
说明:--permanent 表示永久生效,--reload 刷新规则。
限制特定 IP 访问 SSH
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" service name="ssh" accept' --permanent
firewall-cmd --reload
用途:仅允许 192.168.1.100 访问 SSH5。
查看默认使用的区域
firewall-cmd --get-default-zone
查看所有可用区域
firewall-cmd --get-zones
列出当前使用区域配置
firewall-cmd --list-all
列出所有区域的配置
firewall-cmd --list-all-zones
添加允许通过的服务或端口
firewall-cmd --zone=public --add-port=1024/tcp #在public区域,添加允许tcp协议的1024端口通过的规则
firewall-cmd --zone=public --add-service=ftp #在public区域,添加允许ftp服务通过的规则
去掉允许通过的服务或端口
firewall-cmd --zone=public --remove-port=1024/tcp #在public区域,去掉允许tcp协议的1024端口通过的规则
firewall-cmd --zone=public --remove-service=ftp #在public区域,去掉允许ftp服务通过的规则
永久模式参数permaent
firewall-cmd --permanent --zone=public --add-port=1024/tcp #在public区域,使用permanent参数,永久添加允许1024端口通过的规则
重新加载配置reload
firewall-cmd --reload #重新加载配置
计划任务crontab
Crontab 定时任务
crontab 是 Linux 系统中用于设置周期性被执行的指令的命令。
相关配置文件:
/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
/etc/crontab 这个文件负责调度各种管理和维护任务。
/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
常用的命令:
crontab -l #看当前用户的 crontab 文件
crontab -e #编辑当前用户的 crontab 文件
crontab -r #删除当前用户的 crontab 文件
crontab -u username -l #列出某个用户的 crontab 文件
crontab -u username -e #编辑某个用户的 crontab 文件
计划任务的规则语法格式:
分 时 日 月 周 需要执行的命令
* * * * * program
时间设置 含义
* * * * * 每分钟执行一次
0 * * * * 每小时的第 0 分钟执行一次
0 0 * * * 每天的午夜(0 点)执行一次
0 0 * * 0 每周日的午夜(0 点)执行一次
0 0 1 * * 每个月的第一天午夜(0 点)执行一次
0 0 L * * 每个月的最后一天午夜(0 点)执行一次
0 0 1 1 * 每年的第一天午夜(0 点)执行一次
0 0 * * 3 每周三的午夜(0 点)执行一次
0 0 1,15 * * 每个月的第 1 和第 15 天午夜(0 点)执行一次
0 0 * * FRI 每周五的午夜(0 点)执行一次
0 0 * * 5 每周五的午夜(0 点)执行一次
0 8-17 * * * 每天的上午 8 点到下午 5 点每小时执行一次
0 12 * * MON 每周一的中午(12 点)执行一次
0 0 15 * * 每个月的第 15 天午夜(0 点)执行一次
0 0 * * 3 每周三的午夜(0 点)执行一次
0 8-17 * * * 每天的上午 8 点到下午 5 点每小时执行一次
0 0 * * 1-5 每个工作日的午夜(0 点)执行一次
0 0 1 * FRI 每个月的第一个星期五午夜(0 点)执行一次
0 0 1,15 * * 每个月的第 1 和第 15 天午夜(0 点)执行一次
0 0 15 1 * 每年的 1 月 15 日午夜(0 点)执行一次
0 0 * * 7 每周日的午夜(0 点)执行一次
0 0 * * 5 每周五的午夜(0 点)执行一次
例子:
#每1分钟执行一次myCommand
* * * * * myCommand
#每小时的第3和第15分钟执行
3,15 * * * * myCommand
#在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
#每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
#每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
#每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
#每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
#每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
#每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
#每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
#每一小时重启smb
0 */1 * * * /etc/init.d/smb restart
#晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 * * * /etc/init.d/smb restart
#在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:
0 6-12/3 * 12 * /usr/bin/backup
#周一到周五每天下午 5:00 寄一封信给 alex@domain.name:
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
#每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha":
20 0-23/2 * * * echo "haha"
#每两个小时重启一次apache
0 */2 * * * /sbin/service httpd restart
#每天7:50开启ssh服务
50 7 * * * /sbin/service sshd start
#每天22:50关闭ssh服务
50 22 * * * /sbin/service sshd stop
#每月1号和15号检查/home 磁盘
0 0 1,15 * * fsck /home
# 每小时的第一分执行 /home/bruce/backup这个文件
1 * * * * /home/bruce/backup
#每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;
#每月的1、11、21、31日是的6:30执行一次ls命令
30 6 */10 * * ls
参考原文:
https://www.runoob.com/linux/linux-comm-crontab.html
https://www.runoob.com/w3cnote/linux-crontab-tasks.html
CentOS7系统的运行级别
在CentOS 7中,运行级别(Runlevels)是用来定义系统在启动和运行时所处的状态。这些运行级别允许系统管理员根据需要来配置系统服务,例如启动或停止特定的服务。CentOS 7使用的是Systemd,这是一个与传统的SysVinit不同的初始化系统和服务管理器。尽管Systemd不再使用传统的运行级别概念,但它仍然支持传统的SysVinit的运行级别兼容性。
运行级别(Runlevels)
在SysVinit系统中,运行级别通常定义为:
0:关机
1:单用户模式
2:多用户,没有网络服务
3:完全多用户模式(有网络服务)
4:未使用
5:图形界面
6:重启
#查看当前目标:这会显示当前默认启动的目标。
systemctl get-default
#设置默认目标:这会设置系统默认启动到多用户模式(没有网络)。要设置为图形界面,可以使用graphical.target。
systemctl set-default multi-user.target
#切换到另一个目标:
systemctl isolate multi-user.target
#立即关机
shutdown -h 0或shutdown -h now 或halt -p 或init 0
#立即重启
reboot或init 6
#把计算机切换到字符模式
init 3
#把计算机切换到图形模式(图形界面)
init 5
Linux软件包
Linux下的安装包可分为两种,分别是源码包和二进制包。
源码包
源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。计算机只能识别机器语言,也就是二进制语言,所以源码包安装之前需要编译。
编译过程耗时较长编译过程中可能会有各种错误
为了解决使用源码包安装的问题,Linux 软件包的安装出现了使用二进制包的安装方式。
二进制包
二进制包,也就是源码包经过成功编译之后产生的包。
二进制包是 Linux下默认的软件安装包,目前主要有以下2大主流的二进制包管理系统:
RPM包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、CentOS、SuSE 等。
DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。
常用包管理工具操作示例
1. APT(Debian/Ubuntu)
# 更新源列表
sudo apt update
# 安装软件包
sudo apt install vlc
# 删除软件(保留配置)
sudo apt remove firefox
# 完全卸载(含配置)
sudo apt purge nginx:ml-citation{ref="2,5" data="citationList"}
2. YUM/DNF(Red Hat系)
# 安装软件
sudo yum install httpd
# 升级所有包
sudo yum update
# 卸载软件
sudo yum remove mariadb:ml-citation{ref="5,8" data="citationList"}
3. RPM基础操作
查询某个软件安装情况
rpm -qa | grep 软件名称
参数:
-q:查询,query
-a:全部,all
rpm -qa |grep firefox #查询firefox浏览器的安装情况
卸载某个软件
rpm -e 软件的名称
#卸载火狐浏览器
rpm -qa |grep firefox #首先查询firefox软件的完整名称,firefox-45.7.0-2.el6.centos.x86_64
rpm -e firefox-45.7.0-2.el6.centos.x86_64 #卸载火狐浏览器
安装某个软件
rpm -ivh 软件包完整路径名称
选项:
-i:install,安装
-v:显示进度条
-h:表示以"#"形式显示进度条
cd /run/media/root/CentOS\ 7\ x86_64/Packages/ #进入光盘Packages目录,里面存放了很多rpm的安装包
ll |grep firefox #查看Packages目录下,包含firefox的安装包
rpm -ivh firefox-60.2.2-1.el7.centos.x86_64.rpm #使用rpm命令,安装firefox软件包
rpm -qa |grep firefox #查询是否安装完成
更新某个软件
语法:rpm -Uvh 完整的安装包路径
选项:
-U:upgrade,升级
-v:表示显示进度条
-h:表示以#形式显示进度条
rpm -qa |grep firefox #查询当前firefox的版本
rpm -Uvh firefox-60.8.0-1.el7.centos.x86_64.rpm #使用rpm命令,安装软件包
rpm -qa |grep firefox #查询是否安装完成
查看文件所属的包名
语法:rpm -qf 需要查询的文件路径
选项:
-f:查询文件所属包
rpm -qf /etc/ntp.conf #查询/etc/ntp.conf 属于哪个软件包
依赖管理特性
APT/YUM:自动解析依赖关系,用户无需手动处理
源码安装:需手动安装依赖项,如通过./configure && make && make install流程
centos7光盘的挂载和解挂
挂载光盘
1. 使用物理光盘
确保光盘已经放入光驱。
查找光驱设备:运行 ls /dev/cdrom 或 ls /dev/sr0 查看光驱设备的名称(通常是 /dev/cdrom 或 /dev/sr0)。
创建一个挂载点:选择一个目录作为挂载点,例如 /mnt/cdrom。如果目录不存在,可以使用 mkdir -p /mnt/cdrom 创建它。
挂载光盘:使用 mount 命令挂载光盘。例如:
sudo mount /dev/cdrom /mnt/cdrom
或者
sudo mount /dev/sr0 /mnt/cdrom
2. 使用光盘镜像文件(ISO)
创建挂载点:例如 /mnt/iso。
sudo mkdir -p /mnt/iso
挂载 ISO 文件:使用 mount 命令,指定 ISO 文件和挂载点。例如:
sudo mount -o loop /path/to/your.iso /mnt/iso
其中 /path/to/your.iso 是你的 ISO 文件的路径。
卸载光盘
1. 卸载物理或虚拟光盘
使用 umount 命令:确保你已经关闭了所有从该挂载点打开的文件,然后运行:
sudo umount /mnt/cdrom
或者对于 ISO 文件:
sudo umount /mnt/iso
自动挂载(永久挂载光盘)
临时挂载的光盘在系统重启后会失效。为了实现永久挂载,需要编辑 /etc/fstab 文件并添加相应的挂载条目。
打开 /etc/fstab 文件进行编辑:
vi /etc/fstab
在文件末尾添加以下内容:
/dev/sr0 /mnt/centos_cd iso9660 defaults,ro 0 0
这里:
/dev/sr0 是光盘设备路径。
/mnt/centos_cd 是挂载点。
iso9660 是文件系统类型。
defaults,ro 表示默认选项加上只读模式。
保存并退出后,重启系统以使更改生效:
init 6 或者reboot