常用Linux指令
文本处理工具(tail、vim、less)
tail
tail命令用于输入文件中的尾部内容,常用在查看线上正在增长的日志,主要使用:
# -n<行数> 显示文件的尾部 n 行内容
$ tail -n N filename.txt
# -f 循环读取
$ tail -f log-file
vim
命令模式下常用命令:
移动光标
作用 | vim命令 | linux命令行 |
---|---|---|
向上/向下翻页 | ctrl+f/b | |
行尾/行首 | $/0 | Ctrl-e/Ctrl-a |
下一个词/上一个词 | w/b | Alt-f/Alt-b |
文档开始/文档结束 | gg/G | |
到第n行 | ngg/nG/:n | |
屏幕顶部/中间/底部 | H/M/L | |
当前字符下一次/上一次出现的位置 | */# |
查询替换
作用 | vim命令 |
---|---|
查找xxxx,找到以后按n向下继续查找、N则向上继续查找 | /xxxx |
下一个s1替换为s2 | 😒/s1/s2 |
s1全部替换为s2 | :%s/s1/s2 |
当前行的s1替换为s2 | 😒/s1/s2/g |
从n1到n2行的s1替换为s2 | :n1,n2 s/s1/s2/g |
复制、剪切、粘贴、删除
作用 | vim命令 | linux命令行 |
---|---|---|
复制选中文本,用"ny来复制到第n号寄存器 | y | |
粘贴,用"np来粘贴第n号寄存器中的内容 | p | |
删除当前行 | dd | Ctrl -a + Ctrl-k / Ctrl -e + Ctrl -u |
删除光标后的一个词/删除光标前的一个词 | dw/db | Alt -d/Ctrl -w |
less
作用 | 命令 |
---|---|
向下移动一行 | 回车键 |
向上移动一行 | y |
向上滚动一屏/向上滚动半屏 | b/u |
向下滚动一屏/向下滚动半屏 | 空格键/d |
搜索pattern | /pattern |
查找处理grep
grep命令的作用是在目录中根据文件内容搜索文件,下面是常用的指令:
查看被占用端口
sudo netstat -tnlp | grep "80"
Linux如何对文件内容中的关键字进行查找**(文件不大时)**
cat <文件名> | grep <关键字>|wc -l 统计数量
PS 是linux对进程的监控
ps -aux|grep java
统计已连接上的,状态为“established
netstat -na|grep ESTABLISHED|wc -l
Print the matched line, along with the 3 lines after it
grep -A 3 -i "example" demo_text
显示匹配某个结果的前三行和后三行,使用 -C 选项:
seq 10 | grep "5" -C 3
标记匹配颜色 --color=auto 选项
grep "match_pattern" file_name --color=auto
详细的命令参数和正则表达式可以参考:
find
find命令的作用是在目录中根据文件名搜索文件
常用指令:
Find files using file-name ( case in-sensitve find)
# find -iname "MyCProgram.c"
更多:
find -name Help.java
在当前目录及其子目录中搜索文件名为Help.java的文件。find . -name Help.java
在当前目录及其子目录中搜索文件名为Help.java的文件(同上)。find / -name Help.java
在整个硬盘中搜索文件名为Help.java的文件。find -perm 755
在当前目录及其子目录中查找指定权限的文件find -type b
在当前目录及其子目录下查找块设备文件。find -type d
在当前目录及其子目录下查文件夹。find -type c
在当前目录及其子目录下查找字符设备文件。find -type p
在当前目录及其子目录下查找管道文件。find -type l
在当前目录及其子目录下查找符号链接文件。find -type f
在当前目录及其子目录下查找普通文件。find -type d -exec ls -l {} \
; 查找当前目录及其子目录下的文件夹,并将查找结果以ls -l的方式展现。find -type d -ok rm -rf {} \;
查找当前目录及其子目录下的文件夹,并将查找结果依次执行rm -rf命令,但是在执行命令前会有确认提示。find ~ -empty
Find all empty files in home directory
最佳实践:如何查找大文件
其实很多时候,你需要了解当前系统下有哪些大文件,比如文件大小超过100M或1G(阀值视具体情况而定)。那么如何把这些大文件搜索出来呢?例如我要搜索当前目录下,超过800M大小的文件
find . -type f -size +800M
如上命令所示,我们仅仅能看到超过800M大小的文件的文件名称,但是对文件的信息(例如,文件大小、文件属性)一无所知,那么能否更详细显示一些文件属性或信息呢,当然可以,如下所示
find . -type f -size +800M -print0 | xargs -0 ls -l
当我们只需要查找超过800M大小文件,并显示查找出来文件的具体大小,可以使用下面命令,并排序(统一使用使用MB来显示)
find . -type f -size +800M -print0 | xargs -0 du -hm | sort -n
tar
压缩解压缩
解压缩: tar -zxvf 文件
压缩: tar -zcvf 文件
如tar cvf archive_name.tar dirname/
查看:tar -ztvf 文件
CPU、内存、进程、磁盘及网络
CPU检查
到/proc/cpuinf
里面去看,几个重要参数的意思:
- processor :逻辑处理器的id。
- physical id :物理封装的处理器的id。
- core id :每个核心的id。
- cpu cores :位于相同物理封装的处理器中的内核数量。
- siblings :位于相同物理封装的处理器中的逻辑处理器的数量
常用语句:
- cpu物理个数:
cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
- cpu核数:
cat /proc/cpuinfo | grep "cpu cores" | uniq
- cpu型号:
cat /proc/cpuinfo | grep 'model name' | uniq
- cpu线程数:
grep ‘processor’ /proc/cpuinfo | sort -u | wc -l
查内核版本
内核版本:uname -a
显示系统名、节点名称、操作系统的发行版号、操作系统版本、运行系统的机器 ID 号。
查看当前操作系统发行版信息:cat /etc/issue | grep Linux
查内存
内存使用情况,常用指令:free -m
[root@SF1150 service]# free -m
total used free shared buffers cached
Mem: 32168 30119 2048 0 4438 11097
-/+ buffers/cache: 14583 17584
Swap: 31996 1899 30097
说明:
第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是2098428KB,已用内存是30841684KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached
查linux服务器当前时间
查看时间和日期:date
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xD0wGAQg-1605490433774)(media/15501936888321/WX20190227-110551@2x.png)]
vmstat
目前状态,每秒1次共计3次:vmstat 1 3
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gKqVzon6-1605490433776)(media/15501936888321/9FE2BA99-3F27-49D1-89A1-1AB34824C5AF.png)]
- r:等待运行中的进程数
- b :不可被唤醒的进程数, 上面两个越多越忙碌
- swpd:虚拟内存被使用量
- buff:缓存存储器
- cache:高速缓存
- swap:交换空间
- si:从磁盘中将程序取出的量
- so:由于内存不足而将没用的程序写入到磁盘的量
- si和so大的话,所有内存和磁盘反复传输,性能较差;
- io:
- bi:从磁盘写入的块数
- bo:写入到磁盘的块数
- system:
- in:每秒被中断的进程数
- cs:每秒钟进行的时间切换次数
- cpu:
- us:非内核CPU使用
- sy:内核CPU使用
- id:空闲
- wa:等待io消耗的CPU
- st:被虚拟机盗用的CPU
mpstat
实时监控系统CPU的一些统计信息,这些信息存放在/proc/stat文件中,在多核CPU系统里,其不但能查看所有CPU的平均使用信息,而且能够查看某一个特定CPU的信息
robert@robert-ubuntu1410:~$ mpstat -P ALL
Linux 3.16.0-30-generic (robert-ubuntu1410) 2017年04月23日 _x86_64_ (4 CPU)
11时12分38秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11时12分38秒 all 0.54 0.55 0.23 0.57 0.00 0.04 0.00 0.00 0.00 98.07
11时12分38秒 0 0.75 1.41 0.35 1.06 0.00 0.11 0.00 0.00 0.00 96.32
11时12分38秒 1 0.51 0.22 0.22 0.48 0.00 0.01 0.00 0.00 0.00 98.57
11时12分38秒 2 0.52 0.58 0.18 0.29 0.00 0.02 0.00 0.00 0.00 98.41
11时12分38秒 3 0.40 0.01 0.15 0.45 0.00 0.01 0.00 0.00 0.00 98.98
netstat
显示当前启动的网络服务:netstat -tulnp
查看本机所有网络连接状态:netstat -atunp
- t : tcp
- u : udp
- l : 列出已有Listen(监听)的服务网络状态
- n :使用IP
- p:列出PID和program文件名
- a:所有连接状态
telnet
检查远程port是否启动:telnet ip 110
df
查看文件系统的硬盘挂载点和空间使用情况
[root@tecmint ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p2 75G 23G 49G 32% /
/dev/cciss/c0d0p5 24G 22G 1.2G 95% /home
/dev/cciss/c0d0p3 29G 25G 2.6G 91% /data
/dev/cciss/c0d0p1 289M 22M 253M 8% /boot
tmpfs 252M 0 252M 0% /dev/shm
[root@tecmint ~]# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/cciss/c0d0p2 76525 22644 49931 32% /
/dev/cciss/c0d0p5 24217 21752 1215 95% /home
/dev/cciss/c0d0p3 29057 24907 2651 91% /data
/dev/cciss/c0d0p1 289 22 253 8% /boot
tmpfs 252 0 252 0% /dev/shm
展示磁盘总利用率
默认情况下, df命令显示磁盘的单个文件系统的利用率。如果你想知道的所有文件系统的总磁盘使用量,增加“ --total ”选项(见最下面的汇总行)。
$ df -h --total
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu-root 909G 565G 299G 66% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.9G 4.0K 3.9G 1% /dev
tmpfs 785M 1.2M 784M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 62M 3.8G 2% /run/shm
none 100M 48K 100M 1% /run/user
/dev/sda1 228M 98M 118M 46% /boot
total 918G 565G 307G 65% -
其他
####scp
cp命令是Linux系统中功能强大的文件传输命令,可以实现从本地到远程以及远程到本地的双向文件传输,用起来非常的方便。常用来在线上定位问题时,将线上的一些文件下载到本地进行详查,或者将本地的修改上传到服务器上。
示例:
scp robert@192.168.1.1:/home/robert/test.txt .
scp ./test.txt robert@192.168.1.1:/home/robert/