Linux 常用命令
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