Linux常用命令总结

一、常用指令

1、Vim

(1)命令行模式

:wq    保存退出
:q!    不保留强制退出控制台
:q     退出控制台
u      恢复上一次操作
set nu  列出行号
:5      跳到第5行
/搜索内容  n搜索下一个
1$     移动到当前行行尾
0      移动到当前行行首

(2)插入模式 

i   开始编辑,从当前位置输入文字
a   开始编辑,从当前光标的下一个位置开始输入
o   开始编辑,插入新的一行,从行首开始输入文字
esc   切换为命令行模式

(3)移动光标

comm+b   屏幕往后移动一页
comm+f   屏幕往前移动一页
comm+u  屏幕向后移动半页
comm+d  屏幕向前移动半页
O    移动到文章开头
G    移动到文章结尾
$     移动到行尾
^     移动到行首
5l    移动到该行第五个位置

(4)删除文字

x   删除光标后面一个文字
5x  删除光标后面5个字符
X   删除光标前面一个字符
2X  删除光标前面5个字符
dd  删除当前行
5dd  删除光标开始5行
https://www.cnblogs.com/itech/archive/2009/04/17/1438439.html

2、查找替换文件

(1)查找纯数字文件:

  find . -regex "./[0-9]+.jpg" 

      当前目录和子目录查找文件名  find ./ -name 'hadoop-temrfs*'

(2)查找纯数字文件,移动到上一层的test文件夹下

  find . -regex "./[0-9]+.jpg" | xargs -i cp {} ../test1

(3??)当前目录模糊搜索文件内容

  find . -type f | xargs grep 'test-p'

  cat */*.properties | grep  '搜索内容'

      grep -E "10.2.2.2|10.2.2.3" *              批量搜索

      grep "搜索内容" */*.properties

(3)当前文件夹下查找包含字符串mysql-bin的文件

  grep -rn mysql-bin ./

      grep -l mysqlstar  */*   (推荐,当前下一级目录下搜索mysqlstr)

(4)替换当前文件夹下文件内容

  sed -i 's:/apps/home/worker/wanglei:/apps/srv:g' *

  参数说明:

  -i  加上后修改文件,不加则控制台展示

  s:   指定分隔符 

  g: 一行出现多个都替换

  *:当前目录所有文件

  sed -i 's:替换前:替换后:g' *

(5)清空文件

  echo >test.sh

(6)删除文件

  删除文件:rm text.txt

  删除文件夹:rm -rf ./test

  删除大文件夹: 首先创建空目录 mkdir /tmp/empty

  然后删除(注意末尾斜线):  rsync --delete-before -d /tmp/empty/ /home/ubuntu/test1/

  剔除一个文件,其它删除  ls impala_lineage_log_1.0-16* | grep -v impala_lineage_log_1.0-1641536014659 | xargs -n100 rm -f 

  删除乱码文件:先ls -i 拿到文件id,然后执行 find -inum 节点号 -delete

(7)当前目录搜索文件名

  ll *文件名名称*
(8)递归查询test文件夹下 包含某字符串的文件名
  grep -r 'NoAuthWithCOSException' ./test
(9)统计文件中第二列,相加总数
      awk '{sum+=$2} END{print sum}' ./test.txt
(10)查找某个目录
  find / -name 'search_disk' -type d
(11)查找某个路径下有无方法
      find /usr/local/service/spark -name "*.jar" | xargs grep -Hsli   org.apache.spark.sql.internal.VariableSubstitution
(12)排序列出文件
  ls -ltr
 

3、压缩解压文件

(1)压缩文件夹

  tar -czf test1.tar.gz ./test1/

(2)解压文件夹

      tar -zxf nginx-1.20.1.tar.gz -C /opt/softWare/

      tar -zxf kafka_2.12-2.4.0.tgz 

4、系统资源

(1)统计每个目录下磁盘使用情况

  df -h

(2)查看某个目录文件大小

  某目录大小  du -bsh ./storage/

  当前目录下文件大小,按大小排序   du -sh * | sort -h

      当前目录总容量   du -sh

      当前目录下一级节点占用资源   du -lh --max-depth=1

  文件夹中文件个数,需要组合grep使用:wc -l

(3)查看内存占用情况

      free -h  友好展示

  free -m  以MB展示

(4)查看端口占用情况

lsof -i:8080
netstat -nlp  推荐使用
netstat -an | grep 8080

(5)查看Java程序进程情况

  jps -lm  可加v

  查看进程连接的端口

  netstat -nap | grep 436390 | grep 7001

(6)定时任务

  crontab -l 查看本地定时任务

  crontab -e 编辑本机定时任务,两分钟左右生效

  例:* 3 * * * /bin/sh /apps/home/worker/bin/clean_log.sh >> /apps/home/worker/bin/logs/clean_log.log

      查看定时任务执行日志:sudo tail -100 /var/log/cron

(7)搜索Linux服务

      查询所有进程     ps -ef

  查找指定进程     ps -ef | grep 'java'

      查看某个服务启动参数  ps -ef|grep jindowin

      查看pid启动的工作目录 pwdx pid

      查看进程,带进程占用资源 ps aux

(8)查看远程端口是否开启

  telnet baidu.com 11111

       nc -v ip地址 端口

   nc -vz -w 2 www.baidu.com 80

(9)查看当前目录哪个文件被占用

  lsof *

(10)查询服务器tcp连接状态

  netstat -n|grep 80 | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 

(11)查看当前tcp连接

  连接数netstat -anp |grep tcp |wc -l

      tcp连接的ip:

  netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n |grep -E '172.16.42.196|172.16.42.197|172.16.18.237|172.16.18.238|172.16.22.30|172.16.22.31|172.16.7.227'

(12)服务器信息查看

  查看cpu信息  less /proc/cpuinfo

  物理cpu个数 less /proc/cpuinfo|grep 'physical id'

  物理cpu中核数  less /proc/cpuinfo|grep 'cpu cores'     

  逻辑cpu核数  less /proc/cpuinfo|grep 'processor'

(13)清理12月之前的Flink checkpoint 目录

      除了2021年12月的保留,其它删除

  hdfs dfs -ls /flink/flink-checkpoints | grep -v 2021-12 | grep "/flink" | awk '{print $8}' | xargs -n50 hdfs dfs -rm -r -skipTrash

      仅删除2021-11的数据,放回收站。 可多个操作,实际执行命令 hdfs dfs -rm -r 文件1 文件2

      hdfs dfs -ls /flink/flink-checkpoints | grep 2021-11|awk '{print $8}'|xargs -n2 hdfs dfs -rm -r 

      仅删除2022-02的数据,放回收站。传参方式执行{}为参数值,每次操作一个,实际执行命令 hdfs dfs -rm -r 文件1

      hdfs dfs -ls /flink/flink-checkpoints | grep 2022-02|awk '{print $8}'|xargs -n1 -i hdfs dfs -rm -r {}

(14) 查看服务器使用率

   cpu使用率最高top2     ps auxw|head -1;ps auxw|sort -rn -k3|head -2

   内存使用率最高top2   ps auxw|head -1;ps auxw|sort -rn -k4|head -2

(15)查询等待连接数

   netstat -nap| grep $port | grep TIME_WAIT | wc -l

(16)服务器抓udp类型包

  tcpdump -i eth0 udp -w ~/udplog.txt

(17)查询本服务器连接的ip

  netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}' | sort | uniq -c |grep -E '172.16.42.196|172.16.42.197'

(18)本地发送post请求

curl -X POST 'http://127.0.0.1:8081/api/biz/listall'  --header 'Content-Type: application/json;charset=UTF-8' --header 'Cookie: GID=1233333; JSESSIONID=CF6B503AD61A2170E1546ADE5AA675F8;' -d'{"keyword":"","pager":{"pageNum":1,"pageSize":10},"bizType":17}'

(19)查询mysql并下载结果到本地

gomysql -e "select * from tab1 where isdel=0 and cname like '%辅导老师%'"  > /tmp/test.txt

(20)根据进程id批量kill进程

 jps -lm |grep aa|awk '{print $1}'|xargs -n1 kill -9

(21)查看某个任务内存使用情况

jstat -gcutil 294553 1000

(22)jstack

jstack在进程占用的cpu飚高时,可用于排查相关线程。注意top -Hp显示线程信息中的线程ID是十进制,但jstack导出文件(jstack PID > file)中, 线程ID为十六进制, 在搜索前需先做转换。
(23)jmap
jvm命令堆内存紧张时的分析工具,通过命令 jmap -dump:live,format=b,file=XX.hprof PID 将堆转储到文件,再使用分析工具读取(例如Eclipse商店里的Memory Analysis),即可查看内存中占大比例的对象及个数。

(24)parallel
  单机并行工具,极大地缓解了awk, sed等工具在处理大文件时的单线程高延时问题,前提是机器具备多处理器,相当于在单机执行一次map-only任务。
  例如对于大文件求和,原命令 awk '{sum+=$0}END{print sum}' bigfile
  使用并行方式 cat bigfile | parallel -j 8 --pipe awk '{sum+=$0}END{print sum}'
  执行结果将输出8个子文件的统计结果,需再次进行加工处理求总和,但运行时间大篇幅缩短。

(25)需改权限组

chown hadoop:hadoop luoshu -R
(26)修改文件读写权限
chmod 755 test
(27)查看某进程最后启动时间
ps -o lstart -p 14289
(28)查看服务器io情况,找费资源的pid
iotop -oP
(29)查看文件有没有使用
fuser -v test.sh
(30)磁盘使用过高,删除文件后没释放磁盘的文件
lsof | grep deleted
lsof +L1

 

5、上传下载

(1)本地和服务器之间文件传输

  rz  sz 上传下载

      上传失败使用rz -bey方式

(2)sftp方式上传下载(上传下载都需要挪文件到/tmp目录下)

  连接:sftp -P 2222 wangshida@jumpserver.baijia.com

  下载:get -r /home/data   /home/my

  上传:put /home/fuyatao   /var/www/fuyatao/

(3)服务器之间传输文件,跨堡垒机

压缩后发送文件夹
发送端:tar -zcvf - wangshida/ --exclude logs | nc -l 1234
接收端(8秒):nc -i8 172.16.1.244 1234 | tar -zxvf -

单文件发送
接收方:nc -l 10086 > test-gql.baijiahulian.com.conf
发送方:nc -n 172.16.34.69 10086 < test-gql.baijiahulian.com.conf

(4)scp文件上传下载

下载
scp -r root@192.168.0.101:/home/meicai/test /opt/meicai
scp -r dev02:/opt/meicai /opt/meicai
scp root@10.10.20.19:/usr/local/service/amoro.tar.gz ./
上传
scp -P 22 -r test root@192.168.0.101:/var/www/
scp /opt/test1.txt dev02:/opt
(5)nc
 端口传送,跳过权限。考虑以下场景:两个人(A和B)各自拥有一台服务器(a和b)的权限,因工作需要,希望将a机器上的文件发送到b机器,但A和B都不想将本方机器的权限授予对方。该情况下scp和rsync都不能使用,昏招就是A先用sz命令将文件从a传输到本地,再通过本地工具(QQ,U盘等)给B,最后B使用rz命令将本地文件上传到b。分3次传输不仅麻烦,而且线上线下之间网速往往很差,遇到大文件相当耗时。使用nc可解。
  A在a服务器执行: nc -l 1234 < file   然后B在b上执行nc a 1234 > file 即可通过协议将文件以流形式传递。 1234不是专属端口,可根据情况随意指定, 只要当前在a端没有被占用即可,但要保证两边一致。因为以流形式传递,权限不会附带,在b端都是普通的文本文件,默认权限644.
  如果传输目录,可边压缩边传输边解压,a端执行 tar -zcvf - dir | nc -l 1234, b端执行 nc a 1234 | tar -zxvf -
 

6、代码shell

(1)生成连续数字(seq)

seq 20210901 20210920

(2)管道过滤器,一般结合管道符(|)使用(xargs)

文本打印成一行输出(不带参数)

seq 20210901 20210920 | xargs

文本一行三列输出(-n)

seq 20210901 20210920 | xargs -n3

文本根据界定符分割(dX单个字符X)

echo "nameXnameXnameXname" | xargs -dX

查找所有jpg文件,并压缩它们

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

批量删除文件(只能一个一个月删除)

seq 20210909 20210920|xargs -n1 -i rm -r /home/ubuntu/test/{}

seq 20210501 20210531 | xargs -n1 -i hdfs dfs -rm -r /user/hive/warehouse/dw.db/logbak/batchEventLog/dt={}​

(3)日期段删除数据

date -f <(seq -f%.0f 20210901 20211130) +%Y%m%d 2>/dev/null | xargs -n1 -i hdfs dfs -rm -r /user/hive/warehouse/dw.db/logbak/gsLog/dt={}

(4)curl模拟请求(可用postman生成)

curl --location --request POST 'http://172.16.43.181:21098/api/biz/list' \
--header 'cookie: CAS_AC_CURRENT_ROLE=habo_admin; GID=1732d7c6a77bb9dd313c41c138e560f2; _ga=GA1.2.781205015.1639030044; _gid=GA1.2.1395978213.1639030044; _const_d_jsession_id_=6f8d97e6d49b478ebdc26fd7499a2df5.compass.baijia.com; JSESSIONID=B9C5018DC2D13716AAACF536DDF12D15' \
--header 'Content-Type: application/json' \
--data-raw '{"bizType":1}'

(5)文件对比,需要先对文件排序去重。

区分大小写:comm <(sort a.txt|uniq) <(sort b.txt|uniq)

不区分大小写:comm <(sort a.txt|uniq -d -i) <(sort b.txt|uniq -d -i)

统计重复次数:uniq -c uniq_file.txt

(6)文件对比,不需要先去重

  diff -y sort1 sort2
(7)高级方式
  文件不去重:awk '(NR==FNR){a[$1]=1}(NR>FNR && !a[$1]){print $1}' sort1 sort2

  文件去重:awk '(NR==FNR){a[$1]=1}(NR>FNR && !a[$1]){print $1}' <(cat test1|uniq) <(cat test2|uniq)

  文件内大小写去重:  awk '(NR==FNR){a[tolower($1)]=1}(NR>FNR && !a[tolower($1)]){print $1}' <(cat test1|uniq -i) <(cat test2|uniq)

7、系统管理优化

(1) 修改权限,支持worker用户切换root
root用户修改:/etc/sudoers
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
下面新增
worker ALL=(ALL) NOPASSWD: ALL,ALL

8、堡垒机登录

ssh -i ./new_用户名.pem 用户名@jumpserver.公司.com -p 50022
9、设置快捷命令,可以输入coder快速进入目录
vim ~/.barhrc  增加
alias coder='cd /usr/local/Project/IdeaProject/'
source ~/.bashrc
10、后台运行任务
nohup cmd 1>/var/log/script/test111 2>&1 &
1正常信息2错误信息
 
 

 

posted @   Robots2  阅读(139)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示