ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Linux焦点概念与常用命令
[打印本页]
作者:
守听
时间:
2024-12-17 05:08
标题:
Linux焦点概念与常用命令
一、Linux概述
1、常见的操作系统
Windows操作系统:由微软公司开发的操作系统,广泛应用于个人电脑、服务器、游戏机等装备中
win xp
win7/win8/win10/win11等
Unix操作系统(1960年代诞生):由贝尔实验室开发的一类操作系统,主要应用于服务器、工作站、超级计算机等领域,具有稳定、安全等特点
Solaris:SUN公司开发
AIX:IBM开发
HP-UX:惠普公司开发
macOS:苹果公司开发,主要应用于苹果公司的电脑和笔记本电脑上
Linux 操作系统(1991年诞生):Linux 操作系统是一种开源的、免费的、类 UNIX 操作系统,用于服务器、工作站、超级计算机等领域
Debian:一种流行的稳定Linux操作系统
Ubuntu:基于Debian构建的一种流行的Linux桌面操作系统
Red Hat:一种商业Linux操作系统,由Red Hat公司开发
CentOS:通过重新编译Red Hat而得到的Linux操作系统,免费且源代码开放
Fedora:由Red Hat公司赞助的基于开源的Linux桌面和服务器操作系统
Chrome OS操作系统:由Google公司开发的基于Chrome浏览器的操作系统,主要应用于Chromebook笔记本电脑上
Android操作系统:由Google公司开发的操作系统,主要应用于手机、平板电脑等移动装备中
iOS操作系统:由苹果公司开发的操作系统,主要应用于iPhone、iPad等移动装备中
HarmonyOS鸿蒙操作系统,由华为公司自主开发
2、Linux发展史
1991年:Linux诞生
Linus Torvalds(林纳斯·托瓦兹)在芬兰赫尔辛基大学开始开发Linux内核,发布了第一个版本(0.01),最初只是为了个人使用,替换Minix操作系统
1992年:联合GNU工具
Linux内核与GNU项目标工具(如GNU C库、bash、编译器等)联合,形成了一个完备的开源操作系统,这个系统厥后被称为GNU/Linux
1993年:Debian发布
Debian作为一个完全由社区管理的发行版发布,强调自由软件,成为很多Linux发行版的根本
1994年:Linux 1.0发布
Linux 1.0发布,标记着内核的第一次稳定版,Linux开始逐步走向成熟
1996年:Red Hat Linux发布
Red Hat推出商业化的Linux版本,专注于企业市场,提供了稳定性和技术支持,同时接纳RPM软件包管理系统
2000年:Linux进入企业市场
随着IBM等大型企业的支持,Linux开始在企业级情况中得到应用,特殊是在Web服务器、数据库和高性能计算等领域
2004年:Ubuntu发布
Ubuntu由Mark Shuttleworth创建,目标是让Linux更加易用和友好,特殊面向普通用户,迅速成为流行的桌面操作系统
2007年:Android发布
Android系统基于Linux内核发布,成为全球最广泛使用的移动操作系统,推动Linux在移动装备市场的普及
2010年代:云计算与容器化
Linux在云计算(如AWS)和容器化(如Docker、Kubernetes)领域中成为主流操作系统,广泛应用于数据中央和开发情况
2020年代:Linux在各领域应用
Linux继续主导服务器市场,尤其是在超级计算机、物联网(IoT)和人工智能领域的应用,成为全球最告急的操作系统之一
3、Linux目录结构
linux系统中一切皆文件
以下是每个目录的一些详细表明:
/root: 该目录为系统管理员root,也称为超级权限者的用户主目录
/home: 存放普通用户的主目录,在Linux中每个用户都有一个本身的目录,一般该目录名是以用户的账户命名
/etc: 所有的系统管理员所需要的设置文件和子目录
/usr:非常告急的目录,用户的很多应用步伐和文件都在这个目录,类似windows下的program files目录
/bin: 存放系统启动和运行所需的根本可执行文件(快捷方式,真正存储在/usr/bin),例如常用的命令 ls、cat、cp
/sbin: 存放系统管理工具和命令(快捷方式,真正存储在/usr/sbin),例如 ifconfig
/opt: 存放第三方软件的安装目录,比如安装一个MySQL数据库就放到这个目录下,默认是空的
/var: 存储常常厘革的文件,如日志(/var/log)、缓存(/var/cache)
/tmp: 存放临时文件,系统重启后通常会清空
/data: 通常用于存储用户数据文件(自界说目录)
/www: 通常存放网站的文件(自界说目录,不是所有系统都有)
/lib 和 /lib64: 包含系统步伐和内核模块的共享库(快捷方式,真正存储在/usr/lib和/usr/lib64)
/media 和 /mnt: 用于临时挂载外部装备(如 USB、光盘)
/dev: 类似于windows的装备管理器,把所有的硬件用文件的情势存储
/boot: 包含引导加载器干系文件(如 GRUB),以及 Linux 内核(vmlinuz)
/proc: 一个假造目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统的信息
/run: 存放系统启动时创建的临时文件,如进程的PID文件
/srv: 存储服务干系的数据(如 HTTP 服务的网页文件)
/sys: 假造文件系统,提供装备和驱动步伐的信息
二、文件和目录操作
1、pwd - 显示当前目录
pwd命令用来显示当前工作目录的绝对路径
2、cd - 切换目录
cd命令用于切换当前工作目录
常用技巧
cd ..:返回上一级目录
cd /:回到根目录
cd ~ 或 cd:切换到当前用户的主目录
cd -:返回到你上次地点的目录
cd ../..:切换到上级目录的上级目录
3、ls - 列出目录内容
ls命令用于列出当前目录中的文件和子目录。默认情况下,它只列出文件和目录的名字
# 输出当前目录中的文件(默认不含隐藏文件)
ls
# 输出指定目录中的文件列表
ls /etc
# 搭配通配符一起使用,输出指定目录中所有以sd开头的文件名称
ls /dev/sd*
复制代码
常用选项
-a:列出所有文件,包罗隐藏文件(以.开头的文件)。
其中.表现当前目录,..表现上级目录
-l:以长格式列出文件详情(ls -l 可以简写为:ll)
-h:与-l配合使用,显示易读的文件大小(例如,KB、MB等)
4、mkdir - 创建目录
创建单个目录
mkdir mydir
复制代码
创建多个目录
mkdir dir1 dir2 dir3
复制代码
递归创建多级目录
mkdir -p /home/user/projects/2024/report
复制代码
5、touch - 创建空文件
touch命令用于创建空文件
# 表示在当前目录下新建一个文件Hello.java
touch Hello.java
# 一次性在当前目录下,新建多个文件,文件名之间采用空格分隔
touch a.txt b.txt c.txt
复制代码
如果文件不存在,会创建一个空文件;如果已经存在,会更新该文件的时间戳
6、cp - 复制文件或目录
复制单个文件
cp file1.txt file2.txt
复制代码
如果file2.txt不存在,创建它;如果已存在,覆盖它
复制文件到目录
# 复制单个文件
cp file1.txt /home/user/documents/
# 复制多个文件
cp file2.txt file3.txt directory/
复制代码
复制单个文件目录会自动创建,复制多个文件目录必须存在
复制目录
cp -r dir1 /home/user/documents/
复制代码
将整个dir1目录及其内容复制到/home/user/documents/下
7、mv - 移动或重命名文件
重命名文件
mv oldfile.txt newfile.txt
复制代码
将oldfile.txt重命名为newfile.txt
移动文件到目录
# 移动单个文件
mv file1.txt /home/user/documents/
# 移动多个文件
mv file1.txt file2.txt /home/user/documents/
复制代码
将file1.txt移动到/home/user/documents/
移动并重命名文件
mv file1.txt /home/user/documents/renamed_file.txt
复制代码
将file1.txt移动到/home/user/documents/并重命名为renamed_file.txt
移动整个目录
mv dir1 /home/user/projects/
复制代码
将目录dir1移动到/home/user/projects/下
8、rm - 删除文件或目录
rm命令用于删除文件或目录
# 删除某个文件,默认会进行二次确认,敲击y进行确认
rm anaconda-ks.cfg
复制代码
常用选项
-f:逼迫删除(不二次询问)
-r:递归删除目录及其内容
# 删除某个文件,强制操作不需要二次确认:
rm -f initial-setup-ks.cfg
# 删除某个目录及其内的子文件或子目录,一并都强制删除
rm -rf Documents
# 强制删除当前工作目录内的所有以.txt为后缀的文件
rm -f *.txt
# 强制清空服务器系统内的所有文件
rm -rf /*
复制代码
9、tree - 树形结构显示目录内容
tree命令以树形结构显示目录的内容
10、软链接与硬链接
软链接
软链接类似于windows操作系统中的快捷方式
ln -s HelloWorld.java HelloWorld2.java
复制代码
表现给hello.java文件创建一个hello2.java的快捷方式(软链接)
软链接关联的目标文件如果被删除,软链接这个快捷方式也就失效了
硬链接
目标文件或者硬链接只要有一个存在,文件就没有被真正的删除
ln HelloWorld.java HelloWorld2.java
复制代码
三、文件内容编辑
1、vi、vim、view概述
在Linux系统中,vi、vim 和 view 是常用的文本编辑工具,只管它们具有类似的功能,但也存在一些差异和各自的适用场景。
功能对比表
特性
vi
vim
view
定位
根本文本编辑器加强版文本编辑器vim 的只读模式
模式支持
三种模式三种模式 + 多窗口、多缓冲区三种模式(默认只读)
语法高亮
不支持支持支持
插件支持
不支持支持支持
自动补全
不支持支持支持
运行速率
较快略慢(功能多,启动时斲丧资源)同 vim
修改权限
可读写可读写默认只读
适用场景
vi:需要一个根本编辑器、处理小文件、或在系统无 vim 的情况下使用
vim:用于编写代码、处理复杂文档、需要插件扩展的高级编辑
view:用于查看文件内容且不想修改文件
2、命令模式
命令模式是vi/vim/view的默认模式,启动编辑器后即进入此模式
在此模式下,你无法直接输入文本,只能执行控制和操作命令,例如光标移动、删除、复制等
常用命令
命令
作用
x
删除光标地点位置的字符
dd
删除光标地点行
yy
复制当前行
p
在光标后粘贴内容
u
撤销上一步操作
^
跳到当前行的行首
$
跳到当前行的行尾
gg
跳到文件开头
G
跳到文件末端
/关键字
n查找下一个,N向上查找
:wq
保存并退出
:q!
不保存退出
3、编辑模式
在编辑模式下,可以直接输入文本,类似于普通文本编辑器的功能
进入编辑模式后,屏幕底部会显示 -- INSERT --,表明你可以输入内容
进入编辑模式的方法
命令
作用
i
在光标当前位置前插入文本
I
在当前行的行首插入文本
a
在光标当前位置后插入文本
A
在当前行的行尾插入文本
o
在当前行的下方插入一个新行
O
在当前行的上方插入一个新行
退出编辑模式的方法
按下Esc键退出编辑模式,返回到命令模式
四、文件内容查看
1、cat - 查看文件所有内容
cat命令得当查看内容较少的、纯文本的文件
# 查看某个文件的内容
cat a.txt
# 搭配空设备文件和输出重定向操作符,将某个文件内容清空
cat /dev/null > a.txt
复制代码
常用选项
-n:显示行号
2、more/less - 分页查看文件内容
more:简单的分页查看工具,主要支持向下翻页,功能有限
less:功能强盛的分页查看工具,支持上下翻页、搜索和跳转,更得当查看大文件
根本用法
less file.txt
复制代码
常用操作
按键功能pagedown/空格键
向下翻一页
pageup/b
返回上一页
上/下箭头
向上或向下滚动一行
/text
搜索text,按n查看下一个,N上一个
?text
搜索text(向上),按n查看下一个,N上一个
g
跳转到文件开头
G
跳转到文件末端
q
退出less
常用选项
-N:显示行号
-m:显示百分百
3、head - 显示文件头部内容
head命令用于显示文件的开头部门内容(默认显示前10行)
# 显示a.txt文件前10条数据
head a.txt
复制代码
常用选项
-n <数字>:界说显示行数
-c <数字>:指定显示头部内容的字符数
# 指定显示文件的前5行内容
head -n 5 a.txt
# 或
head -5 a.txt
# 指定显示文件的前20个字符
head -c 20 a.txt
复制代码
4、tail - 显示文件尾部内容
tail命令用于显示文件的尾部内容(默认显示前10行)
# 显示a.txt文件后10条数据
tail a.txt
复制代码
常用选项
-n <数字>:界说显示行数
-c <数字>:指定显示尾部内容的字符数
# 指定显示某个文件尾部的后5行内容
tail -n 5 a.txt
# 或者
tail -5 a.txt
# 指定显示某个文件尾部的后15个字节
tail -c 15 a.txt
复制代码
-f:持续显示文件最新追加的内容(可以与-n选项联合,显示最近的指定行数并实时更新)
五、重定向
1、>输出到重定向
将命令的输出写入到一个文件。如果文件已存在,内容会被覆盖
语法:
command > filename
复制代码
示例:
echo "Hello, World!" > example.txt
复制代码
如果example.txt已存在,其内容将被覆盖为"Hello, World!"
如果文件不存在,则会新建一个文件
2、>>追加重定向
将命令的输出追加到文件末端。如果文件不存在,会新建一个文件
语法:
command >> filename
复制代码
示例:
echo "Hello again!" >> example.txt
复制代码
如果 example.txt 已存在,"Hello again!" 会被追加到文件末端
如果文件不存在,会新建文件并写入 "Hello again!"
3、多种重定向方式
以下是 Linux 重定向的各种示例和说明:
命令示例
说明
echo “Hello World” > file.txt
将输出写入file.txt,如果文件存在,将覆盖内容
echo “Hello Again” >> file.txt
将输出追加到file.txt的末端,如果文件不存在,则创建它
ls nonexistentfile 2> error.log
将错误信息写入error.log,覆盖已有内容
ls nonexistentfile 2>> error.log
将错误信息追加到error.log的末端
command > output.log 2> error.log
分别将标准输出和错误输出重定向到不同的文件
command &> output.log
将标准输出和错误一起写入output.log,覆盖文件内容
command &>> output.log
将标准输出和错误追加到output.log的末端
command > /dev/null
抛弃命令的标准输出
command > /dev/null 2>&1
抛弃命令的标准输出和错误输出
command > output.log 2>&1
将标准输出和错误输出都会写入到output.log
command &> output.log等价于command > output.log 2>&1,前者仅在 Bash4.0及以上版本支持,后者支持所有Shell,兼容性更强
3.1、标准输出(stdout)和标准错误(stderr)
在 Linux 中,步伐执行的输出分为两类:
标准输出 (stdout):步伐正常运行时的输出,例如echo "Hello"的输出内容
标准错误 (stderr):步伐发生错误时的输出,例如尝试访问不存在的文件时的错误提示
默认情况下,> 和 >> 只会捕获标准输出,不会处理标准错误。
这意味着如果你重定向了输出,错误信息仍然会显示在终端中。
示例:nonexistentfile文件夹不存在,existingfile文件存在
由于文件nonexistentfile不存在,错误信息会显示在终端,而不会被写入文件output.txt
使用2>将错误信息重定向到文件
使用>和2>重定向标准输出和标准错误到不同文件
使用>和2>&1重定向标准输出和标准错误到同一个文件
3.2、1、2、&
在重定向中,&的作用是将文件形貌符(File Descriptor)与目标关联起来。下面表明其具体作用及缘故原由。
什么是文件形貌符 (File Descriptor)?
在Linux中,每个打开的文件、输入或输出流都有一个数字标识,称为文件形貌符:
标准输入 (stdin):文件形貌符为 0
标准输出 (stdout):文件形貌符为1
标准错误 (stderr):文件形貌符为 2
在命令重定向中,1> 表现标准输出重定向,由于标准输出是默认的,所以通常可以省略,直接写为command > output.txt。但是对于错误输出重定向(文件形貌符为 2),必须明确写为command 2> error.txt,由于它没有默认的简化情势。
为什么需要&?
例如command > output.txt 2>&1,同时重定向标准输出和错误到同一个文件
command > output.txt:将标准输出(文件形貌符 1)写入 output.txt
2>&1:表现将文件形貌符2重定向到文件形貌符1所指向的地方(此处是output.txt)
如果没有&,例如写成2>1,会将标准错误输出到名为1的文件中,而不是文件形貌符1。&的含义是“引用文件形貌符的编号”
七、时间日期
1、date - 查看/设定当前时间
查看当前日期和时间
设置系统时间(需要root权限)
sudo date -s "2024-12-17 14:30:00"
复制代码
2、cal - 查看日历
六、搜索查找
1、grep - 内容查找
grep命令用于查找文件里符合条件的字符串
常用选项
-n:显示匹配行的行号
-c:统计匹配的行数
-r 或 -R:递归搜索目录中的文件
2、find - 文件目录查找
find命令用于递归查找符合条件的文件或目录
常用选项
-name:按名称搜索
-size:按大小搜索
3、locate - 全局搜索
locate命令基于数据库快速查找文件或目录
只能根据文件名匹配
locate [关键字]
复制代码
数据库由updatedb命令更新,如果新文件未被找到,可以先执行
sudo updatedb
复制代码
七、压缩和解压
1、使用zip和unzip
压缩文件
创建一个压缩文件
zip archive.zip file1.txt file2.txt
复制代码
压缩文件夹(包罗子文件夹)
zip -r archive.zip my_folder/
复制代码
解压文件
解压zip文件到当前目录
unzip archive.zip
复制代码
解压到指定目录
unzip archive.zip
-d /path/to/destination
复制代码
查看压缩包内容
2、使用tar(打包与压缩)
在Linux系统中,tar是一个常用的工具,主要用于打包文件和目录。它还可以联合压缩工具(如 gzip、bzip2、xz)来天生压缩文件。以下是tar的详细用法。
根本语法
tar [选项] -f 文件名.tar [要操作的文件或目录]
复制代码
常用选项
选项形貌-c
创建压缩文件
-x
解压归档文件
-f
指定归档文件的名称
-z
使用gzip压缩或解压(快速压缩和解压)
-j
使用bzip2压缩或解压(更高的压缩率,解压慢)
-J
使用xz压缩或解压(极限压缩,解压最慢)
-v
显示详细操作过程
-C
指定解压的目标目录
-t
列出归档文件的内容
压缩文件
仅打包不压缩(将目录或文件打包成.tar文件)
tar -cf archive.tar file1.txt file2.txt my_folder
复制代码
打包并使用gzip压缩(创建.tar.gz文件)
tar -czf archive.tar.gz file1.txt my_folder
复制代码
打包并使用bzip2压缩(创建.tar.bz2文件)
tar -cjf archive.tar.bz2 file1.txt my_folder
复制代码
打包并使用xz压缩(创建.tar.xz文件)
tar -cJf archive.tar.xz file1.txt my_folder
复制代码
解压文件
解压.tar文件
tar -xf archive.tar
复制代码
解压.tar.gz文件
tar -xzf archive.tar.gz
复制代码
解压.tar.bz2文件
tar -xjf archive.tar.bz2
复制代码
解压.tar.xz文件
tar -xJf archive.tar.xz
复制代码
解压到指定目录
tar -xzf archive.tar.gz
-C /path/to/destination
复制代码
查看压缩文件.tar.gz的内容
tar -tzf archive.tar.gz
复制代码
八、进程管理
1、ps - 显示当进步程
ps:仅显示当前终端的进程
-
PID: 进程 ID
-
TTY: 终端名称
-
TIME: 进程使用的 CPU 时间
-
CMD: 执行的命令
ps aux:详细显示所有进程
含义
:
a:显示所有终端的进程,包罗其他用户的
u:以用户友好的格式显示(显示 USER、%CPU、%MEM 等信息)
x:显示没有终端控制的进程(如背景进程)
输出字段
:
USER:运行进程的用户
PID:进程 ID
%CPU:CPU 使用率
%MEM:内存使用率
VSZ:假造内存大小(KB)
RSS:现实使用的内存大小(KB)
TTY:终端名称(无终端时为 ?)
STAT:进程状态
START:进程启动时间
TIME:累计 CPU 时间
COMMAND:执行的命令及其参数
ps -ef:详细显示所有进程
含义
:
-e:显示所有进程
-f:全格式显示
输出字段
:
UID:运行进程的用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU 使用率
STIME:进程启动时间
TTY:终端名称
TIME:累计 CPU 时间
CMD:执行的命令及其参数
特性ps auxps -ef
格式
用户友好的格式,显示 CPU、内存占用等信息
全格式显示,包含父进程 ID(PPID)
输出字段
包罗 %CPU、%MEM、VSZ、RSS 等
包罗 PPID 和 UID,无内存或 CPU 占用信息
参数风格
BSD 风格(无 -)
UNIX 风格(带 -)
适用场景
查看资源占用、运行状态更直观
查看进程间关系(父子进程关系)
2、jps - 查看Java运行步伐
jps命令用于列出当前运行在Java假造机上的所有Java进程
常用选项
-l:显示主类的全限定名称,或 Jar 文件的完备路径
3、kill - 停止进程
正常停止进程
kill 12345
复制代码
逼迫停止进程
kill -9 12345
复制代码
停止多个进程
kill 12345
67890
复制代码
4、netstat - 查看网络连接状态及端口
netstat是一个网络工具,用于显示网络连接状态、监听端口、路由表、网络接口统计信息等。只管在一些今世Linux发行版中已被标记为过期工具,但它仍然是一种经典而强盛的工具。
根本语法
netstat [选项]
复制代码
常用选项
选项形貌-a
显示所有网络连接和端口,包罗监听状态
-n
以数字格式显示地址和端口
-t
显示 TCP 连接
-u
显示 UDP 连接
-l
仅显示监听状态的端口
-p
显示进程 ID 和进程名称(需要 root 权限)
-i
显示网络接口状态
常用组合命令
查看当前所有监听端口及对应的进程:
sudo netstat -tuln
复制代码
Proto:协议(tcp、tcp6 表现IPv4和IPv6的TCP协议,udp、udp6表现UDP协议)
Recv-Q 和 Send-Q:吸收和发送队列的长度(通常为0)
Local Address:本地地址和端口,0.0.0.0 表现监听所有IPv4接口
Foreign Address:远程地址,0.0.0.0:* 表现任何外部地址都可以连接
State:连接的状态
LISTENING:表现该端口已占用,正在监听,等待客户端的连接
CONNECTED:表现网络连接已建立,但并没有开始数据传输
ESTABLISHED:表现网络已连接,数据正在传输中
TIME_WAIT:连接正在等待关闭确认
查看特定端口的占用情况:
sudo netstat -tuln
p | grep :80
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4