文章目录
学习任务4:LPI-4 高级管理
Part1 Linux文件系统
新建分区什么的一直出问题,文件系统也装不好,有时间再回来弄吧,乌鱼
Part2 引导系统
介绍Linux的启动过程,如何在引导时设置内核选项以及如何检查引导日志中的错误
MBR
计算机启动的时候,BIOS读取硬盘前几个扇区,包含一个非常小的程序叫“主启动记录”或者MBR,它将内核加载到内存中并启动它。
- 内核开始运行之后,打印的第一行:
Linux version 2.4.16 (root@time.flatmonk.org) (gcc version 2.95.3 20010315 (release)) #1 Sat Jan 12 19:23:04 EST 2002
第一部分是内核版本,其后是构建内核的用户的标识(通常是root),构建内核的编译器以及构建内核的时间戳。 - /sbin/init: 内核加载完成以后,启动
init
程序,将一直运行直到系统关闭,始终为它分配进程ID 1:
$ ps --pid 1
PID TTY TIME CMD
1 ? 00:00:04 init.system
这些脚本通常位于/etc/rc.d/init.d
或/etc/init.d
中,它们执行诸如设置系统主机名,检查文件系统是否存在错误,安装其他文件系统,启用联网,启动打印服务之类的服务。等脚本完成后,init启动一个名为getty
的程序,该程序 显示登录提示,您一切顺利!
- LILO
看一下第一部分:MBR和加载内核。MBR的维护是“引导加载程序”的责任。用于基于x86的Linux的两种最受欢迎的引导加载程序是LILO
(LInux LOader)和GRUB
(GRand Unified Bootloader)。
LILO是比较旧且更常见的引导加载程序,有时,可能需要在引导时将选项传递给内核。一些更常见的选项是root =指定一个备用的根文件系统
,init =指定一个备用的init程序
(例如init = / bin / sh
以挽救配置错误的系统),以及mem =指定在其中的内存量
。系统(例如,在Linux仅自动检测到128M的情况下,例如mem = 512M)。您可以在LILO引导提示符下将它们传递给内核:
LILO boot: linux root=/dev/hdb2 init=/bin/sh mem=512M
LILO有一个重要的陷阱,每当对/etc/lilo.conf
进行更改时,或者每当安装新内核时,都必须运行lilo。该LILO程序重写MBR以反映所做的修改,包括记录内核的绝对磁盘位置。
GRUB
GRUB引导加载程序可以被认为是继LILO之后的下一代引导加载程序,对用户最明显的是,它提供了一个菜单界面,而不是LILO的原始提示。GRUB比LILO支持更多的操作系统,在引导菜单中提供了一些基于密码的安全性,并且更易于管理。
通常使用grub-install
命令安装。安装后,可通过编辑文件/boot/grub/menu.lst
来管理GRUB的菜单。
LILO和GRUB之间的显着区别是GRUB不需要在每次配置更改或安装新内核时都重新安装其引导加载程序。这是因为GRUB理解Linux文件系统,而LILO仅存储要加载的内核的绝对磁盘位置。
dmesg
如果在内核加载或探测硬件设备时发生错误,则可以使用dmesg命令
检索内核日志的副本:
内核加载时打印的第一行:
/var/log/messages
查找信息的第二个位置是在/ var / log / messages文件中。该文件由syslog守护程序记录,该日志接受来自库,守护程序和内核的输入。消息文件中的每一行都带有时间戳。该文件是查找在引导的初始化脚本阶段发生的错误的好地方。查看来自服务器的最后几条消息:
# grep named /var/log/messages | tail -3
Jan 12 20:17:41 time /usr/sbin/named[350]: listening on IPv4 interface lo, 127.0.0.1#53
Jan 12 20:17:41 time /usr/sbin/named[350]: listening on IPv4 interface eth0, 10.0.0.1#53
Jan 12 20:17:41 time /usr/sbin/named[350]: running
Part3 运行级别
单用户模式
引导时可以将参数传递给内核。s
是最常用的参数之一,它使系统以“单用户”模式启动。此模式通常仅安装根文件系统,启动最小部分的初始化脚本,然后启动shell程序,而不是提供登录提示。此外,未配置网络,因此不会有外部因素影响你的工作。
使用单用户模式
那么,在这种状态下,系统可以完成哪些“工作”?要回答这个问题,我们必须意识到Linux和Windows之间的巨大差异。Windows被设计为通常一次只能由一个人坐在控制台上使用。实际上,它始终处于“单用户”模式。另一方面,Linux更常用于服务网络应用程序,或为网络上的远程用户提供Shell或X会话。当您要执行维护操作(例如从备份还原,创建或修改文件系统,从CD升级系统等)时,这些附加变量是不被希望的。在这些情况下,应使用单用户模式。
更改运行级别
实际上并不需要重新引导即可进入单用户模式。该初始化程序管理当前的模式,或“运行级别”,对于系统。Linux系统的标准运行级别标记和定义如下:
0:停止计算机
1或s:单用户模式
2:多用户,无网络
3:多用户文本控制台
4:多用户图形控制台
5:与4相同
6:重新启动计算机
注意:运行级别在发行版之间有所不同
要更改为单用户模式,请使用telinit
命令,该命令指示init更改运行级别:
# telinit 1
也可以通过这种方式关闭或重新引导系统。 telinit 0将停止计算机; telinit 6将重新启动计算机。当您发出 telinit命令来更改运行级别时,一部分初始化脚本将运行以关闭或启动系统服务。
正常关机-shutdown
与kill命令向进程发送各种信号的能力类似,shutdown可用于停止,重新引导或更改为单用户模式。例如,要在5分钟内更改为单用户模式:
# shutdown 5
如果此时按Ctrl-c
,则可以取消挂起的单用户模式切换。上面的消息将出现在系统的所有终端上,因此用户有合理的时间来保存他们的工作并注销。
立即关机
例如:立即重启系统:
shutdown -r now
-h
选项将停止系统:
# shutdown -h 1
默认运行级别
靠,运行完上面的shutdown之后,再也打不开我的Ubuntu了。。。吴语至极,正在重装虚拟机了。。。。光驱还一直挂载不上去,什么玩意儿???而且想要分区的时候那个界面始终显示不完整,根本点不了任何东西,也没有办法操作,什么破界面也点不了自适应。。。。想VMware了,沙BVBox。
Linux系统上的init
程序非常重要,可以通过编辑/etc/inittab
来配置init
,
# grep ^id: /etc/inittab
id:3:initdefault:
3在这儿是默认的运行级别,如果希望系统立即引导进入图形登录名(通常为运行级别4或5),则更改此值可能很有用。编辑该文件修改值即可,但要小心不要更改成无效值了
自闭了,终于装回来了,天都黑了。。。
Part4 文件系统配额
配额可让你按用户或按组跟踪磁盘使用情况,配额只能由root
用户启用和管理.
配额呢,需要内核的支持,你得先看看有没有:
注意,自2.4.x内核系列开始,Linux对配额的支持还不完整。当前 ext2和ext3
文件系统中的配额存在问题,并且 ReiserFS
似乎根本不支持配额。本教程的示例基于 XFS
但是,我还没有XFS文件系统,回去了看书学一下,暂时先把步骤写一下吧
# grep quota /etc/fstab
/usr/users /mnt/hdc1 xfs usrquota,grpquota,noauto 0 0
# mount /usr/users
注意,usrquota
和grpquota
选项不一定在文件系统上启用配额。可以使用quotaon
命令确保启用了配额 :
# quotaon /usr/users
如果希望将来禁用配额,则有一个相应的quotaoff
命令:
# quotaoff /usr/users
配额命令
# quota -v
Disk quotas for user root (uid 0):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 0 0 0 3 0 0
第一列显示root用户在列出的每个文件系统上当前正在使用多少磁盘空间。配额和限制列是指当前对磁盘空间的限制;文件列显示root用户在特定文件系统上拥有的文件数。
查看配额
任何用户都可以使用quota命令来查看自己的配额报告,如上所示。但是,只有root用户才能查看其他用户和组的配额。
举个栗子,假设我们在/ usr / users
上安装了一个文件系统/ dev / hdc1
,其中有两个用户:jane和john。首先,让我们看看Jane的磁盘使用情况和限制。
# quota -v jane
Disk quotas for user jane (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 4100 0 0 6 0 0
jane的配额设置为零,表示没有限制。
edquota
用于配额的命令,先看看还有多少空间:
# df /usr/users
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hdc1 610048 4276 605772 1% /usr/users
# edquota jane
Disk quotas for user jane (uid 1003):
Filesystem blocks soft hard inodes soft hard
/dev/hdc1 4100 0 0 6 0 0
如果我们要给john与jane相同的配额,可以 对edquota
使用-p选项
,该选项将jane的配额用作命令行中所有后续用户的原型。这是为用户组设置配额的简便方法。
# edquota -p jane john
# quota john
Disk quotas for user john (uid 1003):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 0 10000 11500 1 2000 2500
还可以使用edquota
根据文件的组所有权来限制磁盘空间的分配
例如,要编辑用户组的配额:
#edquota -g
用户组用户的磁盘配额(gid 100): / dev / hdc1 4100 500000 510000 7 100000 125000
然后查看用户组的已修改配额:
#quota -g users组用户的磁盘配额(gid 100):/ dev / hdc1 4100 500000 510000 7 100000 125000
repquota命令
可以查看所有用户和组的配额:
# repquota -ug /usr/users
*** Report for user quotas on device /dev/hdc1
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0 0 0 3 0 0
john -- 0 10000 11500 1 2000 2500
jane -- 4100 10000 11500 6 2000 2500
监控配额
为了确保不超额配置,使用warnquota
,该warnquota命令发送电子邮件到已超过其软限制的用户。默认情况下,块和索引节点的宽限期为7天。
宽限期
可以使用等号修改文件系统的宽限期:
# edquota -t
启动的时候检查配额:
# quotaon -a
Part4系统日志
syslogd守护程序
用来记录来自系统上运行的程序的消息,按优先级和类型对消息分类,然后根据管理员配置的规则对其进行记录。
阅读日志
tail
命令用于显示最后10行
# cd /var/log
# tail messages
Jan 12 20:17:39 bilbo init: Entering runlevel: 3
Jan 12 20:17:40 bilbo /usr/sbin/named[337]: starting BIND 9.1.3
Jan 12 20:17:40 bilbo /usr/sbin/named[337]: using 1 CPU
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: loading configuration from '/etc/bind/named.conf'
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: no IPv6 interfaces found
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: listening on IPv4 interface lo, 127.0.0.1#53
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: listening on IPv4 interface eth0, 10.0.0.1#53
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: running
Jan 12 20:41:58 bilbo gnome-name-server[11288]: starting
Jan 12 20:41:58 bilbo gnome-name-server[11288]: name server starting
有经验的系统管理员可能会使用tail -f
跟踪输出到日志文件的时间:
# tail -f /var/log/messages
一些管理员甚至喜欢在终端上保持不断运行的tail -f消息,以便他们关注系统事件。
grep 日志
使用grep
搜索日志文件,
# grep named /var/log/messages
syslog.conf
我虚拟机没有这个文件,可能有其他的守护程序在运行,这个文件会有一些条目,格式为facility.priority action代表的分别是:工具(指定产生消息的子系统),优先级(指定消息的最低严重性),操作(文件名)
logrotate
用来管理日志的自动归档,每周轮换日志,保留4周的积压,
学习任务5: LPI-5 编译源代码和管理软件包
如何从源代码编译程序、如何管理共享库以及如何使用 Red Hat 和 Debian 软件包管理系统。
Part1 共享库
Linux 系统上有两类根本不同的 Linux 可执行程序。第一类是静态链接的可执行程序。静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”。因为这一原因,静态可执行程序不依赖任何外部库就可以运行。
第二类是动态链接的可执行程序。
静态可执行程序与动态可执行程序
判断程序是否为静态链接的:
# ldd /sbin/sln
not a dynamic executable
说明是静态链接,比较一下sln
和非静态ln
的大小:
# ls -l /bin/ln /sbin/sln
-rwxr-xr-x 1 root root 23000 Jan 14 00:36 /bin/ln
-rwxr-xr-x 1 root root 381072 Jan 14 00:31 /sbin/sln
sln
比ln
大了10倍,因为动态程序是不完整的程序,它依靠外部共享库来提供运行所需的许多函数。
动态链接相关性
ldd
命令:可以查看动态链接 ln 依赖的所有共享库的列表
# ldd /bin/ln
libc.so.6 => /lib/libc.so.6 (0x40021000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
动态链接的程序比其静态链接的等价程序小得多。不过,静态链接的程序可以在某些低级维护任务中发挥作用.
动态装入器
负责把动态程序和它们必需的库装在一起的东西,就是上面那个ld-linux.so.2
库.
ld.so.conf
动态装入器找到共享库需要两个文件–/etc/ld.so.conf
和 /etc/ld.so.cache
,看一下ld.so.conf里面包含一个所有目录的清单,动态装入器就在里面查找共享库:
$ cat /etc/ld.so.conf
/usr/X11R6/lib
/usr/lib/gcc-lib/i686-pc-linux-gnu/2.95.3
/usr/lib/mozilla
/usr/lib/qt-x11-2.3.1/lib
/usr/local/lib
ld.so.cache
通过运行ldconfig
,会有一个最新的/etc/ld.so.cache
文件,它反映您对 /etc/ld.so.conf
所做的更改。
要查看 ldconfig
可以“看到”的所有共享库,输入:
# ldconfig -p | less