Skip to main content

一些常用的Linux运维命令

根据端口找出程序PID

lsof -i:80

根据 PID 找出执行命令

netstat -nap | grep {PID}

# or

netstat -ntlp {PID}

根据执行的命令找出端口占用

netstat -apn | grep {cmd}

根据 PID 发出停止信号

信号 参见: How to Kill a Process from the Command Line

kill -15 {PID}

查看各个分区大小和剩余空间

df -hl

查看当前目录占用大小

du -sh

清理 Journal 日志

缩减至 200M

journalctl --vacuum-size=200M

同步 yum 包到本地

仅限 CentOS series.

mkdir -p /usr/share/mirrors/centos/7/64bit

/usr/bin/reposync -np /usr/share/mirrors/centos/7/64bit

挂载 SMB 路径

在 CentOS 下测试通过
视情况更改 vers, 在 windows server 2019 版本中, vers 1.0 不能成功挂载。(认证/加密未匹配)

refs:

yum install cifs-utils -y 

mkdir -p /nas/mirrors

mount -t cifs -o username="",password="",vers=3.0 //192.168.1.11/mirrors/ /nas/mirrors

获取文件 hash

推荐使用 sha256

md5sum filename
shasum filename
sha1sum filename
sha224sum filename
sha256sum filename
sha384sum filename
sha512sum filename

获取文件夹 hash

find . -type f \( -exec sha1sum "$PWD"/{} \; \) | awk '{print $1}' | sort | sha1sum
# or
find . -type f -print0 | sort -z | xargs -0 sha1sum | sha1sum

查看 CentOS 版本号

redhat series 适用

cat /etc/redhat-release

查看 主流发行版 版本号和内核版本

1. 主流发行版版本号

lsb_release -a

2. WSL 版本号

wslfetch

3. 内核版本和编译时间

uname -a

压缩包解压

zip & unzip

# apt install zip unzip 
# 这种情况不适合解压由 Windows 压缩的 ZIP, 因为 ZIP 内不包含压缩编码,解压会造成乱码。并且无法解压 RAR。
unzip file.zip

unar

https://theunarchiver.com/command-line

# apt install unar
# brew install unar
unar file.zip
unar file.rar

时间同步

同步时间工具

1. 查看当前时间和时区及其他状态

timedatectl

2. 设置 NTP 同步

需要预装 ntp

timedatectl set-ntp true

x. 同步为硬件时间

hwclock -s

获取系统运行相关数据

1. 获取CPU信息

cat /proc/cpuinfo

2. 获取进程状态信息

cat /proc/{pid}/status

本地信任证书

# 复制证书到指定目录下
cp http_ca.crt /usr/local/share/ca-certificates

# 更新证书
update-ca-certificates

命令行写入到文本

cat <<-'ATEXT' >> /etc/atext/atext.toml
encoding.codec = "json"
auth.strategy = "bearer"
ATEXT

可靠的复制文件

rclone sync /mnt/drive-a/dir /mnt/drive-b/dir -P

CPU性能测试

time echo “scale=5000; 4*a(1)| bc -l -q

存储空间性能测试

# 写速度
time dd if=/dev/zero of=/tmp/test bs=1M count=2048

# 读速度
time dd if=/tmp/test of=/dev/null bs=16k

# 读写
time dd if=/tmp/test of=/var/test bs=64k
  1. time 有计时作用,dd 用于复制,从 if 读出,写到 of;
  2. if=/dev/zero 不产生 IO,因此可以用来测试纯写速度;
  3. 同理 of=/dev/null 不产生 IO,可以用来测试纯读速度;
  4. 将/tmp/test 拷贝到/var 则同时测试了读写速度;
  5. bs 是每次读或写的大小,即一个块的大小,count 是读写块的数量。

Sudo 免密码

cd /etc/sudoers.d/

# vim {profile}
%sudo ALL=(ALL:ALL) NOPASSWD:ALL

# User rules for ubuntu
ubuntu ALL=(ALL) NOPASSWD:ALL

设置主机名

ubuntu

# vim /etc/cloud/cloud.cfg
preserve_hostname true

hostnamectl set-hostname k8s-node-n

查看显卡设备

lspci 很强大,不止有这一种用法

# 列出所有 VGA 设备
lspci | grep -i vga

# 查看这个设备的详情
lspci -v -s 00:02.0

NV

  • nvidia-smi (nvidia-smi -l 2)
  • gpustat (gpustat -cp)

AMD

  • radeontop

Intel

  • intel-gpu-tools

查看系统信息

# install
apt install inxi

# print info
inxi -F

根据关键字拆分文件

requires: gsplit(brew)

grep -E '^INSERT INTO' companies.sql | gsplit -l 100000 --additional-suffix=.sql -d - insert-into-

find . -name 'insert-into-*.sql' | xargs -P $(sysctl -n hw.ncpu) -I{} wrangler d1 execute your-database --yes --remote --file={}

拆分文件

split -l 10000 topic.sql -d -a 4 topic-split.sql_

Gzip 解压

non tar

# 可以显示进度
pv gzipfile.gz | gzip -d - > dump.json

# zcat
zcat gzipfile.gz > dump.json

rsync 复制文件

# 可以显示进度
rsync -av --progress /mnt/disk1/zlibrary/pdf /mnt/disk2/Z-Library/zh-cn

SSH Tunnel

# 通过 100.66.111.78 映射 192.168.50.1 的 端口 到 本地的 6800
ssh -L 6800:192.168.50.1:16800 -i wayne_key [email protected]