常用 Linux 命令大全(文件、网络、时间、进程、数据库、设备全覆盖)

本文总结了工作中最常用的 Linux 命令,按类别整理并附示例、解释,非常适合作为查阅笔记。建议收藏!


一、文件 & 文件夹处理

1. 文件拆分与合并

# 按大小拆分
split -b 1G filename
split -b 900m filename
# 合并
cat ./* > filename

拆分/合并压缩包(bz2):

split -b 900m name.tar.bz2 "name.tar.bz2.part"
cat name.tar.bz2.part* > name.tar.bz2

2. 文件行数统计

wc -l filename

3. 压缩与解压

tar -jcvf name.tar.bz2 filename     # 打包压缩
tar -jxvf name.tar.bz2              # 解压
zip -r archive.zip file             # zip 压缩
unzip archive.zip                   # zip 解压

4. 文件传输(scp)

scp -P 22022 user@10.19.92.14:~/download ./
scp -P 22022 local_path user@10.19.28.107:/data

5. 批量查找文件内容

find . -name "main.log.2023-02-02_*" | xargs grep "162108967569326080"

6. FTP / SFTP

sftp user@IP
ftp ip

7. 文件内容替换(sed & vim)

sed 批量替换

sed -i "s/pre/edit/g" file

VIM 替换

:s/foo/bar            # 当前行
:%s/foo/bar/g         # 全局
:10,20s/foo/bar/g     # 指定范围

8. 排除文件类型复制(rsync)

rsync -av --exclude='*.csv' --exclude='*.txt' /src/ /dst/

9. 用 find 实现“排除文件类型的复制”

性能强、可处理特殊字符文件名。

find "$SOURCE_DIR" \( -name "*.csv" -o -name "*.txt" \) -prune -o -type f -print0 |
while IFS= read -r -d '' file; do
rel_path="${file#$SOURCE_DIR/}"
mkdir -p "$DEST_DIR/$(dirname "$rel_path")"
cp "$file" "$DEST_DIR/$rel_path"
done

核心逻辑解释

  • print0 + -d '' 处理换行/空格安全
  • ${file#$SOURCE_DIR/} 用于提取相对路径
  • prune 用来排除特定类型文件
  • while ... read 循环复制所有非排除文件

二、VIM 操作速查

1. 替换

:%s/old/new/gc      # 全局带确认
:10,20s/old/new/gc  # 指定行

2. 复制/粘贴

yy               # 复制当前行
p / P            # 在后/前粘贴
nyy              # 向下复制 n 行

3. 撤销

u

4. 可视模式

Ctrl + v   # 块选择

5. 分屏

:vsplit         # 左右分屏
:sp file        # 水平打开文件
:vsp file       # 垂直打开文件

窗口切换:

Ctrl + w + h
Ctrl + w + l

窗口大小:

:vertical resize +10
:vertical resize -10

三、输入 / 输出增强工具

xargs

find . -name "*.txt" | xargs rm
echo "a,b,c" | xargs -d , echo
echo "a b c" | xargs -n 1 -P 3 gzip
  • -d:自定义分隔符
  • -P:并行数
  • -n:每批参数数量

四、时间相关

当前时间:

date +"%Y-%m-%d %H:%M:%S"

日期计算:

date --date="2 months ago" +"%Y-%m-%d"
date --date="2 days ago" +"%Y-%m-%d"
date --date="2 days" +"%Y-%m-%d"

crontab 定时任务

crontab -e
crontab -l

设置系统时区

cp /etc/localtime /etc/localtime.bak
ls /usr/share/zoneinfo
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date

五、网络相关

curl(常见 REST 请求)

curl -d '{"batchId": "xxx"}' \
-H "Content-Type: application/json" \
-X POST http://host:port/api

也可配合管道发送:

echo '{"key":"value"}' | curl -X POST -H "Content-Type:application/json" --data @- http://host/api

防火墙检查(iptables / firewalld / ufw)

iptables

sudo iptables -L
iptables -L -n -v | grep 8080

firewalld

sudo systemctl status firewalld

ufw

sudo ufw status

iptables 端口

sudo iptables -F
sudo iptables -X
sudo iptables -P INPUT ACCEPT

六、进程相关

1. 查询端口使用情况

lsof -i:port
ss -nlp | grep port

2. 查询进程工作目录

cd /proc/pid
ls -l cwd

3. 强制杀死进程及子进程

kill -9 $(ps -o pid= --ppid=29240)
kill -9 $(ps -o pid= --ppid=$1)

⚠ 磁盘满 / inode 满排查

df -ih
df -vh

七、系统资源查看

lscpu       # CPU
free -m     # 内存
lsblk       # 磁盘

八、数据库 / Hive / beeline

beeline -u "jdbc:hive2://host:10000/db" -n hive

Hive 导出 CSV:

beeline ... --outputformat=csv2 -e "select * from tab"

九、Docker 常用命令

docker save -o image.tar image_id
docker load < image.tar
docker run -itd -p 8005:8005 -v /local:/container \
--name EasyRec --runtime=nvidia image /bin/bash

十、Anaconda 卸载与环境迁移

卸载:

conda install anaconda-clean
anaconda-clean
rm -rf ~/Apps/anaconda3

迁移环境:

mkdir unpacked_env
tar -xzf deploy.tar.gz -C unpacked_env
source unpacked_env/bin/activate

十一、多进程 shell 模板(示例)

for product in "${products[@]}"; do
if [[ "$product" == "plan_id" || "$product" == *"|"* || "$product" == *"+"* ]]; then
continue
fi
echo "Query: ${product}"
kinit -kt keytab user
hdfs dfs -test -e hdfs://path/${product}
test $? -ne 0 && hdfs dfs -mkdir hdfs://path/${product}
for ((i=1;i<=3;i++)); do
beeline -u ...
hdfs dfs -getmerge hdfs://path/${product}/* ${product}.csv
test $? -eq 0 && break
sleep 5
done
done

posted @ 2025-12-20 20:25  clnchanpin  阅读(101)  评论(0)    收藏  举报