目录
1.inode表结构
在Linux文件系统中,每个文件和目录都与一个唯一的索引节点(inode)相关联。索引节点包含有关文件或目录的元数据,如文件的权限、所有者、大小、时间戳以及指向文件数据块的指针等信息。Linux的inode表结构用于管理这些索引节点。
inode表是一个数组,每个元素对应一个索引节点。每个索引节点都有一个唯一的索引节点号(inode number),用于在文件系统中标识该节点。inode表的大小取决于文件系统的大小和inode的数量限制。
下面是一个简化的inode表结构示例:
+-------------------------+
| Superblock |
+-------------------------+
| Inode Table |
+-------------------------+
| Data Blocks |
+-------------------------+
-
Superblock:超级块包含有关文件系统的整体信息,如文件系统的大小、块大小、inode表的起始位置等。
-
Inode Table:inode表是一个数组,每个元素对应一个索引节点。每个索引节点包含有关文件或目录的元数据。
-
Data Blocks:数据块是实际存储文件内容的区域。索引节点中的指针指向这些数据块。
如何查看inode号
使用ls
命令或stat
命令来查看文件或目录的inode号。以下是两种常用的方法:
-
使用
ls
命令:ls -i 文件路径
例如,要查看文件
/path/to/file
的inode号,可以运行以下命令:ls -i /path/to/file
这将输出文件的inode号以及文件名。
-
使用
stat
命令:stat 文件路径
例如,要查看文件
/path/to/file
的inode号,可以运行以下命令:stat /path/to/file
这将输出包含文件信息的详细统计数据,其中包括inode号。
inode内容
在Linux文件系统中,每个文件和目录都有一个唯一的标识符,称为inode(索引节点)。每个inode都包含了文件或目录的元数据信息,包括以下内容:
-
文件类型:指示inode所代表的对象类型,如普通文件、目录、符号链接等。
-
文件权限:指定了对文件的访问权限,包括所有者、所属组和其他用户的读、写和执行权限。
-
文件大小:记录了文件的大小,以字节为单位。
-
文件所有者和所属组:指示文件的所有者和所属组的用户和组。
-
访问时间、修改时间和更改时间:记录了文件的访问时间、内容修改时间和inode元数据修改时间。
-
硬链接计数:表示指向该inode的硬链接数量。当硬链接数为0时,文件将被删除。
-
数据块指针:指向存储文件数据的数据块的指针。这些指针可以直接指向数据块,也可以通过间接块或双重间接块来访问大型文件。
-
文件系统标识符:标识inode所属的文件系统
2.日志
在Linux系统中,有多种类型的日志记录不同方面的系统活动和事件。以下是几个常见的日志文件及其用途:
-
/var/log/messages
:这个文件包含了系统的整体日志信息,记录了各种系统事件、警告和错误等。 -
/var/log/syslog
:这个文件包含了系统的系统日志信息,记录了与系统操作和服务相关的事件和错误。 -
/var/log/auth.log
:这个文件包含了系统的认证日志信息,记录了用户认证、登录和授权等相关事件。 -
/var/log/kern.log
:这个文件包含了内核日志信息,记录了与内核操作和驱动程序相关的事件和错误。 -
/var/log/dmesg
:这个文件包含了内核环缓冲区的内容,记录了系统启动过程中的内核消息和硬件检测信息。 -
/var/log/boot.log
:这个文件包含了系统启动过程的日志信息,记录了启动期间的各种事件和错误。 -
/var/log/cron
:这个文件包含了cron作业的日志信息,记录了计划任务的执行情况。 -
/var/log/mail.log
:这个文件包含了邮件系统的日志信息,记录了邮件的发送和接收等相关事件。
3.users
users
命令用于显示当前登录到系统的用户列表。它可以显示当前登录的用户的用户名,并以空格分隔。
以下是使用users
命令的一些示例:
-
显示当前登录用户列表:
users
输出可能类似于:
user1 user2 user3
-
将用户列表与其他命令结合使用,例如使用
who
命令来显示用户和登录终端的详细信息:users | xargs -n1 who
输出可能类似于:
user1 pts/0 2023-11-12 08:30 (192.168.1.100)
user2 pts/1 2023-11-12 09:15 (192.168.1.101)
user3 pts/2 2023-11-12 10:20 (192.168.1.102)
4.who
who
命令用于显示当前登录到系统的用户信息和登录终端的详细信息。它可以显示登录用户的用户名、登录终端、登录时间以及登录来源(IP地址或主机名)等信息。
以下是使用who
命令的一些示例:
-
显示当前登录用户列表:
who
输出可能类似于:
user1 pts/0 2023-11-12 08:30 (192.168.1.100) user2 pts/1 2023-11-12 09:15 (192.168.1.101) user3 pts/2 2023-11-12 10:20 (192.168.1.102)
-
显示当前登录用户数:
who -q
输出可能类似于:
user1 user2 user3
-
显示当前登录用户数和总登录用户数:
who -q -u
输出可能类似于:
# users=3 user1 user2 user3
-
显示详细的登录信息,包括用户、登录终端、登录时间和登录来源:
who -a
输出可能类似于:
user1 pts/0 2023-11-12 08:30 . 192.168.1.100
user2 pts/1 2023-11-12 09:15 . 192.168.1.101
user3 pts/2 2023-11-12 10:20 . 192.168.1.102
5.w
w
命令用于显示当前登录到系统的用户信息和活动终端的详细信息。它提供了比who
命令更详细的信息,包括登录用户的用户名、终端、登录时间、运行时间、CPU使用情况以及当前执行的命令等。
以下是使用w
命令的一些示例:
-
显示当前登录用户列表:
w
输出可能类似于:
17:57:50 up 2 days, 4:32, 3 users, load average: 0.12, 0.08, 0.04 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user1 pts/0 192.168.1.100 08:30 1:30m 0.10s 0.05s sshd: user1@pts/0 user2 pts/1 192.168.1.101 09:15 2:45m 0.12s 0.02s sshd: user2@pts/1 user3 pts/2 192.168.1.102 10:20 3:10m 0.08s 0.01s sshd: user3@pts/2
-
显示当前登录用户数和总登录用户数:
w -h
输出可能类似于:
3 users
-
显示当前登录用户的详细信息,包括用户名、终端、登录时间、运行时间、CPU使用情况和当前执行的命令:
w -f
输出可能类似于:
17:57:50 up 2 days, 4:32, 3 users, load average: 0.12, 0.08, 0.04 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user1 pts/0 192.168.1.100 08:30 1:30m 0.10s 0.05s sshd: user1@pts/0 user2 pts/1 192.168.1.101 09:15 2:45m 0.12s 0.02s sshd: user2@pts/1 user3 pts/2 192.168.1.102 10:20 3:10m 0.08s 0.01s sshd: user3@pts/2
6.last
last
命令用于显示系统中最近的登录记录,包括用户登录和系统启动的记录。它可以显示用户的登录时间、登录终端、登录来源(IP地址或主机名)以及注销时间等信息。
以下是使用last
命令的一些示例:
-
显示最近的登录记录:
last
输出可能类似于:
user1 pts/0 192.168.1.100 Sat Nov 12 08:30 still logged in user2 pts/1 192.168.1.101 Sat Nov 12 09:15 still logged in reboot system boot 0.4.18-10-amd64 Sat Nov 12 07:45 still running
-
显示指定用户的登录记录:
last username
输出可能类似于:
user1 pts/0 192.168.1.100 Sat Nov 12 08:30 still logged in user1 pts/0 192.168.1.100 Fri Nov 11 17:20 - 20:30 (03:09)
-
显示指定数量的登录记录:
last -n num
输出最近的
num
条登录记录,例如:last -n 5
-
显示登录记录的详细信息,包括登录时间、注销时间、登录终端和登录来源等:
last -F
输出可能类似于:
user1 pts/0 192.168.1.100 Sat Nov 12 08:30:00 2023 - still logged in user2 pts/1 192.168.1.101 Sat Nov 12 09:15:00 2023 - still logged in reboot system boot 0.4.18-10-amd64 Sat Nov 12 07:45:00 2023 - still running
7.lastb
lastb
命令用于显示系统中最近的登录失败记录。它可以显示登录失败的用户名、登录终端、登录来源(IP地址或主机名)和登录失败的时间等信息。
以下是使用lastb
命令的一些示例:
-
显示最近的登录失败记录:
lastb
输出可能类似于:
root ssh:notty 192.168.1.100 Sat Nov 12 10:30 - 10:33 (00:02) user1 ssh:notty 192.168.1.101 Sat Nov 12 11:15 - 11:18 (00:03)
-
显示指定数量的登录失败记录:
lastb -n num
输出最近的
num
条登录失败记录,例如:lastb -n 5
-
显示登录失败记录的详细信息,包括登录失败的用户名、登录终端、登录来源和登录失败的时间等:
lastb -F
输出可能类似于:
root ssh:notty 192.168.1.100 Sat Nov 12 10:30:00 2023 - Sat Nov 12 10:33:00 2023 (00:02) user1 ssh:notty 192.168.1.101 Sat Nov 12 11:15:00 2023 - Sat Nov 12 11:18:00 2023 (00:03)
8.日志管理策略
及时作好备份和归档
延长日志保存期限
控制日志访问权限
—— 日志中可能会包含各类敏感信息,如账户、口令等
集中管理日志
—— 将服务器的日志文件发到统一的日志文件服务器
—— 便于日志信息的统一收集、整理和分析
—— 杜绝日志信息的意外丢失、恶意篡改或删除