Linux常用命令总结
- ls: 列出目录中文件- ll: 展示当前目录中所有文件的详细信息- cd:切换目录- pwd:显示当前的目录- touch 文件名创建一个文件- mkdir:创建一个新的目录- rmdir:删除一个空的目录 (不常用此命令,常用 rm -rf 文件名)- cp: 复制文件或目录- rm: 移除文件或目录- mv: 移动文件与目录,或修改文件与目录的名称
说明:Linux命令格式说明
command [-options] [parameter]
说明:
command: 命令名
[-options]: 选项,可用来对命令进行控制,也可以省略
[parameter]: 传给命令的参数,可以是零个、一个或者多个
注意:
[] 代表可选
命令名、选项、参数之间有空格进行分隔
1. 基础的文件操作指令
- ls: 列出目录中文件
- ll : 展示当前目录中所有文件的详细信息
- cd:切换目录
- pwd:显示当前的目录
- touch 文件名 创建一个文件
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录 (不常用此命令,常用 rm -rf 文件名)
- cp: 复制文件或目录
- rm: 移除文件或目录
- mv: 移动文件与目录,或修改文件与目录的名称
你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
常用的一些命令说明:
1.cd 命令
作用: 用于切换当前工作目录,即进入指定目录
语法: cd [dirName]
特殊说明:
~ 表示用户的home目录
. 表示目前所在的目录
.. 表示目前目录位置的上级目录
举例:
cd .. 切换到当前目录的上级目录
cd ~ 切换到用户的home目录
cd /usr/local 切换到/usr/local目录
2. rm ( 移除文件或目录 )
选项与参数:
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
常用的格式 : rm -rf 文件夹/文件名
可以尝试一下 rm -rf / (狗头保命)
3. cat 用于显示文件内容
可选参数
-n: 由1开始对所有输出的行数编号
4. more 以分页的形式显示文件内容
作用: 以分页的形式显示文件内容
语法: more fileName
操作说明:
回车键 向下滚动一行
空格键 向下滚动一屏
b 返回上一屏 *
q或者Ctrl+C 退出more
举例:
more /etc/profile 以分页方式显示/etc目录下的profile文件内容
5.tail 命令(常用于动态查看日志)
作用: 查看文件末尾的内容
语法: tail [-f] fileName
说明:
-f : 动态读取文件末尾内容并显示,通常用于日志文件的内容输出
举例:
tail /etc/profile 显示/etc目录下的profile文件末尾10行的内容
tail -20 /etc/profile 显示/etc目录下的profile文件末尾20行的内容
tail -f /yfs1024/my.log 动态读取/yfs1024目录下的my.log文件末尾内容并显示
另外说到了这里,还有一个 echo
命令
假如现在我们想把一段配置追加
到/etc/profile 中,此时就可以使用echo命令 配合 >>
示例: echo JAVA_HOME=“xxxx” >> /etc/profile
另外如果我们想把文件中的所有的内容覆盖,此时可以配合 >
示例: echo JAVA_HOME=“xxxx” > /etc/profile
此时profile下就只有JAVA_HOME="xxxx"
6,拷贝移动命令 cp
作用: 用于复制文件或目录
语法: cp [-r] source dest
说明:
-r: 如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
举例:
cp hello.txt yfs1024/ 将hello.txt复制到yfs1024目录中
cp hello.txt ./hi.txt 将hello.txt复制到当前目录,并改名为hi.txt
cp -r yfs1024/ ./temp/ 将yfs1024目录和目录下所有文件复制到temp目录下
cp -r yfs1024/* ./temp/ 将yfs1024目录下所有文件复制到temp目录下
7, 打包和压缩命令
注意:
包文件后缀为.tar表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz表示打包的同时还进行了压缩
作用: 对文件进行打包、解包、压缩、解压
语法: tar [-zcxvf] fileName [files]
包文件后缀为.tar表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz表示打包的同时还进行了压缩
说明:
-z: z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
-c: c代表的是create,即创建新的包文件
-x: x代表的是extract,实现从包文件中还原文件
-v: v代表的是verbose,显示命令的执行过程
-f: f代表的是file,用于指定包文件的名称
举例:
打包
tar -cvf hello.tar ./* 将当前目录下所有文件打包,打包后的文件名为hello.tar
tar -zcvf hello.tar.gz ./* 将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz
解包
tar -xvf hello.tar 将hello.tar文件进行解包,并将解包后的文件放在当前目录
tar -zxvf hello.tar.gz 将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录
tar -zxvf hello.tar.gz -C /usr/local 将hello.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录
小技巧:
首先认识一个单词 create 创建
其次看一下键盘
zxcvf
这几个键是连着的, 不同就是x,c使用的场景, 如果是创建(create)压缩文件,那么就是zcvf 如果是解压文件 zxvf 如果忘了看一下键盘就可以想起来,很实用
2 vim编辑器
首先要知道 vim编辑器分为三个模式
命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
作用: 对文件内容进行编辑,vim其实就是一个文本编辑器
语法: vim fileName
说明:
1). 在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件。如果指定的文件不存在则新建文件。
2). vim在进行文本编辑时共分为三种模式,分别是 命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)。这三种模式之间可以相互切换。我们在使用vim时一定要注意我们当前所处的是哪种模式。
三种模式:
- 命令模式
A. 命令模式下可以查看文件内容、移动光标(上下左右箭头、gg、G)
B. 通过vim命令打开文件后,默认进入命令模式
C. 另外两种模式需要首先进入命令模式,才能进入彼此
命令模式指令 | 含义 |
---|---|
gg | 定位到文本内容的第一行 |
G | 定位到文本内容的最后一行 |
dd | 删除光标所在行的数据 |
ndd | 删除当前光标所在行及之后的n行数据 |
u | 撤销操作 |
shift+zz | 保存并退出 |
i 或 a 或 o | 进入插入模式 |
-
插入模式
A. 插入模式下可以对文件内容进行编辑
B. 在命令模式下按下[i,a,o]任意一个,可以进入插入模式。进入插入模式后,下方会出现【insert】字样
C. 在插入模式下按下ESC键,回到命令模式 -
底行模式
A. 底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作
B. 在命令模式下按下[:,/]任意一个,可以进入底行模式
C. 通过/方式进入底行模式后,可以对文件内容进行查找
D. 通过:方式进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)底行模式命令 含义 :wq 保存并退出 :q! 不保存退出 :q 退出 :set nu 显示行号 :set nonu 取消行号显示 :n 定位到第n行, 如 :10 就是定位到第10行
3 查找命令
1. find
作用: 在指定目录下查找文件
语法: find [搜索范围] [选项]
选项说明:
-name<查询方式> 按照指定的文件名查找模式查找文件
-user <用户名> 查找指定的文件名所有文件
-size<文件大小> 按照指定的文件大小查找文件
举例:
find . –name "*.java" 在当前目录及其子目录下查找.java结尾文件
find /yfs1024-name "*.java" 在/yfs1024目录及其子目录下查找.java结尾的文件
示例1:
查询所有的nginx.conf文件的位置
示例2:
按照拥有者查找: 查找/opt目录下的,用户名称为ngls
find /home -user ngls
示例3:
查找整个linux系统下大于200M的文件( +n 大于 -n 小于 n等于)
find / -size +200M
2. grep命令
作用: 从指定文件中查找指定的文本内容
语法: grep word fileName
可选参数说明:
-i:忽略大小写进行匹配。
-v:反向查找,只打印不匹配的行。
-n:显示匹配行的行号。
-r:递归查找子目录中的文件。
-l:只打印匹配的文件名。
-c:只打印匹配的行数。
举例:
grep Hello HelloWorld.java 查找HelloWorld.java文件中出现的Hello字符串的位置
grep hello *.java 查找当前目录中所有.java结尾的文件中包含hello字符串的位置
比如说在文件夹中有一个nginx.conf文件,此时我们需要找到所有的server
关键字
此时就可以显示出当前文件所有server
关键字存在的行信息.
如果我们想要修改,此时就可以配合vim 编辑器来使用,这也是我们常用的手段
如下; +17 代表编辑多少行
此时就会自动的锁定到对应的位置.
3. 在vim编辑器中查找字段
说明: 这种方式我们不常用, 因为一般修改都是拷贝到本地修改
在命令模式下 按下/
后面加查找的关键字就可以找到第一个, 如果想要往下查找其他内容可以摁n
,就可以找到下一个关键字的位置.
4. locate
locate指令可以快速定位文件路径.locate 指令数据库实现快速定位给定的文件.locate指令无需遍历整个文件系统,查询速度较快.为了保证查询的正确性.需要定期的更新locate
updatedb 指令来创建和更新locate数据库
4 文件的属性
基本属性
使用ll 或者 ls -l 查看完整的属性信息
在etc下使用ll
命令可以看到文件的详细信息
上面的文件中第一个属性用”d”表示,"d”代表该文件是一个目录文件
常见的三个:
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档 ( link file );
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。
上面分为三个组 ,每个组都有三个属性,问题来了我们怎么修改权限呢?
* chmod命令
语法: chmod 各个组的权限值 文件/文件夹
Linux对每个不同的权限用数字表示其中
r : 4
w: 2
x:1
用三个的和来表示当前组的权限, 是不是有点不太理解? 咱们看一下下面的图.
红色框框框住的是一个组, 第一个组是RWX
,对应的就是4 + 2 + 1 = 7 第二个组是R-X
,对应就是4 + 0 + 1 = 5, 第三组是r--
, 对应的就是4 + 0 + 0 = 4
修改当前文件为以下权限的命令如下
chmod 754 filetest
5 文件上传&下载
lrzsz 是用于在Linux系统中文件上传下载的软件. 对于lrzsz的安装,我们需要通过第三种软件安装方式yum来进行安装。这里,我们先对yum做一个简单介绍。
yum list lrzsz // 搜索安装包
yum install lrzsz.x86_64 // 在线安装
rz 上传
sz 文件名 下载
6 前台启动和后台启动(先看补充的7)
操作系统中,前台进程和后台进程有什么区别?特征是什么?
后台程序基本上不和用户交互,优先级别稍微低一点
前台的程序和用户交互,需要较高的响应速度,优先级别稍微高一点
示例: 此时需要将 helloworld-1.0-SNAPSHOT.jar
后台启动
java -jar helloworld-1.0-SNAPSHOT.jar & // 后面的&代表是后台启动
陆续补充中~~~~~
7 进程管理
ps命令
1) 在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID 号(pid,进程号)。
2) 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
3) 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
显示系统执行的进程:
ps
命令是用来查看目前系统中,有哪些正在执行的进程,以及他们执行的状况.
说明:
-a 显示当前终端的所有进程消息
-u 以用户的格式显示进程信息
-x 显示后台进程运行的参数
-e 显示所有的进程
-f 全格式
使用 ps -aux 可以查看一下进程信息
对于 stat 列这里做一个说明. (资料来自Claude, 可能会有错,大致了解一下即可)
- R(Running):运行,表示进程正在运行或在运行队列中等待。
- S(Sleeping):睡眠,表示进程正在等待某个条件的形成或接受到信号。
- D(Disk Sleep):表示进程正在等待磁盘IO操作结束。短期等待
- s-表示该进程是会话的先导进程
- N-表示进程拥有比普通优先级更低的优先级
- Z(Zombie):表示进程已终止但父进程还未向系统回报信息。僵死进程
- T(Stopped):暂停,表示进程收到SIGTSTP信号后暂停运行。被跟踪或者被停止
- t(Tracing Stop):表示进程在被调试时暂停运行。
- X(Dead):死亡,表示进程已经结束,但是父进程还没有回收它的信息。
- x(Dead):死亡,表示进程结束且被回收。
- K(Wakekill):表示进程处于不可中断的睡眠状态,即使接收到信号也不会唤醒。
- W(Paging):表示进程正在进行换页操作,无法调度执行。
- P(Parked):表示进程已经准备就绪,但是还没有被调度执行。
s+表示:
- 进程正在运行中,正在占用CPU执行
- 进程准备就绪,正在运行队列中等待CPU调度
注意: 在这里可能会发现一下子把所有的进程信息都够显示了,那么我们想一部分一部分的查看应该怎么办呢?
Linux提供了 一个叫做管道的技术 名字很高大上其实很好理解 首先了解这个符号
|
将竖线表示管道, 作用呢, 就是将符号前面的输出结果作为后面的输入结果.
比如上面查看进程的信息,我们就将查询之后的结果 通过管道在进一步的处理, 其实也可以理解为java 中的stream流, 像流水线一样,一步一步的处理, 对于结果就可以使用more, grep ,tail 等对文本操作的命令,进行具体的查看, 处理如下
ps -aux | more -- 此时就会分页查询 空格往下翻页
ps -aux | grep nginx -- 此时就可以查看关于nginx 的进程信息
如果细心观察会发现第一行有个grep , 其实这里可以理解为 当前命令也是一个进程 因为当前进程也包含nginx 所以也会被扫描出来.
下面可以做一个测试, 比如说 输入一个没有的进程关键字 rediss
, 此时发现还会有, 那么毋庸置疑就是当前命令的进程
下面来看关于ps命令 巨巨巨巨巨常用的形式
ps -ef | grep 关键词 – 这里的关键词就是想要查询的应用的名称 比如 mysql nginx redis
终止进程 kill 和 killall
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。
kill [选项] 进程号(功能描述:通过进程号杀死/终止进程)
killall 进程名称(功能描述:通过进程名称杀死进程,`包括子进程`,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项:
-9 表示强迫进程立即停止
常用的就是先通过 ps -ef | grep 关键字
查看进程号 信息的第二列
然后通过 kill -9 进程号
进行关闭进程, 这种方式相对暴力
8 监控网络状态
查看系统网络情况netstat
基本语法
netstat [选项]
选项说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用
常用也是配合管道使用 示例如下
netstat -anp | grep XXXX
9 服务管理
在 CentOS7.0 后 很多服务不再使用 service ,而是 systemctl
基本语法:
systemctl [start | stop | restart | status] 服务名
systemctl 指令管理的服务在 /usr/lib/systemd/system 查看
在 /usr/lib/systemd/system 查看,比如说防火墙的服务
那么关闭防火墙的命令就是systemctl stop firewalld.service
这里的具体的服务名称可能会忘,那么就多按tab键
让Linux提示
这里用 d
开头的服务举例子, 示例如下
此时就会提示你d开头的服务,然后再选择,就很方便
systemctl stop firewalld.service -- 关闭防火墙
systemctl status firewalld.service -- 查看防火墙的状态
systemctl start firewalld.service -- 开启防火墙
设置服务状态
systemctl list-unit-files [ | grep 服务名] (查看服务开机启动状态, grep 可以进行过滤)
systemctl enable 服务名 (设置服务开机启动)
systemctl disable 服务名 (关闭服务开机启动)
systemctl is-enabled 服务名 (查询某个服务是否是自启动的)
示例: 比如说查看firewalld
, 即防火墙的状态 这里是开机自启, 当然也可以使用 systemctl is-enabled 服务名来查看
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,
比如(mysqld , sshd,防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。示例如下
对于服务其实我们常用的就是防火墙的一些配置, 比如开放端口, 关闭端口.上图已经很清晰了, 下面就对具体的指令来做一个说明和演示
firewall 指令 (permanent 永久)
打开端口: firewall-cmd --permanent --add-port=端口号/协议
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
重新载入,才能生效 : firewall-cmd --reload
查询端口是否开放: firewall-cmd --query-port=端口/协议
查看防火墙的基本信息: firewall-cmd --list-all
防火墙的设置
1. 使用 firewall-cmd --list-all
查看开放的端口
可以看到此时6379端口是在开放, 此时我们可以通过 关闭端口命令关闭此端口
2. 使用firewall-cmd --permanent --remove-port=端口号/协议
关闭端口
移除端口以后再查询会发现还有这个端口? 这是为什么, 此时可以理解为 移除的命令只是将内存中的移除, 但是实际的磁盘中的配置并没有移除, 此时就需要通过加载命令,将内存中的数据写到磁盘中, 如下:
3. 放开端口 firewall-cmd --permanent --add-port=端口号/协议
此此时就和上面一样, 在更新配置之后一定要加载一下, 这样才是真正的配置完成
另外在Linux还有一个概念叫做运行级别
,这里简单的提一下做一个简单的了解一般不会涉及
运行级别: 用于控制系统启动时运行的进程和服务。不同的运行级别对应不同的系统配置和提供的服务。
Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5
运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2:多用户状态(没有 NFS),不支持网络
运行级别 3:完全的多用户状态(有 NFS),无界面,登陆后进入控制台命令行模式
运行级别 4:系统未使用,保留
运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
开机的流程说明:
说明:
开发中常用命令应该基本就这些了,如果还有未提及且以后我用到的话会继续的补充,兄弟们加油!!!因为自己还在学习中, 可能文章中一些描述可能会有一些问题, 也可能手误打错了指令, 若您发现还望指正
更多推荐
所有评论(0)