常用的 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