基础篇
引用自 Liam Huang 的博客。
系统相关
lsb_release -a # 查看操作系统版本
head -n 1 /etc/issue # 查看操作系统版本
cat /proc/version # 查看操作系统内核信息
uname -a # 查看操作系统内核信息、CPU 信息
cat /proc/cpuinfo # 查看 CPU 信息
hostname # 查看计算机名字
env # 列出环境变量
lsmod # 列出加载的内核模块
uptime # 查看系统运行时间、负载、用户数量
cat /proc/loadavg # 查看系统负载
内存外存
free -m # 查看物理内存和交换区的使用情况
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存总量
df -h # 查看各分区使用情况
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看 IDE 磁盘的参数
dmesg | grep IDE # 查看系统启动时 IDE 磁盘的状态
mount | column -t # 查看各分区的挂载状态
du -sh <目录名> # 查看指定目录的大小
清理缓存
$ free -h
total used free shared buff/cache available
内存: 7.7Gi 4.5Gi 231Mi 699Mi 2.9Gi 2.2Gi
交换: 8.1Gi 2.7Gi 5.5Gi
free 命令中列出的几个项目中,available 是程序可申请的内存,其他几项如 shared,buff/cache 如何释放掉呢?
# clear cache
sync; echo 1 > /proc/sys/vm/drop_caches
# clear swap
swapoff -a
swapon -a
参考:
https://colobu.com/2015/10/31/How-to-Clear-RAM-Memory-Cache-Buffer-and-Swap-Space-on-Linux/
https://unix.stackexchange.com/questions/87908/how-do-you-empty-the-buffers-and-cache-on-a-linux-system
网络状态
ifconfig # 查看所有网络接口的属性
ip addr show # 同上
iptables -L # 查看 iptables 防火墙
route -n # 查看本机路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已建立的连接
netstat -s # 查看网络统计信息
lsof -i:<port> # 查看哪个程序占用了某个端口
lsof 很强大,参考这里。
用户状态相关
w # 查看活动用户以及他们在做什么
who # 查看活动用户,-u显示进程号
id <用户名> # 查看用户的 ID、组信息
cut -d: -f1 /etc/passwd # 查看系统中所有用户
cut -d: -f1 /etc/group # 查看系统所有组
usermod -a -G group1,group2 user # 将用户追加到组
groups user # 查看用户所属的组
参考:https://linux.cn/article-10768-1.html
进程状态相关
ps -ef # 查看所有进程
ps aux # 同上
top # 动态显示进程状态
用户管理
添加主用户(带 sudo 权限)
useradd yychi -m # -m表示创建家目录
usermod yychi -aG yychi # 加入yychi组
passwd yychi # 设置密码
visudo # 打开sudoers文件,并uncomment wheel组
usermod yychi -aG wheel # 将yychi加入wheel组,此时yychi可以使用sudo了
查看文件夹内所有文件
ls -lR somedir | grep "^-" | wc -l
踢掉某个用户
linux 踢出用户,首先使用w或who定位想要踢的用户,
[root@kwephis5259858 sftp]# w
17:24:47 up 268 days, 22:10, 4 users, load average: 0.02, 0.06, 0.02
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 17:21 3:07 0.60s 0.60s python update_cp_multi.py upgrade_multi_CP2.ini
root pts/2 27Feb24 47:30m 0.41s 0.41s -bash
root pts/79 05Feb24 0.00s 0.70s 0.00s w
root pts/106 Tue19 47:30m 0.15s 0.01s ssh 192.168.100.33
[root@kwephis5259858 sftp]# who
root pts/0 2024-03-04 17:21 (10.*.*.1)
root pts/2 2024-02-27 16:18 (10.*.*.2)
[root@kwephis5259858 sftp]#
比如想踢掉在执行 python 的那个用户,他登录的 tty 是pts/0,则
pkill -9 -t pts/0
踢掉该用户。
查看系统日志
Journal
# 查看boot日志
journalctl -b
# 查看上一次的boot日志,同理-2/3/4...
journalctl -b -1
# 列出所有启动日志
journalctl --list-boots
cf. https://www.linode.com/docs/guides/how-to-use-journalctl/