目录
find
# 全局查找 nginx.conf
$ find / -name nginx.conf
# 全局查找 nginx.conf 并筛选掉没有权限等提示信息
$ find / -name nginx.conf 2>/dev/null
top
# 三秒一刷新服务器性能状态
$ top
# E 切换单位
# M 根据内存排序
# P 根据CPU排序
ls
# 查看所有文件名
$ ls
# -l 查看文件列表详情
# -h 将文件大小切换为合适单位
# -S 根据文件大小,降序排列
# -i 查看文件节点ID
# -d [文件夹] 查看文件夹的信息,不加是查看文件夹下的文件
free 查看剩余内存
# 查看剩余内存,单位:字节
$ free
# -h 切换为合适的单位
# total 系统总的可用物理内存大小
# used 已被使用的物理内存大小
# free 还有多少物理内存可用
# shared 被共享使用的物理内存大小
# buff/cache 被 buffer 和 cache 使用的物理内存大小
# available 可以给新程序用的内存空间大小
# 注意:小伙伴不要再看 free memory了, 基本上关注 available memory 就可以了!对领导也耐心解释下,看available更有意义!
drop_caches 释放内存
# 释放内存前先使用sync命令做同步,以确保文件系统的完整性,
# 将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。
# 否则在释放缓存的过程中,可能会丢失未保存的文件。
$ sync
# 释放缓存 drop_caches的值可以是0-3之间的数字,代表不同的含义:
# 0:不释放(系统默认值)
# 1:释放页缓存
# 2:释放dentries和inodes
# 3:释放所有缓存
$ echo 1 > /proc/sys/vm/drop_caches
history
# 查看最近1000条历史命令
$ history
# 查看最近100条历史命令
$ history 100
# 查看历史操作时间
$ export HISTTIMEFORMAT='%F %T '
# 清除当前会话历史
$ history -c
**扩展:**可以通过 Ctrl + R,然后输入指令,可以快速输入历史命令
Linux 查看CPU核数
# 方法1
# top下按1
$ top
# 方法2
$ grep -c "processor" /proc/cpuinfo
vim 查看最后一行
# vim 进入文本内容之后输入G,跳至最后一行
vim
$ vim [选项] [文件]
# -R 以只读模式查看
# 交互命令
# :set nu 查看行号
# :set nonu 关闭行号
# :0 定位到首行
# :$ 定位到尾行
# # 高亮光标所在单词
定位:
- g + g 定位到第一行
- G 定位到最后一行
写操作:
- u 撤销上一步操作
- 删除:
- dd 删除光标所在行
- ndd 删除光标以下n行,包括光标所在行
- 复制:
- yy 复制光标所在行
- nyy 复制光标以下n行,包括光标所在行
- 粘贴
- p 将已复制的数据在光标下一行贴上
- P 将已复制的数据在光标上一行贴上
读操作:
- 翻页:
- [Ctrl] + [d] 向下翻页
- [Ctrl] + [u] 向上翻页
grep
$ grep [-iv] [搜索内容] [文件]
# -i 不区分大小写
# -v 排除指定字符串
# -E 匹配多个,例:grep -E 'USER|uat'
# -c 统计行数
# -n 显示文件中行号,如果在管道符中,代表前一个结果的行号
解压war包
$ unzip common.war -d common
awk
# 查看第一列和最后一列
$ awk '{print $1,$NF}' [文件名]
# 设置第一个字段的长度为50(方便字段对齐)
$ awk '{prinf "%-50s\t%s",$1,$NF}' [文件名]
# 查看行号和最后一列
$ awk '{print NR,$NF}' [文件名]
# 不查看第一行,$0打印所有列
$ awk '{$1="";print $0}'
# 查看sql日志
cat test-center-6001.jar.log | grep b46105ac6ca24a678bba7f434fb0f0ff | awk '{$1="";$2="";$3="";$4="";$5="";print$0}' | grep "==>"
head
# 查看第一行
$ head -n 1 [文件名]
systemctl
# 启动一个服务:
$ systemctl start firewalld.service
# 关闭一个服务:
$ systemctl stop firewalld.service
# 重启一个服务:
$ systemctl restart firewalld.service
# 显示一个服务的状态:
$ systemctl status firewalld.service
# 查看服务列表
$ systemctl list-units --all --type=service
# 在开机时启用一个服务:
$ systemctl enable firewalld.service
# 在开机时禁用一个服务:
$ systemctl disable firewalld.service
# 查看服务是否开机启动:
$ systemctl is-enabled firewalld.service
# 查看开机启动的服务列表:
$ systemctl list-unit-files|grep enabled
# 查看启动失败的服务列表:
$ systemctl --failed
设置alias别名、环境变量
# 1.临时生效(只对当前用户的当前shell有效,比如bash)
$ alias ll='ls -l --color=auto'
$ alias ll.='ls -la --color=auto'
$ export PATH=$PATH:/home/uusama/mysql/bin
# 2.当前用户永久生效(修改当前用户家目录下的.bashrc配置文件)
$ vim +999 ~/.bashrc
# +999 进入文件后,光标定位在尾行(第999行)
$ source ~/.bashrc
# source 重新加载配置文件
# 3.所有用户永久生效(修改大配置文件.bashrc)
$ vim +999 /etc/.bashrc
# +999 进入文件后,光标定位在尾行(第999行)
$ source /etc/.bashrc
# source 重新加载配置文件
删除空文件
# 删除当前目录下的空文件
$ find -maxdepth 1 -size 0 -exec rm {
} \;
ls rm批量删除文件
$ ls | grep *.zip | xargs rm
根据i节点查找、删除
# 查询文件i节点
$ ls -i
# 根据文件i节点删除
$ find . -maxdepth 1 inum 6507391 -delete
curl 去除统计信息
# -s 去除统计信息
$ curl -s www.baidu.com
curl查看请求耗时
curl -X GET -w "\ntime_namelookup:%{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" "https://www.baidu.com"
# time_namelookup: DNS 服务器域名解析的时间
# time_connect: client 发出请求,到 c/s 建立TCP 的时间;里面包括 DNS 解析的时间
# time_starttransfer: client 发出请求;到 server 响应发出第一个字节开始的时间;包括前面的2个时间
# time_total: 请求发起到链接关闭总耗时
根据用户统计内内存使用情况
$ ps -aux | grep -E '^USER|^uat' | awk '{print $1,$2,$3,$4}'
$相关运算整理
$(命令)
相当于`命令`$((运算式))
相当于$[运算式]${变量名}
相当于"$变量名"(包括双引号)[条件判断]
相当于“test 条件判断”
sh脚本参数传递
$0
是脚本本身的名字$1
是传递给该shell脚本的第一个参数$2
是传递给该shell脚本的第二个参数$@
是传给脚本的所有参数的列表$*
是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个$$
是脚本运行的当前进程ID号$?
是显示最后命令的退出状态,0表示没有错误,其他表示有错误
命令行常用快捷键
快捷键 | 说明 |
---|---|
ctrl+a |
把光标移动到命令行开头 |
ctrl+e |
把光标移动到命令行结尾 |
ctrl+c |
强制终止当前命令 |
ctrl+l |
清屏,相当于clear命令 |
ctrl+u |
删除、剪切光标之前的命令 |
ctrl+k |
删除、剪切光标之后的命令 |
ctrl+y |
粘贴 |
ctrl+r |
在历史命令中搜索,再按ctrl+r搜索匹配的下一条命令 |
ctrl+d |
退出当前终端 |
ctrl+z |
暂停进程,并放入后台 |
ctrl+s |
暂停屏幕输出 |
ctrl+q |
恢复屏幕输出 |
查询文件i节点
# 查看inode
$ ls -i
# 根据inode删除
$ find -maxdepth 1 -inum 11646107 -exec rm {
} \;
netstat查看WAIT_TIME连接状态数
# 根据状态分组计数
$ netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
# 根据WAIT_TIME计数
$ netstat -anp | grep TIME_WAIT | wc -l
# TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态
# 导致这个的原因应该是咱们的服务频繁的主动断开链接。