Linux 启动顺序
- BIOS
- MBR
- bootloader
- Linux 内核
- systemd
- 读取配置文件
- sysinit.target
- basic.target
- multi-user.target
- graphical.target
系统状态监控
uptime
- 当前时间
- 本次启动后所运行的时间
- 已登陆用户数量
- 最近 1 分钟、5 分钟、15 分钟内系统平均负载
w
- 当前时间
- 系统已运行时间
- 已登陆用户:用户名,TTY,远端主机,登陆时间,空闲时间,当前进程
- 登陆用户产生的进程
top
动态、实时 查看当前系统状态。
该命令显示的信息内容很丰富,显示的界面中,每一块都由一个或多个命令来控制。
启动时间 及 平均负载
top - 16:10:22 up 8:59, 2 users, load average: 0.00, 0.01, 0.05
这部分内容为一行,内容与 uptime 返回的结果相同:
- 当前时间
- 本次启动后所运行的时间
- 当前登陆用户数量
- 最近 1 分钟、5 分钟、15 分钟内系统平均负载
任务 及 CPU 状态
Tasks: 173 total, 1 running, 172 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
这部分内容至少为两行。在多处理器环境,会显示更多的行。
第一行:总任务数,即总线程数。以及分别处理运行、睡眠、暂停、僵尸状态的数量。
第二行:本次刷新前,在刷新间隔时间内 CPU 的平均状态,默认用百分比来表示。
us :user,运行 un-niced 用户进程的时间
sy :system,运行内核进程的时间
ni :nice,运行 niced 用户进程的时间
id :idle,内核空闲处理器所用的时间
wa :IO-wait,等待 I/O 完成所用的时间
hi :Hardware Interrupt,用于硬件中断的时间
si :Software Interrupt,用于软件中断的时间
st :Steal Time,虚拟 CPU 等待实体 CPU 分配时间片的机率,越大,性能越差
内存占用
这部分内容占两行。
KiB Mem : 999964 total, 69656 free, 670256 used, 260052 buff/cache
KiB Swap: 1048572 total, 1042664 free, 5908 used. 113800 avail Mem
第一行为物理内存:总量,可用量,已用量,缓冲区大小
第二行为虚拟内存:总量,可用量,已用量,物理可用量
第二行的 avail 是物理内存中,可用来启动程序的可用内存的估值。它与 free 不同,还要算上可回收的页面缓存和内存片。
进程列表
这部分显示的是当前可用进程的列表。
所有可用的字段有很多,默认只显示了一部分,可以按 F 键进入交互设定界面。在这里可以设定显示哪些字段,还可以自定义字段的显示顺序。可以选择按哪个字段进行排序。
在查看界面,可以按 e 来切换所用的单位。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 193628 4980 2944 S 0.0 0.5 0:03.00 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
进程
查看当前进程列表
ps aux 和 ps -ef 两者的输出结果差别不大,但显示风格不同。
- aux 是 BSD 风格,-ef 是 System V 风格
- aux 会截断 command 列,而 -ef 不会
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.5 193628 5092 ? Ss 06:58 0:03 /usr/lib/systemd/systemd --switched-root --
root 2 0.0 0.0 0 0 ? S 06:58 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 06:58 0:00 [ksoftirqd/0]
... ...
VSZ: 进程占用的 虚拟内存空间
RSS: 进程占用的 实际物理内存空间
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 15:16 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deseria
root 2 0 0 15:16 ? 00:00:00 [kthreadd]
root 3 2 0 15:16 ? 00:00:00 [ksoftirqd/0]
查看进程来源
根据 PID 查看进程是由 哪个应用程序产生的:
$ sudo ls -l /proc/2232/exe
lrwxrwxrwx. 1 root root 0 Sep 7 15:18 /proc/2322/exe -> /usr/sbin/mysqld
ps aux 返回的结果中,VSZ、RSS 的含义
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 1.1 0.5 171476 14476 ? Ss 19:13 0:02 /usr/lib/systemd/systemd --switched-root --system
root 2 0.0 0.0 0 0 ? S 19:13 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 19:13 0:00 [rcu_gp]
VSZ :virtual memory size,进程所占用的 虚拟内存 空间
RSS :resident set size,进程占用的 物理内存 空间
用户
用脚本批量添加 20 个用户
要求:
用户名为 user01-20,密码为 “用户名 + 5 个随机字符”:
#!/bin/bash
for i in `seq -f "%02g" 1 20`
do
useradd user$i
echo "user$i `head -10 /dev/urandom | sha1sum | head -c 5`" | passwd -stdin user$i > /dev/null 2>&1
done
在命令替换中,使用 seq 的格式化参数 "%02g" 来实现以 0 开头的 2 位数字格式。