常用的 Linux 命令


安装ps命令

1yum install -y procps
2apt-get update
3apt-get install procps

安装 vi 命令

1yum install -y vim
2apt-get update
3apt-get install vim

安装ping命令

1yum install -y iputils
2
3## 同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包
4apt-get update
5apt-get install iputils-ping
6apt-get install dnsutils

yum -y install telnet

安装telnet命令

1yum install -y telnet
2https://www.cnblogs.com/east7/p/15834866.html

查找目录下文件大小

 1du -h --max-depth=4 |grep 'G' |sort
 2
 3find / -type f -size +1000M -print0 | xargs -0 du -h | sort -nr
 4
 5du -d5 -h ./ | sort -h
 6
 7#按文件大小逆向排序  
 8ls -lSr
 9
10# 按文件大小排序  
11ls -lS

查找目录下文件

1find ./ -name test-sql.txt | xargs sed -i 's/dws_xxxx_product_ad_spu_df/dws_xxxx_product_ad_spu_df_backup/g'
2find ./ -name ad_spu.sql | xargs sed -i 's/dws_xxxx_product_ad_spu_df/dws_xxxx_product_ad_spu_df_backup/g'

清空文件内容

1cat /dev/null > filename
2: > filename
3> filename
4echo "" > filename
5echo > filename

统计筛选日志

 1#查找特定日志格式下的某个字段
 2awk -F'[,]' '{print $19}' server-verbose.log | awk -F':' '{print $2}'
 3awk -F'[,]' '{print $19}' server-verbose.log | awk -F':' '{print $2}' | awk '{print substr($1,1,8)}'
 4
 5#删除特定字符
 6awk -F'[,]' '{print $19}' server-verbose.log | awk -F':' '{print $2}' | sed 's/"//g' 
 7
 8#去重,uniq只会去重相邻的两行,因此需要先sort 排序
 9awk -F'[,]' '{print $19}' server-verbose.log | awk -F':' '{print $2}' | sed 's/"//g' | sort | uniq
10
11cat xxx.log | awk -F'[,]' '{print $19}' | awk -F':' '{print $2}' | sed 's/"//g' | sort | uniq
12awk -F'[,]' '{print $19}' server-verbose.log | awk -F':' '{print $2}' | sed 's/"//g' | awk '!x[$0]++'
13
14## 排序并按照次数删除
15sort | uniq | wc -l
16
17#统计人数
18cat test.txt|awk -F '|' '{x[$1]++;} END{for(i in x) print(i ":" x[i])}'

文件之间差集

 1# a-b的差集
 2sort gray_user_id.txt 近30天访问用户旅程用户与全部重点用户.txt | uniq -u >> diff_data.txt;
 3
 4# 查询 a.txt内容且排出b.txt的内容,数据量小用
 5grep -v -f b.txt a.txt | uniq -u >> diff_data_test.txt
 6# 查询 a.txt内容且排出b.txt的内容,数据量大用
 7awk 'NR==FNR{a[$0]++;next} !a[$0]' b.txt a.txt > diff_data1.txt
 8
 9# 两个文件内容交集
10comm -1 -2 gray_user_id.txt anonymous_user_id.txt

流量抓包

 1# -v : 打印详细输出,-i : 指定网卡, 例如eth0, any代表所有网卡,-s : 指定捕获的数据包的大小, 0代表不限制
 2# -w : 保存到文件 test.cap,host : 过滤IP,port : 过滤端口
 3tcpdump -v -i any -s 0 -w test.cap host 192.168.0.1 and port 5001
 4
 5# nohup : 后台抓包,-C : 每隔500M生成一个文件,-W : 保留最近生成的5个文件
 6nohup tcpdump -i eth0 host 192.168.0.1 -w /tmp/test.pcap -C 500 -W 5 &
 7
 8# linux上查看抓包文件
 9tcpdump -r test.cap
10
11tcpdump -i eth1 'port domain and (host 1.128.49.8 or 4.12.49.2)'

端口使用

1netstat -tuln | grep :8849
2conntrack -L | grep 9.27.74.132

查询 cron 任务

 1# 查询系统 cron 任务
 2cat /etc/crontab
 3ls /etc/cron.d/
 4cat /etc/cron.d/*
 5
 6# 查看用户级 crontab
 7crontab -l
 8sudo crontab -u 用户名 -l
 9
10# 例子如下
11# */10 * * * * root (which service > /dev/null 2>&1 && (service clickhouse-server condstart ||:)) || /etc/init.d/clickhouse-server condstart > /dev/null 2>&1

新增 cron 任务

 1# 1、编写 shell 脚本
 2vim /path/to/redis_delete.sh
 3
 4#!/bin/bash
 5
 6# Redis 连接参数
 7REDIS_HOST="222.10.244.6"
 8REDIS_PORT=6379
 9REDIS_PASSWORD='xxxx'
10REDIS_DB=1
11
12# 要匹配的键模式
13KEY_PATTERN="ad_dimension_analysis*"
14
15# 使用 redis-cli 的 SCAN 命令查找匹配的键,并通过 xargs 批量删除
16redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" -a "$REDIS_PASSWORD" -n "$REDIS_DB" --scan --pattern "$KEY_PATTERN" | \
17xargs -L 2000 redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" -a "$REDIS_PASSWORD" -n "$REDIS_DB" del
18
19# 2、赋予脚本执行权限
20chmod +x /path/to/redis_delete.sh
21
22# 3、脚本添加到 crontab,打开当前用户的 crontab 文件
23crontab -e
24
25# 4、添加定时任务,表示每 3 天的零点零分执行一次任务
260 0 */3 * * /path/to/redis_delete.sh >> /path/to/redis_delete.log 2>&1
27# 调度配置 0(秒) 0(分) */3( 天(每 3 天)) *(月) *(星期)

扩容云磁盘

1fdisk/e2fsck/resize2fs