linux
常用工具介绍
综合功能
| 名字 | 简介 |
|---|---|
| lsof | 扫描已经打开的文件(宽泛) |
| top | 查看进程活动状态以及一些系统状况 |
| sar | 查看系统状况 |
| iostat | 查看CPU 负载,硬盘状况 |
| vmstat | 查看系统状态、硬件和系统信息等 |
| mpstat | 与 vmstat 功能相似,但可以查看多处理器状况 |
| dstat | 综合了 vmstat, iostat, ifstat, netstat 等多个信息 - 推荐 |
| pidstat | 进程和内核线程的统计信息,支持IO和页面信息 |
| glacne | |
| ps | 进程的一些信息 |
| nmon | 非常好的第三方监控工具,方便输出报表 |
| dbf | hp-unix |
单项功能
| 名字 | 简介 |
|---|---|
| slabtop | 实时展示内核slab模块所管理的各种缓存对象资源信息; |
| sysdig | 系统内核态和网络和I/O的监控利器(综合) |
| free | 内存信息 |
| ipcs | 查看进程间通信情况 消息队列,共享内存,信号量等信息 |
| lscpu | 简要描述 CPU 信息-第三方,已经合并到 util-linux |
| strace | 内核态的函数调用跟踪用 |
| ltrace | 用户态的函数调用跟踪用 |
| dmesg | 内核级信息,如启动时的驱动加载情况,设备起停,硬件插拔,网卡起停,网卡丢包等情况 |
| iotop | 很不错的 io 监控软件 |
| lsblk | 块设备信息,分区/CD 等 |
| swapinfo | |
| nfsstat |
资源监控
# 综合查看
dstat -talpm --socket --tcp
# 获取占用CPU资源最多的10个进程
ps aux|head -1;ps aux|sort -k 3 -nr| head -10
# 查看CPU使用情况,按占用时间排序
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
# 占用内存资源最多的10个进程
ps aux|head -1;ps aux | sort -rn -k 4 | head -10
dstat -tamp
dstat --top-io --top-bio # disk io process show
dstat -d -r --top-io --top-bio
iotop # 进程级别IO监控
iotop -o # 只显示有IO操作的进程访问控制
# 允许普通用户抓包
setcap cap_net_raw=eip /usr/sbin/tcpdump
# 允许普通进程监听80端口(需要nginx restart, 而不是 reload)
setcap cap_net_bind_service=+ep /usr/local/nginx/sbin/nginx系统环境变量
# 高优先级的动态库路径
LD_PRELOAD=$HOME/lib
# 一般优先级动态库路径
LD_LIBRARY_PATH=$HOME/lib
# 时区
TZ="Asia/Shanghai"selinux
getenforce # 获取状态
setenforce 0 # 暂时关闭,即 permissive 状态,只对当前的会话有效
setenforce 1 # 恢复开启,即 Enforcing 状态
sestatus -v # 查看selinux状态
getenforce # 查看selinux模式
semanage port -l # 查看selinux端口限制规则
semanage port -a -t http_port_t -p tcp 8000 # 在selinux中注册端口类型终端操作
tty # 查看当前处于哪个虚拟终端
!$ # 上一条指令的最后一个单词快捷键
ctrl + \ # 强制退出当前命令的执行,有时执行ctrl + c无用时采用shell
常用单行语法
date +%s # 1538725423 输出unix时间戳
date +%s -d '1990-01-01 01:01:01' # 指定时间的时间戳
date +'%F %T' 2016-11-09 02:06:16
date +"%Y-%m-%d %H:%M:%S" 2016-11-09 02:06:16
date >out.log 2>&1 # 标准输出+错误输出 一起重定向
date &> out.log # 标准输出+错误输出 一起重定向 推荐方式脚本模板
#!/bin/bash
WORKDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd ${WORKDIR}用户管理
gpasswd -a user_name wheel # 添加用户到某组
echo "pw" | passwd user --stdin # 非交互修改密码
echo "pw" | sudo -S ls /tmp # 非交互式使用 sudo
su - user -c "cmd1; " # 切换用户执行命令踢出用户
w
pkill -kill -t tty1
# 剔除用户
# 或者使用 pstree 查看 sshd 的进程数,判断所属进程后 kill 即可
# 注意, 用户正常退出时, 其启动的进程会自动移交给 init;
# 但如果 kill 这个用户, 会将信号传递给其启动的进程
# 于是会导致用户 使用此命令时 会将此用户启动的进程也非正常结束掉
# 进程没有收到信号, 却死了密码相关
passwd -l user_name # 禁用账号(不能阻止私钥登陆)
usermod -L user_name # 禁用账号(不能阻止私钥登陆)
passwd -u user_name # 解锁用户
passwd -S user_name # 查看用户密码状态
chage -E0 user_name # 设置用户密码立即过期(私钥也不能登陆)
chage -E-1 user_name # 设置用户密码未过期(恢复原密码过期时间)
# 检查所有用户的密码到期日期
for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; done | paste -d " " - - | sed 's/Password expires//g'
# 除系统用户外的所有用户的密码有效期
for user in $(cat /etc/passwd |cut -d: -f1); do echo $user; chage -l $user | grep "Password expires"; done | paste -d " " - - | sed 's/Password expires//g' | grep -v "never"登录审计
last # 查看登陆过的用户信息
who /var/log/wtmp # 查看登陆过的用户信息
lastlog # 用户最后登录的时间
lastb -a # 列出登录系统失败的用户相关信息
who # 当前在线用户
w # 当前在线用户
whoami # 查看当前用户名
logname # 查看初始登陆用户名systemd
systemctl daemon-reload # 重载所有修改过的配置文件
# 一次性输出、不进入交互式翻页
systemctl --no-pager status node_exporter -l日志管理 - journalctl
journalctl --since=yesterday
journalctl --since='2024-01-25 10:00' # 指定时间开始的日志
journalctl -b -1 # 查看上一次启动的日志(需更改设置)硬件相关
cpu
lscpu # 查看cpu信息
more /proc/cpuinfo
grep name /proc/cpuinfo | cut -f2 -d: | uniq -c # 查看cpu型号和逻辑核心数
getconf LONG_BIT # cpu运行的位数
grep 'physical id' /proc/cpuinfo|sort| uniq -c # 物理cpu个数
# 查看cpu指令集: pae 支持半虚拟化 IntelVT 支持全虚拟化
grep flags /proc/cpuinfo内存
more /proc/meminfo # 查看内存信息
# 查看内存插槽和大小
dmidecode | grep -P -A5 "Memory\s+Device" | grep Size | grep -v Range综合
dmesg
lspci # 查看硬件信息
lspci|grep RAID # 查看是否支持raid
lspci -vvv |grep Ethernet # 查看网卡型号
lspci -vvv |grep Kernel|grep driver # 查看驱动模块
ethtool -i eth0 # 查看网卡驱动版本
dmidecode # 查看全面硬件信息
dmidecode | grep "Product Name" # 查看服务器型号
cat /proc/mdstat # 查看软raid信息
cat /proc/scsi/scsi # 查看Dell硬raid信息(IBM、HP需要官方检测工具)
modinfo name # 查看驱动版本(驱动模块)
ethtool -i em1 # 查看网卡驱动版本事件
drop_caches 管理
# 清理内存
echo 2 > /proc/sys/vm/drop_caches
echo 1 > /proc/sys/vm/drop_caches
echo 0 > /proc/sys/vm/drop_caches常用shell别名
alias ll='ls -l --time-style=long-iso'
alias ag='rg'
alias dsync='rsync -avuP --delete'系统脚本
1. 系统自检查脚本
#!/bin/bash
# 主机登录后的常规检查项目, 可以放在 /etc/profile.d 里登录自动运行
df -Th
# 对于小容量的云服务器, 还是有必要检查一下 inode 使用率
df -ih
free -h
uptime; echo; cat /proc/loadavg
# top5 cpu
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -n 6
ss -s
# 最近200条错误级别的日志
journalctl -p 3 -n 200 --no-pager最后更新于