操 作 | 命令 | 实例 |
---|---|---|
进入某个路径 | cd | cd 路径 |
返回上一级目录 | cd - | cd - |
返回主目录 | cd ~ | cd ~ |
显示当前所在路径 | pwd | pwd |
从根目录进入到指定文件(路径) | /目标文件(路径) | /home 对电脑来说,有且只有一个根目录。所有的东西,所有的东西都是从这里开始。 当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录 |
命令 | 释义 | 用法 |
---|---|---|
vi | 查看文本文件,包括日志文件。用VI查看的日志文件,但不会实时更新的日志 | vi 文件名.扩展名 |
命令 | 释义 | 用法 |
---|---|---|
tail | 需要查看实时刷新的日志用此命令 | tail -f 文件名.扩展名 |
watch | 需要查看实时刷新的日志用此命令 | watch -d -n 刷新间隔时长数 cat 文件名.扩展名 |
命令 | 释义 | 用法 |
---|---|---|
-f | 循环读取 | |
-q | 不显示处理信息 | |
-V | 显示详细处理信息 | |
-C 数字 | 显示的字节数 | |
-n 数字 | 显示行数 |
linux 如何显示一个文件的某几行(中间几行)
从第3000行开始,显示1000行。即显示3000~3999行
cat 文件名 | tail -n +3000 | head -n 1000
cat 文件名 | head -n 3999 | tail -n +1000
显示1000行到3000行
cat 文件名 | head -n 3000 | tail -n +1000
注意:
起始行数的参数需要加“ + ”
上述两种需要注意参数的顺序:
从n行显示到M行,这时的nm指的是行数,那么结束行数在前(head),起始行数在后(tail);
从n行开始显示,显示之后的m行,n为行数编号,n+m=行数编号,那么结束行数在后(head),起始行数在前(tail);两者之间可以相互转换。
参数 | 释义 |
---|---|
tail -n 1000 | 显示最后1000行 |
tail -n +1000 | 从1000行开始显示,显示1000行以后的 |
head -n 1000 | 显示前面1000行 |
ls [参数]
参数 | 释义 |
---|---|
-a | 列出目录下的所有文件,包括以 . 开头的隐含文件。 |
-b | 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。 |
-c | 输出文件的 i 节点的修改时间,并以此排序。 |
-d | 将目录象文件一样显示,而不是显示其下的文件。 |
-e | 输出时间的全部信息,而不是输出简略信息。 |
-f -U | 对输出的文件不排序。 |
-i | 输出文件的 i 节点的索引信息。 |
-k | 以 k 字节的形式表示文件的大小。 |
-l | 列出文件的详细信息。 |
-m | 横向输出文件名,并以“,”作分格符。 |
-n | 用数字的 UID,GID 代替名称。 |
-o | 显示文件的除组信息外的详细信息。 |
-p -F | 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“ |
-q | 用?代替不可输出的字符。 |
-r | 对目录反向排序。 |
-s | 在每个文件名后输出该文件的大小。 |
-t | 以时间排序。 |
-u | 以文件上次被访问的时间排序。 |
-x | 按列输出,横向排序。 |
-A | 显示除 “.”和“…”外的所有文件。 |
-B | 不输出以 “~”结尾的备份文件。 |
-C | 按列输出,纵向排序。 |
-G | 输出文件的组的信息。 |
-L | 列出链接文件名而不是链接到的文件。 |
-N | 不限制文件长度。 |
-Q | 把输出的文件名用双引号括起来。 |
-R | 列出所有子目录下的文件。 |
-S | 以文件大小排序。 |
-X | 以文件的扩展名(最后一个 . 后的字符)排序。 |
-1 | 一行只输出一个文件。 |
–color=no | 不显示彩色文件名 |
–help | 在标准输出上显示帮助信息。 |
–version | 在标准输出上输出版本信息并退出。 |
find命令
基本格式:find path expression
1.按照文件名查找
(1)find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf #在/etc目录下文件httpd.conf
(3)find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件
2.按照文件特征查找
(1)find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime -2 # 查找在系统中最后48小时访问的文件
(3)find / -empty # 查找在系统中为空的文件或者文件夹
(4)find / -group cat # 查找在系统中属于 group为cat的文件
(5)find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime -1 #查找在系统中最后24小时里修改过的文件
(7)find / -user fred #查找在系统中属于fred这个用户的文件
(8)find / -size +10000c #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size -1000k #查找出小于1000KB的文件
3.使用混合查找方式查找文件
参数有: !,-and(-a),-or(-o)。
(1)find /tmp -size +10000c -and -mtime +2 #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2)find / -user fred -or -user george #在/目录下查找用户是fred或者george的文件文件
(3)find /tmp ! -user panda #在/tmp目录中查找所有不属于panda用户的文件
grep命令
基本格式:find expression
1.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的单个字符。
* :有字符,长度可以为0。
2.实例
(1)grep 'test' d* #显示所有以d开头的文件中包含 test的行
(2)grep ‘test’ aa bb cc #显示在aa,bb,cc文件中包含test的行
(3)grep ‘[a-z]\{5\}’ aa #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
(4)grep magic /usr/src #显示/usr/src目录下的文件(不含子目录)包含magic的行
(5)grep -r magic /usr/src #显示/usr/src目录下的文件(包含子目录)包含magic的行
(6)grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)
cat功能:
1.一次显示整个文件:cat 文件名
2.创建一个新的文件:cat>文件名
3.将一个文件合并成一个文件:cat file1 file2 > file
参数 | 释义 |
---|---|
-n | 由 1 开始对所有输出的行数编号,对空白行也会进行编号 |
-b | 和 -n 相似,只不过对于空白行不编号 |
-s | 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
例子:
tac file.txt
1.显示目标进程
ps -ef | grep 目标字符串
参数 | 说明 |
---|---|
ps | 将某个进程显示出来 |
-a/-e | 两个参数效果一致,即显示所有进程 |
-f | 显示UID、PPIP、C与TIME栏 |
grep | 查找字符串命令 |
| | 管道命令,指ps指令与grep同时执行 |
2.关闭某个进程
kill -9 进程号
date -s “YYYY-MM-DD hh:mm:ss”
date -s “2018-09-23 13:33:11”
/root|系统管理员的路径,可以对系统做任何事|
/bin|这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。|00
/ect|这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。|00
各个路径下存放的文说明
命令 | 释义 | 例子 |
---|---|---|
ifconfig | 查虚拟机的IP地址(ifconfig) | |
ping | 查看联机状态() | |
. | 表示当前目录 | |
… | 返回上一级 (cd …) | |
Touch | 创建文件(touch 123.txt) | |
Mkdir | 传建文件夹(mkdir 123) | |
Pwd | 当前所处位置 | |
Cd | 进入 | |
Su | 切换用户 | Su +用户名 密码:当用户为root用户时密码按了不显示 |
/ | 根目录(cd /) | |
ls | 展示所有目录 | |
dir | 查看目录(dir) | |
TAB | 键作用: 补全,提示 | |
cd/ | 两次tab 进入所有文件,按Q直接进入原界面 | |
ctrl+c | 取消和中断 | |
ctrl+d | 退出 | |
$ | 表示普通用户 | |
# | 表示管理员权限(root权限) | |
Cp | 复制(cp 文件.文件格式 文件相对地址) | |
Rmdir | 删除文件 | |
Rmdir -r | 递归删除 | |
Rmdir -f | 强制删除 | |
ls | 查看目录下的文件或信息、 | |
ls-a | 查看所有的文件和文件夹 | |
ls-al | (ll)以详细信息查看文件和文件夹 | |
Top | 查看cpu | |
Ps -ef | 进程 | |
00 | 创建文件夹 | 1.创建单个 mkdir;2.创建多个mkdir xy1、xy2 |
MV | 移动文件 | Mv 1.txt 移动到的绝对地址 |
help: man或info | 帮助 | |
Mkdir | 创建文件 | |
touch | 创建TXT文件 | abc.txt创建文件;创建多个 文件 touch abc.txt bb.txt cd/ |
cp | 复制 | |
cp -r 文件夹 -t文件夹 | 将文件复制到文件夹、将文件夹复制到文件夹 | |
ps -ef | 回车可以查看 常用 | |
ps -A | 显示全部进程 | |
kill | 结束进程 | 通过pid 结束进程 kill -9 pid进程号(输入进程名)回车,例如:kill -9(绝杀)5422 回车 结束进程,释放了内存 |
如何查看CPU使用情况、流量、内存、响应时间、
内存、CPU、磁盘、流量
https://blog.csdn.net/weixin_41044523/article/details/79291274
命令 | 操作 | 句式 |
---|---|---|
mkdir | 创建目录 | make dir |
cp 拷贝文件 copy
mv 移动文件 move
rm 删除文件 remove
创建目录和父目录a,b,c,d mkdir -p a/b/c/d
拷贝文件夹a到/tmp目录 cp -rvf a/ /tmp/
移动文件a到/tmp目录,并重命名为b mv -vf a /tmp/b
删除机器上的所有文件 rm -rvf /
定位
ls 命令能够看到当前目录的所有内容。ls -l能够看到更多信息,判断你是谁。
pwd 命令能够看到当前终端所在的目录。告诉你你在哪。
cd 假如你去错了地方,cd命令能够切换到对的目录。
cat
最常用的就是cat命令了,注意,如果文件很大的话,cat命令的输出结果会疯狂在终端上输出,可以多次按ctrl+c终止。
less
既然cat有这个问题,针对比较大的文件,我们就可以使用less命令打开某个文件。
类似vim,less可以在输入/后进入查找模式,然后按n(N)向下(上)查找。
有许多操作,都和vim类似,你可以类比看下。
tail
大多数做服务端开发的同学,都了解这么命令。比如,查看nginx的滚动日志。
tail -f access.log
tail命令可以静态的查看某个文件的最后n行,与之对应的,head命令查看文件头n行。但head没有滚动功能,就像尾巴是往外长的,不会反着往里长。
tail -n100 access.loghead -n100 access.log
统计
sort和uniq经常配对使用。
sort可以使用-t指定分隔符,使用-k指定要排序的列。
下面这个命令输出nginx日志的ip和每个ip的pv,pv最高的前10
#2019-06-26T10:01:57+08:00|nginx001.server.ops.pro.dc|100.116.222.80|10.31.150.232:41021|0.014|0.011|0.000|200|200|273|-|/visit|sign=91CD1988CE8B313B8A0454A4BBE930DF|-|-|http|POST|112.4.238.213awk -F"|" ‘{print $3}’ access.log | sort | uniq -c | sort -nk1 -r | head -n10
其他
grep
grep用来对内容进行过滤,带上–color参数,可以在支持的终端可以打印彩色,参数n则输出具体的行数,用来快速定位。
比如:查看nginx日志中的POST请求。
grep -rn --color POST access.log
推荐每次都使用这样的参数。
如果我想要看某个异常前后相关的内容,就可以使用ABC参数。它们是几个单词的缩写,经常被使用。
A after 内容后n行
B before 内容前n行
C count? 内容前后n行
就像是这样:
grep -rn --color Exception -A10 -B2 error.log
diff
diff命令用来比较两个文件是否的差异。当然,在ide中都提供了这个功能,diff只是命令行下的原始折衷。对了,diff和patch还是一些平台源码的打补丁方式,你要是不用,就pass吧。
压缩
为了减小传输文件的大小,一般都开启压缩。linux下常见的压缩文件有tar、bzip2、zip、rar等,7z这种用的相对较少。
.tar 使用tar命令压缩或解压
.bz2 使用bzip2命令操作
.gz 使用gzip命令操作
.zip 使用unzip命令解压
.rar 使用unrar命令解压
最常用的就是.tar.gz文件格式了。其实是经过了tar打包后,再使用gzip压缩。
创建压缩文件
tar cvfz archive.tar.gz dir/
解压
tar xvfz. archive.tar.gz
快去弄清楚它们的关系吧。
日常运维
开机是按一下启动按钮,关机总不至于是长按启动按钮吧。对了,是shutdown命令,不过一般也没权限-.-!。passwd命令可以用来修改密码,这个权限还是可以有的。
mount
mount命令可以挂在一些外接设备,比如u盘,比如iso,比如刚申请的ssd。可以放心的看小电影了。
mount /dev/sdb1 /xiaodianying
chown
chown 用来改变文件的所属用户和所属组。
chmod 用来改变文件的访问权限。
这两个命令,都和linux的文件权限777有关。
示例:
# 毁灭性的命令chmod 000 -R /# 修改a目录的用户和组为 xjjchown -R xjj:xjj a# 给a.sh文件增加执行权限(这个太常用了)chmod a+x a.sh
yum
假定你用的是centos,则包管理工具就是yum。如果你的系统没有wget命令,就可以使用如下命令进行安装。
yum install wget -y
systemctl
当然,centos管理后台服务也有一些套路。service命令就是。systemctl兼容了service命令,我们看一下怎么重启mysql服务。 推荐用下面这个。
service mysql restartsystemctl restart mysqld
对于普通的进程,就要使用kill命令进行更加详细的控制了。kill命令有很多信号,如果你在用kill -9,你一定想要了解kill -15以及kill -3的区别和用途。
su
su用来切换用户。比如你现在是root,想要用xjj用户做一些勾当,就可以使用su切换。
su xjjsu - xjj
-可以让你干净纯洁的降临另一个账号,不出意外,推荐。
uname
uname命令可以输出当前的内核信息,让你了解到用的是什么机器。
uname -a
ps
ps命令能够看到进程/线程状态。和top有些内容重叠,常用。
top
系统状态一览,主要查看。cpu load负载、cpu占用率。使用内存或者cpu最高的一些进程。下面这个命令可以查看某个进程中的线程状态。
top -H -p pid
free
top也能看内存,但不友好,free是专门用来查看内存的。包括物理内存和虚拟内存swap。
df
df命令用来查看系统中磁盘的使用量,用来查看磁盘是否已经到达上限。参数h可以以友好的方式进行展示。
df -h
ifconfig
查看ip地址,不啰嗦,替代品是ip addr命令。
ping
至于网络通不通,可以使用ping来探测。(不包括那些禁ping的网站)
netstat
虽然ss命令可以替代netstat了,但现实中netstat仍然用的更广泛一些。比如,查看当前的所有tcp连接。
netstat -ant
此命令,在找一些本地起了什么端口之类的问题上,作用很大。
工作常用
还有一些在工作中经常会用到的命令,它们的出现频率是非常高的 ,都是些熟面孔。
export
很多安装了jdk的同学找不到java命令,export就可以帮你办到它。export用来设定一些环境变量,env命令能看到当前系统中所有的环境变量。比如,下面设置的就是jdk的。
export PATH=$PATH:/home/xjj/jdk/bin
有时候,你想要知道所执行命令的具体路径。那么就可以使用whereis命令,我是假定了你装了多个版本的jdk。
crontab
这就是linux本地的job工具。不是分布式的,你要不是运维,就不要用了。比如,每10分钟提醒喝茶上厕所。
*/10 * * * * /home/xjj/wc10min
date
date命令用来输出当前的系统时间,可以使用-s参数指定输出格式。但设置时间涉及到设置硬件,所以有另外一个命令叫做hwclock。
xargs
xargs读取输入源,然后逐行处理。这个命令非常有用。举个栗子,删除目录中的所有class文件。
find . | grep .class$ | xargs rm -rvf#把所有的rmvb文件拷贝到目录ls *.rmvb | xargs -n1 -i cp {} /mount/xiaodianying
网络
linux是一个多作业的网络操作系统,所以网络命令有很多很多。工作中,最常和这些打交道。
ssh
这个,就不啰嗦了。你一定希望了解ssh隧道是什么。你要是想要详细的输出过程,记得加参数-v。
scp
scp用来进行文件传输。也可以用来传输目录。也有更高级的sftp命令。
scp a.txt 192.168.0.12:/tmp/a.txtscp -r a_dir 192.168.0.12:/tmp/
wget
你想要在服务器上安装jdk,不会先在本地下载下来,然后使用scp传到服务器上吧(有时候不得不这样)。wget命令可以让你直接使用命令行下载文件,并支持断点续传。
wget -c http://oracle.fuck/jdk2019.bin
mysql
mysql应用广泛,并不是每个人都有条件用上navicat的。你需要了解mysql的连接方式和基本的操作,在异常情况下才能游刃有余。
mysql -u root -p -h 192.168.1.2