Linux 系统管理:高频运维场景的一键命令合集

  • 1407 字

查看所有硬盘的SMART详细信息

依赖包安装

1
sudo apt install smartmontools

命令介绍

首先使用lsblk获取所有的存储设备,然后使用grep过滤出sdhdnvmevd开头的设备,最后使用xargssmartctl获取每个设备的SMART信息。

1
lsblk -d -o NAME | grep -E '^(sd|hd|nvme|vd)' | xargs -I {} sudo smartctl -a "/dev/{}"

查看所有硬盘的SMART详细信息(极简输出)

依赖包安装

1
sudo apt install smartmontools

命令介绍

流程同上

1
lsblk -d -o NAME | grep -E '^(sd|hd|nvme|vd)' | xargs -I {} sudo smartctl -H "/dev/{}"

定位进程所属容器/Pod

依赖包安装

定位pod需要crictl

1
sudo apt install crictl

命令介绍

Docker

首先使用catgrep获取进程所属的cgroup,然后使用docker psgrep获取容器ID。

1
docker ps | grep $(sudo cat /proc/<pid>/cgroup | grep -oP 'docker-\K[a-f0-9]+' | head -c 12)

ctr(containerd)

首先使用catgrep获取进程所属的cgroup,然后选取包含pids的一行以去掉重复数据,直接从最后的信息中提取命名空间和容器名称。

1
sudo cat /proc/<pid>/cgroup | grep pids | awk -F'/' '{print $(NF-1), $NF}'

Kubernetes获取容器id

首先使用catgrep获取进程所属的cgroup, 然后选取包含pids的一行以去掉重复数据,从行中解析最后一级的前12位。

1
sudo cat /proc/<pid>/cgroup | grep pids | awk -F'/' '{print substr($NF,1,12)}'

Kubernetes获取Pod名称

使用crictl根据容器ID获取Pod名称。其中容器ID为上一步获取到的12位ID。

1
crictl inspect -o go-template --template='{{index .status.labels "io.kubernetes.pod.name"}}' $(sudo cat /proc/<pid>/cgroup | grep pids | awk -F'/' '{print substr($NF,1,12)}')
分享
分享提示信息