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 命令的使用
- 列出所有打开的文件:
lsof
备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位- 查看谁正在使用某个文件
lsof /filepath/file- 递归查看某个目录的文件信息
lsof +D /filepath/filepath2/
备注: 使用了+D,对应目录下的所有子目录和文件都会被列出- 比使用+D选项,遍历查看某个目录的所有文件信息 的方法
lsof | grep ‘/filepath/filepath2/’- 列出某个用户打开的文件信息
lsof -u username
备注: -u 选项,u其实是user的缩写- 列出某个程序所打开的文件信息
lsof -c mysql
备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成lsof | grep mysql,但是第一种方法明显比第二种方法要少打几个字符了- 列出多个程序多打开的文件信息
lsof -c mysql -c apache- 列出某个用户以及某个程序所打开的文件信息
lsof -u test -c mysql- 列出除了某个用户外的被打开的文件信息
lsof -u ^root
备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示- 通过某个进程号显示该进行打开的文件
lsof -p 1- 列出多个进程号对应的文件信息
lsof -p 123,456,789- 列出除了某个进程号,其他进程号所打开的文件信息
lsof -p ^1
13 . 列出所有的网络连接
lsof -i- 列出所有tcp 网络连接信息
lsof -i tcp- 列出所有udp网络连接信息
lsof -i udp- 列出谁在使用某个端口
lsof -i :3306- 列出谁在使用某个特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80- 列出某个用户的所有活跃的网络端口
lsof -a -u test -i- 列出所有网络文件系统
lsof -N- 域名socket文件
lsof -u- 某个用户组所打开的文件信息
lsof -g 5555- 根据文件描述列出对应的文件信息
lsof -d description(like 2)- 根据文件描述范围列出文件信息
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
防火墙命令行
- 开启指定host访问端口 firewall-cmd –permanent –add-rich-rule=”rule family=”ipv4” source address=”xxx.xxx.xxx.xxx” port protocol=”tcp” port=”xxxx” accept”
- 刷新防火墙规则 firewall-cmd –rel
wget
wget拉取http请求
语法
wget(选项)(参数)
选项
–max-redirect 0:设置重定向次数,设置为0,表示不跟随302
free
查看系统剩余内存大小
sed
文本操作命令
语法
sed(选项)(参数)
- 删除指定行,例如删除第6行: sed -i ‘6 d’ a.txt,删除第1-5行: sed -i ‘1,5 d’ a.txt
- 匹配字符串后追加行,例如匹配到aaa后追加hello:sed -i ‘/aaa/ ahello’ a.txt;
- 指定行后追加一行,例如sed -i ‘N;2a\ xxxx’ a.txt,N之后的数字要是偶数,如果想插入换行符,sed -i ‘N;2a\ \nxxxx’ a.txt
echo
用于输出指定的字符串或者变量,带换行符的字符串需要用<
>,最后用EOF表示字符串结束
watch
可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令
awk
用于处理文本
htop
用于查看系统状态
xargs
用于管道传递参数
smem
查看内存占用
killall
杀掉所有名字相同的进程