Linux 常用命令精简

for 循环执行

# echo 1 可以替换为其他需要执行的命令
for i in {1..100}; do echo 1; done

sort 根据某一列排序

# -k 2表示按照第2列进行排序
# -n 表示按照数值进行排序
sort -k 2 -n test.txt

cat 打印文件名

使用cat查看文件内容的同时,在文件内容前打印文件名:

for file in *.txt; do \
    cat -n $file | sed "s/^/$(echo $file | awk -F'[/]' '{print $NF}' | sed 's/\./\\./g'):/g" | grep "需要查找的内容" \
done

更简单的实现方式:

(当 grep 多个文件使用时,会自动打印文件名)

grep "需要查找的内容" *.txt

执行结果:

在这里插入图片描述

tail

# 持续查看单个文件的末尾更新内容
tail -f test.log
# 查看文件的末尾300行
tail -n 300 test.log
# 从文件的末尾300行开始,持续查看单个文件的末尾更新内容
tail -300f test.log
# 查看多个文件,并展示内容所属具体文件名
tail -fv test*

tail -fv test* 的执行结果示例如下:

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 [文件夹] 查看文件夹的信息,不加是查看文件夹下的文件
# -t 按照时间排序
# -r 对目录反向排序

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] 向上翻页

vim全局替换

# 将第一行到最后一行的test都替换成test1
:1,$s/test/test1/g

grep

$ grep [-iv] [搜索内容] [文件]
# '单引号表示全引用,扩起的内容如果包括变量不会被替换
# "双引号表示部分引用,扩起的内容如果包括变量会被替换为具体值
# -F 如果内容包括[]+-等特殊符号可能会被识别为正则,使用-F表示只是文本,搜索不到可以加一下这个参数
# -v 排除指定字符串
# -E 匹配多个,例:grep -E 'USER|uat'
# -c 统计行数
# -n 显示文件中行号,如果在管道符中,代表前一个结果的行号
# -i 不区分大小写
# -o 只显示匹配部分(可配合wc -l命令来统计关键字的在每行的所有出现次数)

统计关键字的在每行的所有出现次数

$ grep -o "test" test.txt | wc -l

test.txt 内容如下:

在这里插入图片描述

执行结果:

在这里插入图片描述

解压war包

$ unzip common.war -d common

awk

注意:获取某一列的话(如$1,$NF),必须用单引号,否则不生效。

# 查看第一列和最后一列
$ 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 "==>"

# awk去重
awk '!x[$0]++' [文件名]

# awk指定分隔符(方式一)
awk -v FS=',' '{print $1,$2}' [文件名]

# awk指定分隔符(方式二)
awk -F, '{print $2}' [文件名]

# awk打印整行
awk -F, '{print $0}' [文件名]

# awk获取每行字符数
awk '{print length}' [文件名]

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状态
# 导致这个的原因应该是咱们的服务频繁的主动断开链接。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿放下技术的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值