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 # 启动时自动激活此接口