本文总结了工作中最常用的 Linux 命令,按类别整理并附示例、解释,非常适合作为查阅笔记。建议收藏!
📁 一、文件 & 文件夹处理
1. 文件拆分与合并
shell
# 按大小拆分
split -b 1G filename
split -b 900m filename
# 合并
cat ./* > filename
拆分/合并压缩包(bz2):
shell
split -b 900m name.tar.bz2 "name.tar.bz2.part"
cat name.tar.bz2.part* > name.tar.bz2
2. 文件行数统计
shell
wc -l filename
3. 压缩与解压
shell
tar -jcvf name.tar.bz2 filename # 打包压缩
tar -jxvf name.tar.bz2 # 解压
zip -r archive.zip file # zip 压缩
unzip archive.zip # zip 解压
4. 文件传输(scp)
shell
scp -P 22022 user@10.19.92.14:~/download ./
scp -P 22022 local_path user@10.19.28.107:/data
5. 批量查找文件内容
shell
find . -name "main.log.2023-02-02_*" | xargs grep "162108967569326080"
6. FTP / SFTP
shell
sftp user@IP
ftp ip
7. 文件内容替换(sed & vim)
sed 批量替换
shell
sed -i "s/pre/edit/g" file
VIM 替换
shell
:s/foo/bar # 当前行
:%s/foo/bar/g # 全局
:10,20s/foo/bar/g # 指定范围
8. 排除文件类型复制(rsync)
shell
rsync -av --exclude='*.csv' --exclude='*.txt' /src/ /dst/
9. 用 find 实现"排除文件类型的复制"
性能强、可处理特殊字符文件名。
shell
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. 替换
shell
:%s/old/new/gc # 全局带确认
:10,20s/old/new/gc # 指定行
2. 复制/粘贴
shell
yy # 复制当前行
p / P # 在后/前粘贴
nyy # 向下复制 n 行
3. 撤销
shell
u
4. 可视模式
shell
Ctrl + v # 块选择
5. 分屏
shell
:vsplit # 左右分屏
:sp file # 水平打开文件
:vsp file # 垂直打开文件
窗口切换:
shell
Ctrl + w + h
Ctrl + w + l
窗口大小:
shell
:vertical resize +10
:vertical resize -10
📤 三、输入 / 输出增强工具
xargs
shell
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:每批参数数量
🕒 四、时间相关
当前时间:
shell
date +"%Y-%m-%d %H:%M:%S"
日期计算:
shell
date --date="2 months ago" +"%Y-%m-%d"
date --date="2 days ago" +"%Y-%m-%d"
date --date="2 days" +"%Y-%m-%d"
crontab 定时任务
shell
crontab -e
crontab -l
设置系统时区
shell
cp /etc/localtime /etc/localtime.bak
ls /usr/share/zoneinfo
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
🌐 五、网络相关
curl(常见 REST 请求)
shell
curl -d '{"batchId": "xxx"}' \
-H "Content-Type: application/json" \
-X POST http://host:port/api
也可配合管道发送:
shell
echo '{"key":"value"}' | curl -X POST -H "Content-Type:application/json" --data @- http://host/api
防火墙检查(iptables / firewalld / ufw)
iptables
shell
sudo iptables -L
iptables -L -n -v | grep 8080
firewalld
shell
sudo systemctl status firewalld
ufw
shell
sudo ufw status
iptables 端口
shell
sudo iptables -F
sudo iptables -X
sudo iptables -P INPUT ACCEPT
🧩 六、进程相关
1. 查询端口使用情况
shell
lsof -i:port
ss -nlp | grep port
2. 查询进程工作目录
shell
cd /proc/pid
ls -l cwd
3. 强制杀死进程及子进程
shell
kill -9 $(ps -o pid= --ppid=29240)
kill -9 $(ps -o pid= --ppid=$1)
⚠ 磁盘满 / inode 满排查
shell
df -ih
df -vh
🛰 七、系统资源查看
shell
lscpu # CPU
free -m # 内存
lsblk # 磁盘
🗃 八、数据库 / Hive / beeline
shell
beeline -u "jdbc:hive2://host:10000/db" -n hive
Hive 导出 CSV:
shell
beeline ... --outputformat=csv2 -e "select * from tab"
🐳 九、Docker 常用命令
shell
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 卸载与环境迁移
卸载:
shell
conda install anaconda-clean
anaconda-clean
rm -rf ~/Apps/anaconda3
迁移环境:
shell
mkdir unpacked_env
tar -xzf deploy.tar.gz -C unpacked_env
source unpacked_env/bin/activate
🔧 十一、多进程 shell 模板(示例)
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