Linux学习笔记(六):服务管理,监控,RPM包管理,yum包管理工具,Linux启动管理,网络管理
1. 服务管理
1.1 service
- 启动/停止服务
service
命令是最常用的服务管理工具之一,用于启动、停止、重启或检查服务的状态。
service [服务名] start|stop|restart|status
- 查看已安装的服务
ls -l
命令结合/etc/init.d/
目录可以列出所有在系统中安装的服务脚本。这是一个快速检查服务是否已安装的方法。
ls -l /etc/init.d
- 进入图形化管理界面
setup
在界面中使用Tab
键进行按钮间的移动,使用[*]
表示自启动。
1.2 chkconfig
- 查看服务的运行级别和状态
chkconfig
可以显示所有服务的运行级别设置,或者只显示指定服务的设置。
chkconfig --list [服务名]
- 设置服务的自启动状态
通过
chkconfig
命令,可以为不同的运行级别设置服务的自启动或禁用状态。
chkconfig --level [1-5] [服务名] on # 启用自启动
chkconfig --level [1-5] [服务名] off # 禁用自启动
1.3 systemctl
- 查看可用服务名
systemctl
可以列出所有在/usr/lib/systemd/system/
目录下的服务单元文件。
ls -l /usr/lib/systemd/system | grep [部分名]
- 查看服务状态
systemctl
可以实时查看服务的当前状态。
systemctl status [服务名]
- 启动/停止服务
systemctl
可以启动、停止、重启或重载服务。
systemctl start [服务名]
systemctl stop [服务名]
systemctl restart [服务名]
systemctl reload [服务名]
- 设置自启动
systemctl
可以设置自启动,和开机不自启
systemctl enable [服务名]
systemctl disable [服务名]
1.4 firewalld
- 打开端口
使用
firewall-cmd
命令可以永久地添加端口到防火墙。
firewall-cmd --permanent --add-port=[端口号]/[协议]
- 关闭端口
同样,使用
firewall-cmd
命令可以永久地从防火墙中移除端口。
firewall-cmd --permanent --remove-port=[端口号]/[协议]
- 重新加载配置,使改动生效
修改防火墙配置后,需要重新加载配置才能使改动生效。
firewall-cmd --reload
- 查询端口是否开放
可以使用
firewall-cmd
命令来查询端口是否被防火墙允许。
firewall-cmd --query-port=[端口号]/[协议]
- 连接端口测试
使用
telnet
或其他网络工具可以测试端口是否开放。
telnet [IP地址] [端口号]
1.5 Systemd
Systemd 是现代Linux系统中用于启动服务、管理系统和单元的一种系统和服务管理器。
-
查看系统服务状态
systemctl list-units --type=service
命令用于列出所有当前运行的服务或可能的服务单元。通过指定--type=service
,可以确保只显示与服务相关的单元。systemctl list-units --type=service
这个命令对于检查系统服务的状态和配置非常有用。
2. 监控
2.1 动态监控进程
进程监控是确保Linux系统稳定运行的关键环节。
- 使用
top
命令动态监控进程
top
命令是Linux系统中最常用的进程监控工具之一,它以实时方式显示系统的当前进程状态。
top
- 交互操作
top
命令提供了丰富的交互功能:
- 按
h
:显示帮助信息。 - 按
k
:结束一个进程。输入要结束的进程ID(PID),然后按回车确认。 - 按
u
:切换到只显示用户特定的进程。 - 按
o
:更改显示的列,例如CPU使用率、内存使用率等。 - 按
1
:显示所有进程的总CPU使用率。 - 按
2
:显示所有进程的内存使用情况。
2.2 监控网络
网络监控对于确保网络服务可用性和性能至关重要。
-
使用
netstat
或ss
命令监控网络连接netstat
和ss
都是用于监控网络连接和端口状态的工具。-
netstat
netstat -tuln # 显示所有监听的端口 netstat -tunap | grep [端口号] # 显示指定端口号的网络连接
-
ss
ss
是netstat
的一个替代品,它提供了更现代的接口和更多的功能。ss -tuln # 显示所有监听的端口 ss -tunap | grep [端口号] # 显示指定端口号的网络连接
-
-
其他网络监控工具
iftop
:实时监控网络带宽使用情况。nload
:显示带宽使用情况,类似于iftop
。vnstat
:记录网络流量统计信息。
3. RPM包管理
RPM(Red Hat Package Manager)是Linux系统中用于软件包管理和安装的标准格式。
3.1 查看
-
查询所有已安装的包
使用
rpm -qa
命令可以列出系统中所有已安装的软件包。通过管道和grep
命令,可以过滤出包含特定名称的包。rpm -qa | grep [包名]
-
查询特定软件包是否安装
要检查特定软件包是否已安装,可以使用
rpm -q
命令。rpm -q [软件包名]
如果软件包已安装,该命令将返回软件包的名称;如果没有安装,则返回空或错误信息。
-
查询软件包信息
rpm -qi
命令可以提供关于软件包的详细信息,包括版本、大小、提供者、安装日期等。rpm -qi [软件包名]
这个命令对于了解软件包的完整信息非常有用。
-
查询某个文件所属的软件包
有时候,你可能想知道某个文件是由哪个软件包安装的。
rpm -qf
命令可以帮助你找到答案。rpm -qf [文件路径]
输入文件路径后,命令将返回包含该文件的软件包名称。
3.2 卸载
-
卸载软件包
要从系统中移除软件包,可以使用
rpm -e
命令。rpm -e [软件包名]
在卸载之前,请确保该软件包不是其他软件包所依赖的。
3.3 安装
-
安装软件包
要安装一个RPM包,可以使用
rpm -ivh
命令。rpm -ivh [rpm包文件]
i
表示安装,v
表示详细输出,h
表示显示进度条。注意事项:
- 在安装软件包之前,请确保它是来自可靠的来源,以避免安全风险。
- 如果需要安装依赖项,RPM通常会自动处理,但有时候你可能需要手动安装某些依赖。
- 在某些情况下,你可能需要使用
--nodeps
选项来忽略依赖检查。
4. yum包管理
Yum(Yellowdog Updater, Modified)是Linux系统中非常流行的包管理器,它简化了软件包的安装、更新和删除过程。
4.1 更换yum源
默认的yum源下载慢,且包的种类少,这个时候,我们可能需要一些国内的yum源
#备份
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
## 从阿里云下载 CentOS 7 的 yum 源配置文件并替换现有的配置
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
## 清理旧的缓存并生成新的缓存
sudo yum clean all
sudo yum makecache
4.2 更新yum
有时候为了安装我们想要的包的一些版本,我们可能需要更新yum
yum update
4.3 查询
查询命令用于查找系统中可用的软件包或搜索特定名称的软件包。
-
查询所有包含“firebox”的软件包
yum list | grep firebox
这个命令会在所有可用的软件包中搜索包含“firebox”的条目。它会列出所有与“firebox”匹配的软件包及其版本信息。
4.4 安装
安装命令用于将软件包及其依赖项添加到系统中。
-
安装名为“firebox”的软件包
yum install firebox
执行此命令后,yum将查找名为“firebox”的软件包,下载其依赖项,并安装到系统中。在安装过程中,yum将提示用户确认安装或回答一些问题,如选择软件包的版本。
4.5 yum的其他命令
-
列出所有可用的软件包
yum list
这个命令会列出系统中所有可用的软件包及其版本。
-
搜索软件包
yum search firebox
这个命令会搜索系统中所有与“firebox”相关的软件包,但不会安装它们。
-
更新所有软件包
yum update
这个命令会更新系统中的所有软件包到最新版本。
-
安装多个软件包
yum install package1 package2 package3
这个命令会一次性安装多个软件包。
-
列出已安装的软件包
yum list installed
这个命令会列出系统中已安装的所有软件包。
-
删除软件包
yum remove package1 package2 package3
这个命令会从系统中删除指定的软件包。
5. Linux启动管理
Linux系统的启动管理是系统维护和自动化任务的关键部分。
5.1 定时任务
定时任务允许用户在指定的时间自动执行命令或脚本。在Linux系统中,
crontab
是管理定时任务的主要工具。
-
编辑定时任务
crontab -e
命令用于编辑当前用户的定时任务列表。crontab -e
执行此命令后,会打开默认的文本编辑器(通常是
vi
或nano
),并展示当前用户的定时任务列表。以下是定时任务文件的基本格式:[分钟] [小时] [日] [月] [星期] [命令]
- 分钟:从0到59的数字,指定了命令执行的时间点。
- 小时:从0到23的数字,指定了命令执行的小时。
- 日:从1到31的数字,指定了命令执行的日期。
- 月:从1到12的数字,指定了命令执行的月份。
- 星期:从0到7(0或7代表星期天),指定了命令执行星期几。
- 命令:要执行的命令或脚本路径。
示例:
0 5 * * * /usr/bin/myscript.sh # 每天凌晨5点执行myscript.sh脚本
交互操作:
- 保存并退出:在编辑器中修改完成后,保存文件并退出编辑器,定时任务将会更新。
- 查看帮助:在编辑器中按
Ctrl + G
可以查看帮助信息。
5.2 其他定时任务管理命令
除了 crontab -e
,还有一些其他命令可以帮助管理定时任务:
-
列出定时任务
crontab -l
显示当前用户的定时任务列表。
-
删除定时任务
crontab -r
删除当前用户的定时任务列表。
-
查看定时任务
crontab -l -v
以可读的格式显示当前用户的定时任务列表。
通过使用定时任务,用户可以自动化许多重复性的任务,如备份、日志清理、系统维护等,从而提高工作效率和系统管理效率。
6. 网络管理
6.1 常用网络命令
-
查看网络接口信息
ip addr
命令可以显示所有网络接口的IP地址、子网掩码、广播地址等信息。ip addr
-
修改主机名
hostnamectl set-hostname "hostname"
命令用于更改系统的主机名。hostnamectl set-hostname "mynewhostname"
更改主机名后,可能需要更新
/etc/hosts
文件以及重新启动网络服务。 -
查看防火墙状态
systemctl status firewalld
命令用于查看防火墙服务的当前状态。systemctl status firewalld
如果防火墙服务正在运行,该命令将显示服务的活动状态。
-
查看SELinux状态
getenforce
命令用于查看SELinux(安全增强型Linux)的策略状态。getenforce
返回值可以是
Enforcing
(强制模式)或Permissive
(宽容模式),或者在某些系统上可能是Disabled
。
6.2 网卡管理
-
使用 NetworkManager 管理网络
NetworkManager 是一个用于管理网络连接的库和工具,它简化了网络配置和连接管理。
nmcli conn reload # 重新加载连接 nmcli conn down [连接名] # 关闭连接 nmcli conn up [连接名] # 启动连接
NetworkManager 提供了一个命令行界面
nmcli
,可以用来管理网络连接。 -
关闭 NetworkManager 服务
如果需要手动管理网络接口,可以停止并禁用 NetworkManager 服务。
systemctl stop NetworkManager systemctl disable NetworkManager
关闭 NetworkManager 后,可以使用传统的网络配置文件来管理网络接口。
-
重启网络服务
重启网络服务可以重新加载网络配置或重启网络接口。
systemctl restart network
-
复制网卡配置文件
当需要复制一个现有的网卡配置到另一个接口时,可以使用以下命令。
cp -p /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s8
-p
选项表示保留原始文件的权限和属性。 -
修改网卡配置文件示例
网卡配置文件通常位于
/etc/sysconfig/network-scripts/
目录下,如:# 编辑 ifcfg-enp0s8 文件 IPADDR=10.0.0.1 PREFIX=30 NM_CONTROLLED=no # 禁用 NetworkManager 对此设备的管理 ONBOOT=yes # 启动时自动激活此接口