vi 和 vim 编辑器

编辑文件时有三种模式,一般模式,编辑模式与命令模式。

当使用 vi 或 vim进入的是一般模式,在这个模式下可以查看文本内容,也可以切换为编辑模式与命令模式。

一般模式通过 i 或者 a 进入编辑模式。

一般模式通过 : 或者 / 进入命令模式。

vi 与 vim 快捷键(常用)

一般模式

  • 拷贝当前行 yy,拷贝多行(如3行)3y ,粘贴输入p

  • 删除当前行dd,删除多行(如3行)3d

  • 移动光标到最末和 G (这里是大写G)也可以使用shift + g

  • 移动光标到首行 gg (这里是小写gg)

  • 撤销上一步的动作 u

  • 移动到指定行,(如第5行) 先输入5,在输入G 或者shift + g

命令模式

设置行号 :set nu 取消行号 :set nonu

查找关键字 /关键字,输入回车开始查找,输入n查找下一个

保存退出 :wq

退出 :q

强制退出,不保存:q!

文件目录类指令

pwd:查看当前目录的绝对路径

ls [选项] [目录或文件]:查看文件或者目录信息

ls选项:

-a:显示当前目录所有的文件和目录包括隐藏

-l:以列表的方式显示信息

cd [目录]:切换到指定目录(可以写绝对路径或相对路径)

cd ~:回到当前用户的家目录

cd ..:回到上一级目录

mkdir [选项] [目录名称]:创建目录,(可以写绝对路径或相对路径,绝对路径最后一个/后为目录名称)

mkdir选项:

-p:创建多级目录

rmdir [选项] [目录名称]:删除目录,(可以写绝对路径或相对路径,绝对路径最后一个/后为目录名称)

rmdir删除的是空目录,目录下有内容无法删除,一般使用 rm -rf 进行删除

touch [文件名称]:创建一个文件

cp [选项] [文件或目录地址] [目标目录地址]:拷贝文件或目录到指定目录(可以写绝对路径或相对路径)

cp选项:

-r:递归复制整个文件夹

rm [选项] [文件或目录地址]:移除文件或目录

rm选项:

-r:递归删除

-f:强制删除不提示

mv [文件或目录地址] [目标目录地址或文件名称]:移动文件或重命名(可以写绝对路径或相对路径)

# 重命名(将/root/test.txt重命名为test01.txt)
mv /root/test.txt test01.txt
# 移动文件(将/root/test.txt移动到/home下)
mv /root/test.txt /home

cat [选项] [文件地址]:查看文件,cat不可以修改文件,

浏览大文件时会结合more来使用 cat -n /home/test.txt | more

cat选项:

-n:显示行号

more [文件地址]:more是基于vi编辑器的文本过滤器,全屏的方式按页显示文本内容。

常用快捷键:

空格键:下一页

回车键:下一行

q:退出

ctrl+f:向下滚动一屏

ctrl+b:向上滚动一屏

=:输出当前的行号

:f:输出文件名和当前的行号

less [文件地址]:less用来分屏查看文件,与more类似,查看超大文件有优势,它是动态加载,比如看几十MB的文件时,它占用的内存更小。

常用快捷键:

空格键:下一页

pagedown:下一页

pageup:上一页

/关键字:向下搜索关键字,n 向下查找,N 向上查找

?关键字:向上搜索关键字,n 向上查找,N 向下查找

q:退出

echo [选项] [输出内容]:输出内容到控制台,常用于sh脚本输出文本。

head -n [行数] [文件地址]:显示文件开头部分内容 head -n 5 test.txt,输出test.txt前5行。

tail [选项] [文件地址]:显示文件尾部内容。

tail选项:

-n 行数:-n 5为输出结果5行内容,不加-n 默认为10行。

-f:实时查看文件内容,常常用于日志查看。

>:输出重定向,ls-l > text.txt,ls-l 指令打印到控制台的内容写入text.txt中(覆盖写

>>:追加,ls-l > text.txt,ls-l 指令打印到控制台的内容追加到text.txt的尾部

ln -s [源文件或者目录] [软链接名]:给源文件创建一个软链接(类似于windows的快捷方式)

history:查看执行过的历史命令,也可以执行历史命令

history:显示所有的使用过命令

history 5:显示最近使用过的5个命令

!5:执行历史编号为5的命令

find [搜索范围] [选项] [关键字]:在指定范围内查看文件或者目录

find选项

-name:指定文件名称查找(关键字为文件名称)

-user:查找属于指定用户的目录(关键字为用户名称)

-size:根据文件大小查找 +n 大于 -n小于 n等于 单位有k,M,G(关键字为文件大小,如 +200M)

grep 和 管道符 | :grep过滤查找,管道符将前一个命令的结果传递给后面命令进行处理

案例:查看test.txt文件中包含hello的内容,cat test.txt | grep hello

压缩和解压

gzip/gunzip:gzip用于压缩文件,gunzip用于解压文件(只可以压缩文件)

gzip [文件]:压缩文件,压缩为.gz文件

gunzip [.gz文件]:解压

zip/unzip:zip压缩文件,unzip解压

zip -r xxx.zip:压缩文件 -r 递归压缩

unzip -d [指定目录] xxx.zip:解压,-d可以指定目录

tar [选项] [xxx.tar.gz] [打包内容]:打包指令,打包为.tar.gz文件

tar选项:

-c:产生.tar打包文件

-v:显示详细信息

-f:指定压缩后的文件名

-z:打包同时压缩

-x:解包.tar文件

一般打包为 -zcvf ,解包为 -zxvf

Linux 进程(服务)

在Linux中,每个执行的程序都称为一个进程,每个进程都分配一个ID号(PID)

每个进程都可能以两种方式存在,前台和后台。

一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

ps [选项]:命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状态,可以不加任何选项。

PS选项:

-a:显示当前终端的所有进程信息

-u:以用户的格式显示进程信息

-x:显示后台进程运行的参数

-e:显示所有进程

-f:全格式

PS显示的信息:

PID:进程识别号

TTY:终端机号

TIME:此进程所占CPU时间

CMD:正在执行的命令或进程名

指令: ps -aux | grep xxx

System V展示风格

USER:用户名称

PID:进程号

%CPU:进程占用CPU的百分比

%MEM:进程占用物理内存的百分比

VSZ:进程占用虚拟内存大小(KB)

RSS:进程占用物理内存大小(KB)

STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,2-僵死进程,T-被跟踪或者被停止等等

STARTED:进程的启动时间

TIME:CPU时间,即进程使用CPU的总时间

COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

指令: ps -ef l grep xxx

BSD风格

UID:用户ID

PID:进程ID

PPID:父进程ID

C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/0密集型运算,执行优先级会提高

STIME:进程启动的时间

TTY:完整的终端名称

TIME:CPU时间

CMD:启动进程所用的命令和参数

kill [选项] [进程号]:通过进程号杀死/终止进程

killall [进程名称]:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢

时很有用

kill选项

-9:表示强迫进程立即停止

pstree [选项]:查看进程树,可以更加直观的来看进程信息

pstree选项

-p:显示进程的PID

-u:显示进程的所属用户

top [选项]:top与ps命令相似,都是用来显示正在运行的进程,不同的是top会持续更新正常运行的进程。

top选项:

-d 秒数:指定top命令每隔几秒更新,默认是3秒

-i:使top不显示任何限制或者僵死进程

-p:通过指定监控进程ID来监控某个进程的状态

在top中可以进行交互

top交互快捷键

P:以CPU使用率排序(默认)

M:以内存使用率排序

N:以PID排序

K:关闭进程,输入后再输入进程ID,之后可以输入9与kill -9同理

q:退出

top详解

top - 17:52:24 up 256 days, 18:53, 1 user, load average: 0.04, 0.07, 0.06

这行显示了系统运行的时间(256天,18小时53分钟),当前登录的用户数(1个用户),以及过去1分钟、5分钟和15分钟内的平均负载(分别为0.04、0.07、0.06)。

Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie

显示系统中有多少进程正在运行。这里有114个进程,其中1个正在运行,113个处于睡眠状态,没有停止或僵尸进程。

%Cpu(s): 4.0 us, 0.3 sy, 0.0 ni, 95.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

us 是用户进程使用CPU的百分比 (4.0%)

sy 是内核进程使用CPU的百分比 (0.3%)

ni 是优先级调整过(nice过)的进程使用CPU的百分比 (0.0%)

id 是空闲时间所占的百分比 (95.7%)

wa 是等待I/O操作所占的百分比 (0.0%)

hi 是处理高优先级实时进程所占的百分比 (0.0%)

si 是处理低优先级(idle)进程所占的百分比 (0.0%)

st 是虚拟化等待时间所占的百分比 (0.0%)

KiB Mem : 1881264 total, 76524 free, 1126296 used, 678444 buff/cache

显示内存使用情况。总共有1881264 KiB的内存,其中76524 KiB是空闲的,1126296 KiB是被使用的,而678444 KiB被用于缓冲区和缓存。

KiB Swap: 0 total, 0 free, 0 used. 496412 avail Mem

这一行展示交换空间的情况。在这个例子中,没有使用交换空间(全部为0)。最后一项“avail Mem”表示可用的内存,即如果需要可以立即用于运行进程的内存量。

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

25650 root 20 0 2002448 441896 19764 S 0.0 23.5 5:20.07 java

PID (Process ID): 进程的唯一标识符,在这个例子中是25650。

USER: 正在执行该进程的用户的名称,在这里是指 root 用户。

PR (Priority): 进程的静态优先级,通常是一个数字,这里的值是20。

NI (Nice Value): 进程的优先级调整值,它决定了进程的优先级高低,值为0表示默认优先级。

VIRT (Virtual Memory): 进程使用的虚拟内存总量(以KiB为单位),这里是2002448 KiB。

RES (Resident Set Size): 进程实际使用的物理内存大小(以KiB为单位),这里是441896 KiB。

SHR (Shared Memory): 进程使用的共享内存大小(以KiB为单位),这里是19764 KiB。

S: 进程的状态标志,可能的值包括:

D 不可中断的睡眠状态(通常是在等待 I/O)

R 运行或可运行状态

S 睡眠状态(正在等待某个条件)

T 跟踪或停止状态

Z 僵尸状态(进程已完成但其父进程尚未读取其退出状态) 在这个例子中,状态标志为 S,表示该进程处于睡眠状态。

%CPU: 进程使用的CPU百分比,在这里为0.0%,意味着当前没有占用CPU资源。

%MEM: 进程使用的物理内存百分比,这里是23.5%,基于前面提到的总的物理内存大小。

TIME+: 进程已经累积使用的CPU时间,这里是 5:20.07,表示该进程总共使用了大约5小时20分钟7秒的CPU时间。

COMMAND: 正在运行的命令或可执行文件的名称,在这里是指 java 进程。

服务Service与防火墙管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比

如(mysqld,sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

service指令:

service 服务名 [ start | stop | restart | reload | status ]

service指令管理的服务在/etc/init.d查看。

在CentOS7.0后很多服务不再使用service,而是使用systemctl。

systemctl管理指令

systemctl [ start | stop | restart | status] 服务名

systemct指令管理的服务在/usr/lib/systeind/system查看

systemctl设置服务的自启动状态

systemctl list-unit-files | grep 服务名:查看服务开机启动状态,grep可以进行过滤

systemctl enable 服务名:设置服务开机启动

systemctl disable 服务名:关闭服务开机启动

systemctl is-enabled 服务名:查询某个服务是否是自启动的

防火墙相关命令

查看状态:systemctl status firewalld

(Active: active (running)为正在运行,Active: inactive (dead)为关闭)

临时关闭防火墙(开机启动):systemctl stop firewalld

永久关闭防火墙(禁止开机启动):systemctl disable firewalld

临时启动防火墙:systemctl start firewalld

开机自启防火墙:systemctl enable firewalld (可能需要再次运行临时启动防火墙命令)

firewall 指令(防火墙工具)

打开端口:firewall-cmd --permanent --add-port=端口号/协议

关闭端口:firewall-cmd --permanent --remove-port=端口号/协议

重新载入,才能生效:firewall-cmd --reload

查询端口是否开放:firewall-cmd --query-port=端口/协议

如何查看端口/协议

netstat -anp | more

注意:如果找不到netstat命令,则需要安装net-tools

yum install net-tools -y

rpm包的管理

rpm -qa:查询所有安装的rpm软件包

rpm -qa | grep xx:查询已安装的rpm列表

rpm -e [RPM包的名称]:卸载rpm包

rpm -ivh [RPM包的全路径名称]:安装rpm包,i=安装,v=提示,h=进度条

yum包管理器

yum list | grep xx:查询yum服务器是否又需要安装的软件

yum install xxx -y:安装

yum命令的-y表示在安装过程中需要交互时自动回答yes

切换 yum 源,解决下载慢的问题

# b备份
mv /etc/yum.repos.d/CentOS-Debuginfo.repo /etc/yum.repos.d/CentOS-Debuginfo.repo.bak
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 切换源
curl -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache