一些常用的Linux运维命令
根据端口找出程序PID
lsof -i:80
根据 PID 找出执行命令
netstat -nap | grep {PID}
# or
netstat -ntlp {PID}
根据执行的命令找出端口占用
netstat -apn | grep {cmd}
根据 PID 发出停止信号
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:
- https://support.cs.toronto.edu/systems/linux.html
- https://blog.henrici.name/blog/2020-07-17/
- https://techoverflow.net/2021/07/06/how-to-automount-cifs-smb-on-alpine-linux/
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
- time 有计时作用,dd 用于复制,从 if 读出,写到 of;
- if=/dev/zero 不产生 IO,因此可以用来测试纯写速度;
- 同理 of=/dev/null 不产生 IO,可以用来测试纯读速度;
- 将/tmp/test 拷贝到/var 则同时测试了读写速度;
- 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]