![](https://i-blog.csdnimg.cn/blog_migrate/686e5e2d02a3d320ed7b1e1884368718.png)
一、vi和vim编辑器的快捷键
1)复制当前行:在一般模式下,按yy,把光标所在行复制到剪切板
按p,把剪切板中的内容粘贴到光标所在的下一行。
2)复制当前行往下(n)5行:在一般模式下,按(n)5yy,把光标所在行往下5行复制到剪切板
按p,把剪切板中的内容粘贴到光标所在的下一行。
3)在文本文件中查找关键字:在命令行模式下,输入/关键字,回车
按n表示光标查找下一个关键字
4)删除光标所在的当前行:在一般模式下,按dd,删除光标所在的当前行
5)删除光标所在的行往下(n)5行:在一般模式下,按(n)5dd
6)撤销上次编辑的内容:在一般模式下,按u
7)显示行号:命令行模式下,设置文件的行号,取消文件的行号.[命令行下(: set nu) 和(:set nonu)]
总结: yy 、 p、dd wq、 q!、 q
二、linux中的文件和目录操作的命令
1)、查看当前所在目录:pwd
pwd
2)、查看**指定目录**下所有的子目录和文件列表:ls [选项] [指定目录]
|->绝对目录
|->相对目录
ls /home
ls 查看当前目录下所有的子目录和文件列表
ls -l /home :以列表形式显示
ls -a /home:显示指定目录下所有的子目录和文件(包括虚拟的目录)
ls -al /home:以列表形式显示指定目录下所有的子目录和文件(包括虚拟的目录)
3)、**切换目录**:cd 目录名
|->绝对目录:**以盘符开始的目录叫绝对目录**,从盘符开始查找目标目录
cd /opt/testDir
~:**当前用户的根目录。**在任何目录下执行:cd ~,进入当前用户的根目录。
|->相对目录:**以目录名开始的目录叫相对目录**,从当前目录开始查找目标目录
cd testDir
..:当前目录的上一级目录,从的当前目录开始查找它的上一级目录。
.:当前目录 (./**通常情况下可省略**)
xxx.sh====>./xxx.sh
4)**创建目录**:mkdir [选项] 目录名
|->绝对目录
|->相对目录
mkdir /opt/testDir/test1 //在/opt/testDir目录下创建一个目录test1(使用**绝对目录**)
mkdir test2 //在/opt/testDir目录下创建一个目录test2(使用**相对目录**)
mkdir -p /opt/testDir/test3/test4 在/opt/testDir目录下创建目录test3,并且在test3下创建test4(**一次创建多级目录**)
mkdir -p test5/test6
5)、**删除一个空目录**:rmdir 目录名
rmdir test1
rmdir test3
6)、**创建一个或者多个空文件**:touch 文件名列表(文件名之间用**空格隔开**)
touch t1.txt
touch t2.txt t3.txt t4.txt
vi/vim 创建**并打开**
7)、**复制文件或者目录**:cp [选项] source(源) dest(目标)
cp t1.txt test2 //把t1.txt**文件复制到**test2**目录中**
cp -r test2 test5 //把test2**目录复制到**test5**目录中**(**递归地复制目录**)
cp t1.txt test2
8)、**删除文件或者目录**:rm 文件名或者目录名
rm t1.txt 提示删除文件 输入y或n
rm -f t2.txt 强制删除文件
rm -r test2 提示递归删除目录
rm -rf test5 强制递归删除目录
rmdir只能删一个空目录 dnp!
9)、**移动目录或者文件**(**剪切**):mv source(源) dest(目标)
mv test.txt test1
mv test1 test2
mv t3.txt t3_new.txt **文件重命名** **目录也可以重命名**
*如果目标中已经存在该文件或者目录,则会提示是否覆盖。
10)、**查看文件内容:cat 文件名**
文件内容一次性显示出来。
cat t4.txt
cat -n t4.txt 显示行号
11)、分页查看文件文件内容:more 文件名 一次性加载文件所有内容到内存,分页显示
按回车翻一行、按空格翻一页
more t4.txt
12)、分页查看文件文件内容:less 文件名 分页加载文件所有内容到内存,分页显示
less t4.txt
按回车翻一行、按空格翻一页,按q退出查看
13)、查看文件的头10行:head [选项] 文件名
head t4.txt
head -n 5 t4.txt
14)、查看文件的后10行:tail [选项] 文件名
tail t4.txt
tail -n 5 t4.txt
总结: cd 、 ls -al(a是all l是list)、 mkdir、 rm、 touch 、 cp、 mv、cat ........
压缩(打包)或者解压多个文件和目录: 用这个!
tar [选项] 目标压缩包名称(xxx.tar.gz) 文件或者目录列表
|->c:打包或者压缩
tar [选项] 压缩包名(xxx.tar.gz) -C 解压目录名:将指定的.tar.gz压缩包解压到当期目录(或者指定目录)
|->x: 解压
tar -zcvf xxx.tar.gz 文件或者目录列表
tar -zxvf xxx.tar.gz -C 解压目录名
tar -zcvf mytar.tar.gz mytest.zip ret.txt t1.txt test2
tar -zxvf mytar.tar.gz -C /opt/testDir/test5
Linux中**文件或者目录的权限管理**
1)准备工作:
一个用户至少属于一个组,也可以属于多个组;
一个文件或者目录也必须属于一个,并且只能属于一个组;
在一个文件或者目录看来,linux系统中所有的用户可以分为三类:
所有者:
同组用户:
其它组用户:
2)、**文件或者目录的三种权限**:
在linux中,**任何文件或者目录都有三种权限**:读(Read)、写(Write)、执行(Execute)
**对于文件而言**:
读:可以读取、查看文件的内容, 比如:cat、more、less、head、tail等。
写:可以修改文件的内容,比如:vi或者vim等
执行:如果该文件是**可执行文件**(.sh),可以直接运行,比如:./xxx.sh。
**对于目录而言**:
读:可以读取、查看目录下边的内容,比如:ls等
写:可以修改目录中的内容,创建子目录、删除子目录、创建文件、删除文件、重名文件或者目录
执行:可以进入该目录, 比如:cd等。
3)、**文件或者目录的权限控制**:
在linux中,任何一个文件或者目录都有**三部分权限**:所有者权限、同组用户权限、其它组用户权限。
第一部分权限:**所有者权限**,文件或者目录的所有者对该文件所拥有的权限,使用**r、w、x分表表示读、写、执行的权限**。比如:rwx:拥有读写执行的权限,r-x:拥有读和执行的权限,r--:只拥有读的权限,---:没有任何权限。
第二部分权限:**同组用户权限**,文件或者目录的同组用户对该文件所拥有的权限,使用r、w、x分表表示读、写、执行的权限。
第三部分权限:**其它组用户权限**,文件或者目录的其它组用户对该文件所拥有的权限,使用r、w、x分表表示读、写、执行的权限。
4)、**查看文件或者目录的权限**:
ls -aul
5)、**修改文件或者目录的权限**:chmod dnp!
用r、w、x分辨表示读、写、执行的权限,
用u、g、o、a分别表示给所有者、同组用户、其它组用户、所有用户修改权限
用+、-、=分别表示给指定的用户增加、减少、设置对应的权限
chmod g-w,o+w t5.txt
chmod g=rwx t5.txt
chmod a-r t5.txt
6)、**使用数字的方式修改文件或者目录的权限**: **用这个!!!!!**
每一个权限可以用一个数字来表示:
r、w、x
4、2、1
2^2 2^1 2^0
每一个文件或者目录都有三部分权限,每一部分权限都可以用一组数据之和来表示,三部分权限就是一组三个数据序列:
rw- r-x r-x
6 5 5
rwx r-x -wx
753:
rwxrwxrwx
777:
chmod 777 t5.txt
chmod 753 t5.txt
linux中的**进程管理**:
linux中的**进程管理**:
线程:一个程序的线路
进程:一个程序的执行,一个进程占用一个端口。
查看正在运行的进程:ps
ps //只会显示应用进程
ps -e //显示所有进程
ps -ef //以全格式的形式显示所有进程
//用于查看linux系统中某一些软件或者应用是否处于启动状态
ps -ef|grep mysql
关闭进程:
使用ps命令查看进程的PID
使用命令kill -9 PID
实际问题:cpu 占用过多
1.定位 用top定位哪个进程对cpu的占用过高
![](https://i-blog.csdnimg.cn/blog_migrate/cd8e48565aec30b7594ad91cfbcaa84a.jpeg)
H可以查看所有存在的线程 , tid是线程id , pid是process 进程id , -eo后面跟感兴趣的内容 2. ps H -eo pid,tid,%cpu | grep 进程id (用ps命令进一步定位是哪个线程引起的cpu占用过高)
看下面的图 pid:32655 tid:32665 %cpu: 99.5
3. jstack 进程id jstack是一个jdk工具
3.1 输入: jstack 32655 (注意是进程
3.2 把32665 由十进制转成十六进制 得到7f99 定位到thread1
进一步定位到问题代码的源码行号
![](https://i-blog.csdnimg.cn/blog_migrate/af68ec1277ec117a7b7e8fb2931205ba.jpeg)
systemctl status firewalld 查看防火墙运行状态
systemctl stop firewalld 关闭防火墙
systemctl start firetalld 开启防火墙
systemctl enable firewalld 设置防火墙开机启动
**YUM包管理**:是一种基于RPM的**软件包管理工具**,它能够**从指定服务器上自动下载RPM包并且自动安装,可以自动处理软件包之间的依赖关系**。 **类似maven**
查看当前系统中已经安装的rpm软件包:yum list installed|grep firefox
卸载rpm软件包:yum remove firefox.x86_64
安装rpm包:yum install firefox