Linux常用命令

vim

1、使用u退回上一步
2、使用U一次撤销对当前行的全部操作
3、vim + filename 表示把光标定位到文件最后一行
4、vim +数字 filemame 定位到数字行,如果超过文件行数,定位到最后一行
5、vim +/word filename 定位到Word第一次出现的行,按n切换
6、vim file1 file2 file3 一次性打开或者创建多个文件,底行模式下使用:n向后切换文件,:N和prev向前切换文件
7、:w save
:q quit
:! 强制
:ls 列出当前编辑器打开的所有文件
:n 切换到下一个文件
:N 切换到前一个文件
:15 定位到15行
:/xxx 表示从光标位置向后搜索xxx,定位到第一次出现的时候
:?xxx搜索
8、命令行模式常用命令
h 光标左移
j 光标下移
k 光标上移
l 光标右移
Ctrl+f 向下翻页(front)
Ctrl+b 向上翻页(back)
Ctrl+d 向下翻半页(down)
Ctrl+u 向上翻半页(up)

df

查看磁盘分区使用状况
-l 仅显示本地磁盘(默认)
-a 显示所有文件系统的磁盘使用情况
-h 以1024进制计算最适合的单位显示磁盘容量
-H 以1000进制计算最适合的单位显示磁盘容量
-T 显示磁盘分区类型
-t 显示指定类型文件系统的磁盘分区
-x 不显示指定类型文件系统的磁盘分区

du

统计磁盘上的文件大小
-b 以byte为单位统计文件
-k 以KB为单位统计文件
-m 以MB为单位统计文件
-h 按照1024进制以最适合的单位统计文件
-H 按照1000进制以最适合的单位统计文件
-s 指定统计目标

lsof

可以列出被进程所打开的文件的信息。被打开的文件可以是
1.普通的文件
2.目录
3.网络文件系统的文件
4.字符设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.底层的socket字流,网络socket,unix域名socket
9.在linux里面,大部分的东西都是被当做文件的…..还有其他很多

怎样使用lsof

这里主要用案例的形式来介绍lsof 命令的使用

  1. 列出所有打开的文件:
    lsof
    备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位
  2. 查看谁正在使用某个文件
    lsof /filepath/file
  3. 递归查看某个目录的文件信息
    lsof +D /filepath/filepath2/
    备注: 使用了+D,对应目录下的所有子目录和文件都会被列出
  4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法
    lsof | grep ‘/filepath/filepath2/’
  5. 列出某个用户打开的文件信息
    lsof -u username
    备注: -u 选项,u其实是user的缩写
  6. 列出某个程序所打开的文件信息
    lsof -c mysql
    备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成lsof | grep mysql,但是第一种方法明显比第二种方法要少打几个字符了
  7. 列出多个程序多打开的文件信息
    lsof -c mysql -c apache
  8. 列出某个用户以及某个程序所打开的文件信息
    lsof -u test -c mysql
  9. 列出除了某个用户外的被打开的文件信息
    lsof -u ^root
    备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示
  10. 通过某个进程号显示该进行打开的文件
    lsof -p 1
  11. 列出多个进程号对应的文件信息
    lsof -p 123,456,789
  12. 列出除了某个进程号,其他进程号所打开的文件信息
    lsof -p ^1
    13 . 列出所有的网络连接
    lsof -i
  13. 列出所有tcp 网络连接信息
    lsof -i tcp
  14. 列出所有udp网络连接信息
    lsof -i udp
  15. 列出谁在使用某个端口
    lsof -i :3306
  16. 列出谁在使用某个特定的udp端口
    lsof -i udp:55
    特定的tcp端口
    lsof -i tcp:80
  17. 列出某个用户的所有活跃的网络端口
    lsof -a -u test -i
  18. 列出所有网络文件系统
    lsof -N
  19. 域名socket文件
    lsof -u
  20. 某个用户组所打开的文件信息
    lsof -g 5555
  21. 根据文件描述列出对应的文件信息
    lsof -d description(like 2)
  22. 根据文件描述范围列出文件信息
    lsof -d 2-3

top系列

iotop – I/O 监控

iotop 命令利用 Linux 内核监控 I/O 使用情况,它按进程或线程的顺序显示 I/O 使用情况。

htop – 交互式的进程查看器

htop 是一款免费并开源的基于 ncurses 的 Linux 进程查看器。它比 top 命令更简单易用。您无需使用 PID、无需离开 htop 界面,便可以杀掉进程或调整其调度优先级。

atop – 高级版系统与进程监控工具

atop 是一个非常强大的交互式 Linux 系统负载监控器,它从性能的角度显示最关键的硬件资源信息。您可以快速查看 CPU、内存、磁盘和网络性能。它还可以从进程的级别显示哪些进程造成了相关 CPU 和内存的负载。

iftop – 显示主机上网络接口的带宽使用情况

iftop 命令监听指定接口(如 eth0)上的网络通信情况。它显示了一对主机的带宽使用情况。

vmstat

虚拟内存统计
显示 Slab 缓存的利用率

vmstat -m

获取有关活动和非活动内存页面的信息

vmstat -a   

grep

高亮搜索关键字

step1:修改~/.bashrc,在~/.bashrc中添加如下内容
alias grep=’grep –color=auto’
step2:重新加载.bashrc文件
source ~/.bashrc

netstat

-a :all,表示列出所有的连接,服务监听,Socket资料
-t :tcp,列出tcp协议的服务
-u :udp,列出udp协议的服务
-n :port number, 用端口号来显示
-l :listening,列出当前监听服务
-p :program,列出服务程序的PID

ps

显示长输出格式

# ps -Al

显示完整输出格式(它将显示传递给进程的命令行参数)

# ps -AlF

显示线程(轻量级进程(LWP)和线程的数量(NLWP))

# ps -AlFH

在进程后显示线程

# ps -AlLm

显示系统上所有的进程

# ps ax
# ps aux

显示进程树

# ps -ejH
# ps axjf
# pstree

显示进程的安全信息

# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM

显示指定用户(如 vivek)运行的进程

# ps -U vivek -u vivek u

设置用户自定义的输出格式

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan

显示某进程(如 lighttpd)的 PID

# ps -C lighttpd -o pid=

# pgrep lighttpd

# pgrep -u vivek php-cgi

显示指定 PID(如 55977)的进程名称

# ps -p 55977 -o comm=

找出占用内存资源最多的前 10 个进程

# ps -auxf | sort -nr -k 4 | head -10

找出占用 CPU 资源最多的前 10 个进程

# ps -auxf | sort -nr -k 3 | head -10

##ss

ss 命令用于获取套接字统计信息。它可以显示类似于 netstat 的信息。不过 netstat 几乎要过时了,ss 命令更具优势。要显示所有 TCP 或 UDP 套接字:

# ss -t -a

# ss -u -a

显示所有带有 SELinux 安全上下文Security Context的 TCP 套接字:

# ss -t -a -Z 

pmap

pmap 命令用以显示进程的内存映射,使用此命令可以查找内存瓶颈。

# pmap -d PID

显示 PID 为 47394 的进程的内存信息,请输入:

# pmap -d 47394     

sar

?sar 命令用于收集、汇报和保存系统活动信息。要查看网络统计,请输入:

# sar -n DEV | more

显示 24 日的网络统计:

# sar -n DEV -f /var/log/sa/sa24 | more

显示实时使用情况:

# sar 4 5     

mpstat

mpstat 命令显示每个可用处理器的使用情况,编号从 0 开始。命令 mpstat -P ALL 显示了每个处理器的平均使用率:

# mpstat -P ALL     

w

显示了当前登录在该系统上的用户及其进程。

# w username    

tcpdump

tcpdump 命令是简单的分析网络通信的命令。您需要充分了解 TCP/IP 协议才便于使用此工具。例如,要显示有关 DNS 的流量信息,请输入:

# tcpdump -i eth1 'udp port 53'

查看所有去往和来自端口 80 的 IPv4 HTTP 数据包,仅打印真正包含数据的包,而不是像 SYN、FIN 和仅含 ACK 这类的数据包,请输入:

# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

显示所有目标地址为 202.54.1.5 的 FTP 会话,请输入:

# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'

打印所有目标地址为 192.168.1.5 的 HTTP 会话:

# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'

捕获所有目标地址为 192.168.1.5 的 HTTP 会话,并保存:

# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http' -w output.cap &

使用 wireshark 查看文件的详细内容,请输入:

# tcpdump -n -i eth1 -s 0 -w output.cap src or dst port 80    

lsb_release

lsb_release是读取/etc/redhat-release文件中的第一行记录,这里面记载了系统版本

!

!在Linux命令行中有特色含义,即感叹号后面的内容会被截断,所以如果需要将感叹号当作普通字符处理,需要使用单引号,如下:

echo "hello world'!'"

fdisk

fdisk只能给磁盘做MBR分区,MBR只能有四个主分区,每个分区最大2TB

parted

parted既可以做MBR分区也可以做GPT分区,GPT几乎没有分区限制,也没有大小限制

ntpdate

ntpdate命令是用来设置本地日期和时间。它从指定的每个服务器获得了一些样本,并应用标准 NTP 时钟过滤器和选择算法来选择最好的样本。
可使用如下命令进行网络时间更新

ntpdate -u ntp.api.bz

-u参数可以越过防火墙与主机同步;ntp.api.bz:NTP服务器(上海)。

iptables

iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

pkill

pkill命令可以按照进程名杀死进程。
语法

pkill(选项)(参数)

选项
-o:仅向找到的最小(起始)进程号发送信号;
-n:仅向找到的最大(结束)进程号发送信号;
-P:指定父进程号发送信号;
-g:指定进程组;
-t:指定开启进程的终端。

kill

firewall-cmd

防火墙命令行

  1. 开启指定host访问端口 firewall-cmd –permanent –add-rich-rule=”rule family=”ipv4” source address=”xxx.xxx.xxx.xxx” port protocol=”tcp” port=”xxxx” accept”
  2. 刷新防火墙规则 firewall-cmd –rel

wget

wget拉取http请求
语法
wget(选项)(参数)
选项
–max-redirect 0:设置重定向次数,设置为0,表示不跟随302

free

查看系统剩余内存大小

sed

文本操作命令
语法
sed(选项)(参数)

  1. 删除指定行,例如删除第6行: sed -i ‘6 d’ a.txt,删除第1-5行: sed -i ‘1,5 d’ a.txt
  2. 匹配字符串后追加行,例如匹配到aaa后追加hello:sed -i ‘/aaa/ ahello’ a.txt;
  3. 指定行后追加一行,例如sed -i ‘N;2a\ xxxx’ a.txt,N之后的数字要是偶数,如果想插入换行符,sed -i ‘N;2a\ \nxxxx’ a.txt

echo

用于输出指定的字符串或者变量,带换行符的字符串需要用<>,最后用EOF表示字符串结束

watch

可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令

awk

用于处理文本

htop

用于查看系统状态

xargs

用于管道传递参数

smem

查看内存占用

killall

杀掉所有名字相同的进程