目录
域名解析:通过主机名/替代的字符地址去代替ip地址,以便于访问
在VMWare配置linux系统的固定ip地址(window)
在VMWare配置linux系统的固定ip地址(MacOS)
tar压缩或解压缩tar(后缀名.tar)、gzip(后缀名.gz)文件
linux快捷键
强制停止程序运行/退出当前命令输入 | ctrl+c | |
推出账户登录/某些特定程序的专属页面 | ctrl+d | 不能用于退出编辑器 |
搜索历史输入过的命令 | history | 此时可以通过grep过滤命令 |
快速执行上一次执行过的类似1命令 | !+字符 | 例如,当前历史执行过 python history ls grep 此时通过!p 系统会从下向上搜索执行过的命令,根据匹配机制,可以快速执行python、命令 注意:执行历史比较久远的命令,不容易命中 |
根据关键字搜索历史比较久远的指令 | ctrl+r,输入关键字 | 回车直接执行目标目录 键盘左右键,可以得到该命令(不执行) |
光标移动快捷键 | CTRL+a CTRL+e CTRL+键盘左键 CTRL+键盘右键 | a:跳到命令开头 e:跳到命令结尾 左键:向左跳一个单词 右键:向右跳一个单词 |
清空终端内容 | CTRL+l或命令clear |
安装软件
使用yum为centOS安装软件
yum:RPM包软件管理器,用于自动化安装配置Lunix软件,并可以自动解决依赖问题
语法:yum [-y] [install | remove | search] 软件名称
选项y:自动确认,无需手动确认安装或卸载过程
install:安装
remove:卸载
search:搜索
yum命令需要联网且需要root权限,可以su切换到root也可以使用sudo临时使用root权限
首次使用yum时报错?
Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"
原因:
现这个错误是因为使用的 CentOS 7 仓库已经被归档,当前的镜像地址无法找到所需的文件。CentOS 7 的官方支持已经结束,部分仓库已被移至归档库。这导致了你的 yum 命令无法找到所需的元数据文件。CentOS 7 的官方仓库在 2024 年 6 月 30 日之后已经停止维护。因此,使用最新的 CentOS 7 官方仓库可能会遇到问题。
解决方法:
一、使用阿里云镜像
1.备份原有仓库配置文件
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.下载阿里云的仓库配置文件:
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
结果如下图,即为成功:
3.清理缓存并重新尝试:
sudo yum clean all
sudo yum makecache
sudo yum -y install wget(这条代码是示例)
二、使用清华大学镜像
1.备份原有仓库配置文件:
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.下载清华大学的仓库配置文件
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo
3.清理缓存并重新尝试
sudo yum clean all
sudo yum makecache
sudo yum -y install wget
使用apt为Ubuntu安装软件
语法:apt [-y] [install | remove |search]
用法和yum一样。
使用systemctl控制软件的启动和关闭
linux系统有很多软件(内置或可以自动注册为服务的第三方软件)均支持使用systemctl命令来控制:启动、停止、开机自启动···,能够被systemctl管理的软件,一般称为“服务”
语法:systemctl start | stop | status | enable | disable 服务名
start 启动、 stop 关闭、 status 查看状态、 enable 开启开机自启动、 disable关闭开机自启动
内置的服务比较多,例如:
NetworkManager 主网络服务
network 副网络服务
firewalld防火墙服务
sshd,ssh服务(FinalShell使用的就是这个服务)
软链接:ln
在系统中创建软连接,可以将文件、文件夹链接到其它位置,类似Window的快捷方式
语法:ln -s 参数1 参数2
-s:创建软链接
参数1:被链接的文件/文件夹的地址
参数2:要链接到的目的地
使用软链接之后,在今后的工作中需要用到某的文件(地址复杂)时,直接使用其软链接的地址(参数2)即可。
日期和时区
date命令查看系统时间
语法:date [-d] ["+格式化字符串"](+不可省略)
-d:按照给定的字符串显示日期,一般用于日期计算,支持的时间标记有:year年,mouth月,day天,hour小时,minute分钟,second分钟
格式化字符串:
%Y | 年 |
%y | 年份后的两位数字(00—99) |
%m | 月份(01—12) |
%d | 日(01-31) |
%H | 小时(00-23) |
%M | 分钟(00-59) |
%S | 秒(00-60) |
%s | 自1970-01-01 00:00:00到现在的秒数 |
示例:date "+%Y-%m-%d %H:%M:%S"
输出结果示例:2025-02-15 05:59:45
示例:date -d "+1day"
输出结果示例:2025年 02月 16日 星期日 06:01:15 PST
修改linux时区
要使用root权限。
- 查看当前时区:timedatectl
- 列出所有可用时区:timedatectl list-timezones
- 修改时区:sudo timedatectl set-timezone 时区名称
使用ntp程序自动校准系统时间
安装方法:yum -y install ntp
启动并设置开机自启动:
systemctl start ntpd
systemctl enable ntpd
手动校准:ntpdate -u ntp.aliyun.com
ip地址和主机名
基础
- 查看ip地址:ifconfig
- 可以用来指代本机的ip地址:127.0.0.1和0.0.0.0(后者还有更广泛的作用)
- 查看主机名:hostname,修改主机名:hostnamectl set-hostname 新的主机名
域名解析:通过主机名/替代的字符地址去代替ip地址,以便于访问
域名解析的过程(图片源于黑马程序员):
由上图可知,当你想直接通过主机名会是其它去代替ip地址时,需要在本机的文件里去配置ip映射。
配置ip映射
配置映射的位置:
window:C:\\Windows\System32\dirvers\etc\hosts
Linux:/etc/hosts
权限:需要root/管理员权限
如何配置?
- window:在文件的末尾添加 目标ip地址 域名
- 完成1的操作之后,打开FinalShell,修改“主机”的ip地址,将其改成上述的“域名”,也可以成功连接
- linux的配置方法也类似。
虚拟机配置固定ip
为什么需要固定ip?
固定 IP 地址(Static IP)是指为设备分配一个长期不变的 IP 地址,而不是由 DHCP 服务器动态分配的临时 IP 地址。
配置好了ip地址的映射之后,如果ip地址频繁变更,我们也需要频繁变更其映射,非常的不方便。
在VMWare配置linux系统的固定ip地址(window)
- 在VMWare配置ip地址网关和网段(IP地址的范围)
- 在linux系统中手动修改配置文件
修改完成后确定退出即可
值得注意的是,当发现FinalShel连接超时时,要修改FinalShell对应的主机地址,可以通过在虚拟机的控制面板输入ifconfig查看新的ip地址
接下来解析第二步:系统中手动修改配置文件(需要root权限)
1.指令:vim /etc/sysconfig/network-scripts/ifcfg-ens33
在文件末尾添加:
IPADDR="192.168.88.130"
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2"
DNS1="192.168.88.2"
第一行表示的是IP地址(是我们想要的固定ip地址,改成88.150或者88.120都行,只要是你想要的ip地址
第二行表示的是我们的子网掩码
第三行表示我们的网关,要和前面vmware设置的一致
第四行DNS1设置成网关即可
并把BOOTPROTO="dhcp"改成="static",如图所示
最后,我们要重启网卡,输入(值得注意的是,当发现FinalShel连接超时时,要修改FinalShell对应的主机地址,可以通过在虚拟机的控制面板输入ifconfig查看新的ip地址)
systemctl stop network
systemctl start network
在VMWare配置linux系统的固定ip地址(MacOS)
由于作者的电脑不是macOS的,所以我没有实践过
参考文件Mac用 VMWare创建虚拟机并设置静态IP - 知乎
网络传输
使用ping命令检查服务器是否可联通
语法:ping [-c num] ip或主机名
选项-c:检查次数,num=3就检查三次,不使用-c将会无限次数地持续检查
参数:ip或主机名是指被检查的服务器端ip或主机名
wget下载文件
语法:wget [-b] url
选项:-b,可选,后台下载,会将日志写入当前工作目录的wget-log文件
参数:url,下载链接,
如果想要停止下载,可以通过ctrl+c(此时获得的是一个不完整的文件)
通过tail -f wget-log持续跟踪下载的进程
使用curl发起网络请求
语法:curl [-O] url
选项:-O,用于文件下载,当url是下载链接时,可以使用此选项保存文件
参数:url,要发起请求的网络地址
作用:相当于在浏览器打开一个网站
端口
端口(Port)是计算机网络中用于区分不同服务或应用程序的逻辑概念。它是网络通信中的一个重要组成部分,帮助设备在同一 IP 地址上运行多个服务,并通过端口号来区分这些服务。
1. 端口的基本概念
-
IP 地址:用于标识网络中的设备(如计算机、服务器、路由器等)。
-
端口号:用于标识设备上运行的特定服务或应用程序。
-
组合:IP 地址 + 端口号 = 唯一标识一个服务。
例如:
-
192.168.1.100:80
表示 IP 地址为192.168.1.100
的设备上的 HTTP 服务(端口 80)。
2. 端口号的范围
端口号是一个 16 位整数,范围是 0 到 65535。根据用途,端口号分为以下三类:
1. 知名端口(Well-Known Ports)
-
范围:0 - 1023
-
用途:预留给系统或知名服务使用。
-
示例:
-
80:HTTP(网页服务)
-
443:HTTPS(加密的网页服务)
-
22:SSH(安全远程登录)
-
21:FTP(文件传输协议)
-
25:SMTP(邮件发送协议)
-
2. 注册端口(Registered Ports)
-
范围:1024 - 49151
-
用途:预留给用户或应用程序使用。
-
示例:
-
3306:MySQL 数据库
-
8080:HTTP 备用端口
-
27017:MongoDB 数据库
-
3. 动态端口(Dynamic Ports)
-
范围:49152 - 65535
-
用途:临时分配给客户端程序使用,通常用于短暂的通信。
3. 端口的作用
-
多路复用:允许同一设备上的多个服务同时运行。
-
区分服务:通过端口号区分不同的服务(如 HTTP、FTP、SSH 等)。
-
安全性:通过防火墙限制特定端口的访问,提高网络安全性。
4. 常见的端口及其用途
端口号 | 协议 | 用途 |
---|---|---|
20/21 | FTP | 文件传输协议 |
22 | SSH | 安全远程登录 |
23 | Telnet | 远程登录(不安全) |
25 | SMTP | 邮件发送 |
53 | DNS | 域名解析 |
80 | HTTP | 网页服务 |
110 | POP3 | 邮件接收 |
143 | IMAP | 邮件接收 |
443 | HTTPS | 加密的网页服务 |
3306 | MySQL | MySQL 数据库 |
3389 | RDP | 远程桌面协议 |
8080 | HTTP | HTTP 备用端口 |
查看端口的占用情况
- 使用nmap查看某ip地址端口占用情况:安装yum -y install nmap;语法:nmap 被查看的ip地址
- 使用netstat命令查看指定端口的占用情况,安装netstat:yum -y install net-tools
语法:netstat -anp | grep 端口号
进程管理
了解进程
进程(Process)是计算机中正在运行的程序的实例。它是操作系统进行资源分配和调度的基本单位。每个进程都有独立的内存空间、代码、数据和系统资源。每个进程会被分配一个独有的进程ID
1. 进程的基本概念
-
程序:存储在磁盘上的静态文件(如可执行文件、脚本)。
-
进程:程序在内存中的动态执行实例。
-
多任务:操作系统可以同时运行多个进程,通过时间片轮转等方式实现并发执行。
2. 进程的组成
一个进程通常包括以下部分:
-
代码段:程序的指令。
-
数据段:程序的全局变量和静态变量。
-
堆:动态分配的内存(如
malloc
或new
分配的内存)。 -
栈:用于存储函数调用的局部变量和返回地址。
-
进程控制块(PCB):操作系统用于管理进程的数据结构,包含进程的状态、优先级、寄存器值等信息。
3. 进程的状态
进程在其生命周期中会经历多种状态,常见的状态包括:
-
新建(New):进程刚被创建,尚未开始执行。
-
就绪(Ready):进程已准备好运行,等待 CPU 分配时间片。
-
运行(Running):进程正在 CPU 上执行。
-
阻塞(Blocked):进程等待某些事件(如 I/O 操作完成)。
-
终止(Terminated):进程执行完毕或被强制终止。
4. 进程的创建
-
系统启动:操作系统启动时会创建一些系统进程。
-
用户操作:用户运行程序时会创建新的进程。
-
进程派生:一个进程可以通过系统调用(如
fork()
)创建子进程。
5. 进程的调度
操作系统通过调度算法决定哪个进程可以使用 CPU。常见的调度算法包括:
-
先来先服务(FCFS):按进程到达的顺序调度。
-
短作业优先(SJF):优先调度执行时间短的进程。
-
时间片轮转(RR):每个进程分配一个固定的时间片,轮流执行。
-
优先级调度:根据进程的优先级进行调度。
6. 进程的通信
多个进程之间可以通过以下方式通信:
-
管道(Pipe):用于父子进程之间的通信。
-
消息队列(Message Queue):进程之间通过消息传递数据。
-
共享内存(Shared Memory):多个进程共享同一块内存区域。
-
信号(Signal):用于通知进程某个事件的发生。
-
套接字(Socket):用于网络通信。
进程管理
通过ps查看Linux系统中的进程信息
语法; ps [-e -f]
选项-e:显示出全部进程
选项-f:已完全格式化的形式展示全部信息
固定用法:ps -ef列出全部进程的信息
可以通过管道符准确过滤具体的关键字信息,例如:ps -ef | grep tail(tail这个位置可以是命令或者关键词,例如进程号)
UID | PID | PPID | C | STIME | TTY | TIME | CMD |
进程所属用户ID | 进程号 | 进程的父id (启动此进程的其他进程) | 此进程的CPU占用率 | 进程的启动时间 | 七点此进程的终端序号,如显示?,表示非终端进程,而是系统内置的 | 进程占用的CPU时间(累计占用CPU的时间 | 启动路径 |
关闭进程:kill
语法:kill [-9] 进程号
选项-9:表示强制关闭进程,不使用此选项会像进程发送信号要求其关闭,的那是否关闭取决于进程自身的处理机制。
主机状态
查看主机的资源占用:top命令
语法:top,默认五秒刷新一次
top命令内容详解:
top
命令的常用选项
选项 | 作用 |
---|---|
-d 秒数 | 设置刷新间隔时间(默认 5 秒)。例如:top -d 1 表示每秒刷新一次。 |
-n 次数 | 设置刷新次数后退出。例如:top -n 5 表示刷新 5 次后退出。 |
-p PID | 仅显示指定 PID 的进程信息。例如:top -p 1234 。 |
-u 用户名 | 仅显示指定用户的进程信息。例如:top -u root 。 |
-b | 以批处理模式运行,适合将输出重定向到文件。例如:top -b > output.txt 。 |
-H | 显示线程信息(默认显示进程信息)。 |
-c | 显示完整的命令行(默认只显示命令名称)。 |
-i | 忽略空闲进程(不显示 CPU 使用率为 0 的进程)。 |
top
命令的交互操作
在 top
运行时,可以通过按键进行交互操作:
按键 | 作用 |
---|---|
k | 终止进程。输入 PID 后按回车。 |
r | 修改进程的优先级(Nice 值)。输入 PID 和新的 Nice 值后按回车。 |
P | 按 CPU 使用率排序(默认排序方式)。 |
M | 按内存使用率排序。 |
T | 按运行时间排序。 |
N | 按 PID 排序。 |
f | 进入字段选择界面,可以自定义显示的列。 |
h | 显示帮助信息。 |
q | 退出 top |
查看磁盘信息监控
查看硬盘的使用情况
语法:df [-h]
选项-h:以人性化的单位显示
查看cpu、磁盘的详细监控指标
语法:iostat [-x] [num1] [num2]
选项-x:显示详细信息
num1:刷新间隔
num2:刷新次数
网络状态监控
固定语法:sar -n DEV num1 num2
选项-n:查看网络,DEV表示查看网络接口
num1:刷新间隔(不填,仅显示一次)
num2:刷新次数(不填,无限次数)
环境变量:env查看环境变量
环境变量的作用
cd命令本身是一个程序,那为什么我们在任意目录输入cd都能成功执行这个程序呢,这得益于环境变量的作用:借助PATH记录的搜索路径,促使程序执行时会自动扫描PATH下面的搜索路径,直到找到cd所在的应用程序并运行。
环境变量(Environment Variables)是操作系统或应用程序用来存储配置信息和运行时数据的一种机制。它们在系统运行和程序执行中起着重要作用。以下是环境变量的主要作用:
1. 配置系统行为
环境变量可以影响操作系统和应用程序的行为。例如:
-
PATH
:指定可执行文件的搜索路径。当你在终端输入命令时,系统会根据PATH
中的路径查找对应的可执行文件。 -
LANG
:设置系统的语言环境(如en_US.UTF-8
或zh_CN.UTF-8
)。 -
HOME
:指定当前用户的主目录路径。
2. 传递配置信息
环境变量可以用于向程序传递配置信息,避免将配置硬编码在代码中。例如:
-
数据库连接信息:通过环境变量传递数据库的主机、端口、用户名和密码。
-
API 密钥:通过环境变量传递第三方服务的 API 密钥。
3. 控制程序行为
环境变量可以控制程序的运行方式。例如:
-
DEBUG
:在开发环境中启用调试模式。 -
JAVA_OPTS
:设置 Java 虚拟机的启动参数。
4. 多环境支持
通过环境变量,可以在不同的运行环境(如开发、测试、生产)中使用不同的配置。例如:
-
开发环境:使用本地的数据库和服务。
-
生产环境:使用远程的数据库和服务。
5. 提高安全性
将敏感信息(如密码、密钥)存储在环境变量中,而不是硬编码在代码中,可以提高安全性。例如:
-
DATABASE_PASSWORD
:通过环境变量传递数据库密码,避免密码泄露。
6. 跨平台兼容
环境变量是跨平台的,可以在不同的操作系统(如 Linux、Windows、macOS)中使用相同的配置方式。
7. 动态调整
环境变量可以在运行时动态调整,而无需修改代码或重启程序。例如:
-
LOG_LEVEL
:通过环境变量调整日志级别(如INFO
、DEBUG
)。
8. 常见环境变量示例
环境变量 | 作用 |
---|---|
| 指定可执行文件的搜索路径。 |
| 指定当前用户的主目录路径。 |
| 设置系统的语言环境。 |
| 当前登录的用户名。 |
| 当前用户的默认 Shell。 |
| 当前工作目录的路径。 |
| 默认的文本编辑器(如 |
| 数据库的连接地址。 |
| 第三方服务的 API 密钥。 |
$的作用
$用于取“变量”的值
环境变量记录的选项,处理提供给操作系统之外,如果我们想要自己使用,可以听过$取值;
语法:$环境变量名
例如:echo ¥PATH就可以取得PATH这个环境变量的值,并通过echo语句输出
当和其它内容混合在一起时,可以通过{}标注所取的变量,例如 echo ${PATH}ABC
如何在lunix的环境变量
- 临时设置环境变量,语法:export 变量名=变量值(在控制面板使用export命令)
- 永久生效:有两种方式
- 仅针对当前用户生效,配置在当前用户的:~/.bashrc文件中,关机再重新打开就会失效
- 针对所有用户生效,配置在系统的:/ect/profile文件中
- 通过语法:source 配置文件,进行立刻生效,或重新登录FinalShell生效
- 仅针对当前用户生效的方法:输入vi ~/.bashrc打开编辑器,在文件下面添加 export 变量名=变量值,在输入:wq!保存退出即可。
- 针对所有用户生效的方法:输入vi /ect/profile打开编辑器,在文件下面添加 export 变量名=变量值,在输入:wq!保存退出,再通过source /ect/profile使其生效即可
通过配置环境变量,可以在系统的任何目录执行我们自己编写的脚本命令,PATH里面追加的就是我们脚本文件的地址,写法:export PATH=$PATH:新增地址
PATH里的不同的地址,通过冒号:分隔
虚拟机-本地电脑的文件上传下载
在FinalShell提供的可视化操作完成
通过指令rz上传和sz下载完成
- 安装yum -y install lrzsz
- 使用方法:来到目标目录,通过sz 完整的文件名,即可下载(下载到下载文件夹),而rz就更简单了,直接输入rz命令,会弹出一个窗口选择,选中目标文件即可(速度慢)。
压缩和解压
tar压缩或解压缩tar(后缀名.tar)、gzip(后缀名.gz)文件
- .tar,被称之为tarball,归档文件,简单的封装文件,并没有太多的文件体积减少
- .gz,也常见为.tar.gz,gzip格式压缩文件,通过压缩算法压缩,可以极大减少压缩后的体积
- 语法:tar [-c -v -x -f -z -C] 参数1 参数2···参数n
- -c:创建压缩文件,用于压缩模式
- -v:显示压缩、解压的进程
- -x:解压
- -f:要压缩/解压的文件,必须在所有选项中处于最后一个位置
- -z:gzip模式,不适用-z就是普通的tarball模式,如果使用,必须在第一个
- -C:选择解压的目的地,单独使用
- 常见的选项组合:
- tar -cvf test.tar 1.txt 2.txt 作用:将 1.txt 2.txt文件都打包到 test.tar文件内
- tar -zcvf test.tar.gz 1.txt 2.txt 作用:将1.txt 2.txt 压缩到 test.tar.gz 文件中,使用gzip模式
- tar -xvf test.tar,作用:解压test.tar到当前目录
- tar -xvf test.tar -C /home/yzx,作用:将tar文件解压到指定目录
- tar -zxvf test.tar.gz -C /home/yzx,作用:将tar.gz文件解压到指定目录
zip、unzip压缩或解压缩zip文件
压缩语法:zip [-r] 参数1 参数2 ···参数n
选项-r:被压缩的文件包含文件时,需要带上-r
示例:zip test.zip 1.txt 2.txt
解压语法:unzip [-d] 参数
选项-d:指定解压目的地,要放在被解压文件地址的后面,并跟上解压目的地
参数:被解压的文件
示例:unzip test.zip -d /home/yzx