> For AI agents: the complete documentation index is available at https://www.tteam.icu/llms.txt, the full documentation bundle is available at https://www.tteam.icu/llms-full.txt.

# 快速脚本合集

## 最大20个文件

```bash
du -h / | sort -rh | head -20
```

```bash
find / -type f -exec du -sb {} + | awk '{ size_gb = $1 / (1024*1024*1024); printf "%.2fGB\t%s\n", size_gb, $2 }' | sort -nr | head -n 20
```

## 快速命令

### 删除历史命令

```bash
history -c && echo "" > ~/.bash_history && history -w
```

### 删除修改时间为三天前的文件

```bash
find . -maxdepth 1 -type d -mtime +3 -exec rm -rf {} \;
```

### 查看所有文件名和内容

```bash
awk 'FNR==1 {print FILENAME} {print}' *.conf | less
```

### 查看去掉注释和空行

```bash
grep -Ev '^\s*($|#|;)' example.conf
```

### 检索指定条件的nginx，统计用户ip

```bash
zcat * | grep 1234 | jq -r 'select(.remote_addr | contains("192.168") | not) | .remote_addr' | sort | uniq -c | sort -rn
```

### 删除除最近修改以外的所有zip文件

```bash
find . -type f -name "*.zip" -printf "%T@ %p\n" | sort -nr | tail -n +2 | awk '{print $2}' | xargs rm -f
```

### 多线程压缩

```bash
tar -cf - test | pigz -p 3 > test.tar.gz
```

### 查询docker容器创建

```bash
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ddsderek/runlike <container_id>
```

### 分组查看请求类型

```bash
ss -ano | awk '{print $2}' | sort -n | uniq -c | sort
```

### 单行改密码

```bash
echo <passwd> | passwd root --stdin
# salt批量修改密码
python3 -c "import crypt; print(crypt.crypt('your_password', crypt.mksalt(crypt.METHOD_SHA512)))"
salt '*' shadow.set_password root '<hashed_password>'
```

### 删除30天前文件

```bash
find /data/app/tmp -mtime +30 -name "*.flv" -exec rm -Rf {} \;
```

### 关闭swap

```bash
sed -ri 's/.*swap.*/#&/' /etc/fstab && swapoff -a
```

### 随机密码

```shell
PASSWORD=$(base64 < /dev/urandom | head -c16); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
```

### 当前目录修改字符串

```shell
for file in $(ls); do sed -i 's/nmg/sz/g' "$file"; done
```

### Docker Build构建使用http代理

```shell
docker build --build-arg https_proxy=127.0.0.1:8088
```

### 保存包并安装


**debian12**

```shell
apt-get install dpkg-repack

# 保存主软件包
dpkg-repack telnet
apt-get download telnet

# 保存主软件包和所有依赖
apt-cache depends telnet

# 导入包
dpkg -i telnet.deb
```


**centos7**

```shell
yum install yum-utils -y

# 保存主软件包
yumdownloader telnet

# 保存主软件包和所有依赖
repotrack telnet

# 导入包，以下两个都可以
yum localinstall telnet.rpm
rpm -ivh telnet.rpm
```


### htpasswd 密码

```shell
USERNAME=muen-admin;
PASSWORD=$(base64 < /dev/urandom | head -c16);
echo "USERNAME:$USERNAME,PASSWORD:$PASSWORD";docker run --rm \
--entrypoint htpasswd \
httpd:alpine \
-mbn $USERNAME $PASSWORD > nginx.htpasswd

# -mbn Force MD5 encryption
# -Bbn Force bcrypt encryption
```

### 生成ssh证书

```shell
ssh-keygen -t rsa -b 4096 -N "" -f /root/.ssh/id_rsa

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

# 然后保存/root/.ssh/id_rsa用于连接
```

## 线上排错

### 连接数占用

```shell
# 查看源端口为40000端口的，客户端连接按数量排序前50个
ss -tn sport = :40000 | awk '{print $5}' | cut -d':' -f1 | sort | uniq -c | sort -nr | head -n 50
# 去重连接数
ss -tn sport = :40000 | awk 'NR > 1 {print $4}' | cut -d':' -f1 | sort -u | wc -l
# 总连接数
ss -ano | grep 40000 | wc -l
```

## ssh代理

### 原生ssh

[ssh代理](https://www.tteam.icu/ops/vpn/gost.md#%E4%BA%8C%E3%80%81ssh%E4%BB%A3%E7%90%86)

### 自动重连

`-M`后面传`0`就是随机在远程主机上`32768-65535`开一个端口来监听，如果传自定义值就是指定端口监听

::: tip

注: 还是会监听`22`端口

:::

```bash
yum install -y autossh

autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NfR *:11000:172.168.1.1:6061 root@172.168.1.1
```

## docker清理

### 清理镜像

```bash
docker image prune -a 
```

### 显示当前占用磁盘空间的 Docker 资源

```bash
docker system df
```

### 清理构建缓存

```bash
docker builder prune -a
```

### 删除未被使用的容器、网络和数据卷等其他资源

```bash
docker system prune -a
```

## 代理相关

### `curl`使用代理

```bash
# socks5代理
curl -x socks5h://user:xxx@192.168.1.1:1080
```

## 脚本格式

```bash
# 需要用到dos2unix包
find . -type f -exec dos2unix {} \;
```

## 脚本传参

```sh file="./shell/script_parameters.sh" title="script_parameters.sh"
#!/bin/bash

parse_commandline() {
  while test $# -gt 0
  do
    key="$1"
    case "$key" in
      -i|--install-dir)
        PARSED_INSTALL_DIR="$2"
        shift 2
        ;;
      -b|--bin-dir)
        PARSED_BIN_DIR="$2"
        shift 2
        ;;
      -u|--update)
        PARSED_UPGRADE="yes"
        shift
        ;;
      -h|--help)
        usage
        exit 0
        ;;
      *)
        die "Got an unexpected argument: $1"
        ;;
    esac
  done
}

usage() {
  echo "Usage: scriptname [options]"
  echo "Options:"
  echo "  -i, --install-dir    Specify installation directory"
  echo "  -b, --bin-dir        Specify binary directory"
  echo "  -u, --update         Update the installation"
  echo "  -h, --help           Show this help message"
}

die() {
  echo "$@" >&2
  exit 1
}

parse_commandline "$@"
echo "Install directory: $PARSED_INSTALL_DIR"
echo "Bin directory: $PARSED_BIN_DIR"
```

## 在csv文件中排除

```sh file="./shell/exclude_csv.sh" title="exclude_csv.sh"
temp_file_name="temp_database.csv"
exclude_list="
aaa
"
function exclude_database {
    file=$1

    rm -f ${file}

    line_num=0
    for instance in $(cat ${temp_file_name}|egrep -v "^#");do
        id=$(echo "${instance}" |awk -F ',' '{print $1}')
        excluded=false

        for excluded_item in $exclude_list; do
            if [[ "$id" == "$excluded_item" ]]; then
                excluded=true
                break
            fi
        done

        if [ "$excluded" == false ]; then
            echo "${instance}" >> ${file}
        fi
    done

    rm -f ${temp_file_name}
}
```

## 连接数优化

```bash
cat << EOF >> /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.core.somaxconn=65535
net.ipv4.tcp_max_tw_buckets=1440000
net.ipv4.ip_local_port_range=1024 65000
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=15
EOF
sysctl -p
```

## salt相关

### 查询内存使用情况

```bash
salt '*' cmd.run "free | awk '/^Mem:/ {printf \"Memory Usage: %.2f%% (Used: %s / Total: %s)\\n\", \$3/\$2*100, \$3, \$2} /^Swap:/ {if (\$2 > 0) printf \"Swap Usage: %.2f%% (Used: %s / Total: %s)\\n\", \$3/\$2*100, \$3, \$2; else print \"Swap Usage: 0.00% (No Swap)\"}'"
```

## 测试相关

### 测速


**centos7**

```bash :no-line-numbers
yum install -y epel-release
yum install -y iperf3
```


**debian12**

```bash :no-line-numbers
apt-get install -y iperf3
```


```bash
# 默认端口 5201
# 服务端
iperf3 -s
# 客户端
# 上传
iperf3 -c <server_ip>
# 下载
iperf3 -c <server_ip> -R
```
