540 likes | 833 Views
Linux 操作系统分析与实践 实验一: Linux 系统管理. 《 Linux 操作系统分析与实践 》 课程建设小组 北京大学 二零零八年春季 *致谢:感谢 Intel 对本课程项目的资助. 实验目的. 学习使用 Linux 文件系统。 学习 Linux 进程的相关操作命令。 学习 gcc 、 make 、 gdb 等编程工具链的使用。 学习内核编译。. 实验内容. 通过本实验可以掌握 Linux 系统中文件管理的概念,包括常用命令格式、文件类型、目录结构、文件系统及其安装 Linux 的文件系统等。 参考实验指导书,完成本次实验. 问题:文件和目录操作.
E N D
Linux操作系统分析与实践实验一:Linux系统管理Linux操作系统分析与实践实验一:Linux系统管理 《Linux操作系统分析与实践》课程建设小组 北京大学 二零零八年春季 *致谢:感谢Intel对本课程项目的资助
实验目的 学习使用Linux文件系统。 学习Linux进程的相关操作命令。 学习gcc、make、gdb等编程工具链的使用。 学习内核编译。
实验内容 • 通过本实验可以掌握 Linux 系统中文件管理的概念,包括常用命令格式、文件类型、目录结构、文件系统及其安装 Linux 的文件系统等。 • 参考实验指导书,完成本次实验
问题:文件和目录操作 • 显示工作目录路径的命令 • 更改工作目录路径的命令 • 列出子目录和文件信息的命令 • 创建空文件、更改文件时间的命令 • 创建目录的命令 • 复制文件和目录的命令 • 移动文件和目录路径、文件和目录改名的命令 • 删除空目录的命令 • 删除文件和目录的命令 • 统计文件字节数、字数、行数的命令
答案:文件和目录操作 • 显示工作目录路径的命令 pwd • 更改工作目录路径的命令 cd • 列出子目录和文件信息的命令 ls • 创建空文件、更改文件时间的命令 touch • 创建目录的命令 mkdir • 复制文件和目录的命令 cp • 移动文件和目录路径、文件和目录改名的命令 mv • 删除空目录的命令 rmdir • 删除文件和目录的命令 rm • 统计文件字节数、字数、行数的命令 wc
问题:文本显示和处理 • 显示文本文件的命令 • 分页显示文本文件的命令 • 回卷显示文本文件的命令 • 显示指定文件前若干行的命令 • 显示指定文件末尾若干行的命令 • 逐行比较两个文本文件,列出其不同之处的命令
答案:文本显示和处理 • 显示文本文件的命令 cat • 分页显示文本文件的命令 more • 回卷显示文本文件的命令 less • 显示指定文件前若干行的命令 head • 显示指定文件末尾若干行的命令 tail • 逐行比较两个文本文件,列出其不同之处的命令 diff
问题:文件和命令查找 • 查找文件里符合条件字符串的命令 • 列出文件系统内符合条件的文件的命令 • 查询文件类型的命令 • 查询命令功能的命令 • 显示可执行命令路径的命令 • 为一个文件在另外一个位置建立一个符号链接
答案:文件和命令查找 • 查找文件里符合条件字符串的命令 grep • 列出文件系统内符合条件的文件的命令 find • 查询文件类型的命令 file • 查询命令功能的命令 whatis • 显示可执行命令路径的命令 which • 为一个文件在另外一个位置建立一个符号链接 ln
问题:系统信息显示 • 显示计算机及操作系统相关信息的命令 • 显示或修改计算机主机名的命令 • 显示系统开机时的输出信息的命令 • 显示日历的命令 • 显示和设置系统日期和时间的命令 • 显示系统已经运行时间的命令
答案:系统信息显示 • 显示计算机及操作系统相关信息的命令 uname • 显示或修改计算机主机名的命令 hostname • 显示系统开机时的输出信息的命令 dmesg • 显示日历的命令 cal • 显示和设置系统日期和时间的命令date • 显示系统已经运行时间的命令 uptime
问题:信息交流 • 在显示器上显示文字的命令 • 对全部已登录用户发送信息的命令 • 向用户发送消息的命令 • 设定是否允许用write命令发送信息的命令 • 发送信息给其他使用者的命令
答案:信息交流 • 在显示器上显示文字的命令 echo • 对全部已登录用户发送信息的命令 wall • 向用户发送消息的命令 write • 设定是否允许用write命令发送信息的命令 mesg • 发送信息给其他使用者的命令 talk
问题:其他命令 • 清除屏幕上信息的命令 • 将缓冲文件写到硬盘中的命令 • 显示近期用户登录情况的命令 • ……
答案:其他命令 • 清除屏幕上信息的命令 clear • 将缓冲文件写到硬盘中的命令 sync • 显示近期用户登录情况的命令 last • ……
系统软硬件信息查询 • 查看计算机CPU信息 • 查看主机DMA通道信息 • 查看文件系统信息 • 查看主机中断信息 • 查看主机I/O端口号信息 • 查看计算机内存信息 • 查看Linux版本信息 • 查看板卡信息 • 查看usb设备 • 查看键盘和鼠标:
查看计算机CPU信息 /proc/cpuinfo • 查看主机DMA通道信息 /proc/dma • 查看文件系统信息 /proc/filesystems • 查看主机中断信息 /proc/interrupts • 查看主机I/O端口号信息 /proc/ioports • 查看计算机内存信息 /proc/meminfo • 查看Linux版本信息 /proc/version • 查看板卡信息 /proc/pci • 查看usb设备 /proc/bus/usb/devices • 查看键盘和鼠标: /proc/bus/input/devices
用户和组群账号管理 • Linux中用户类型 • root用户 • 普通账号 • 虚拟账号 • Linux中账号配置文件 • /etc/passwd • /etc/shadow
创建账号命令 • useradd • 修改用户账号属性命令 • usermod • 删除或禁止用户账号 • userdel
具有共同特征的用户集合就是用户群组 • 相关的配置文件 • /etc/group • /etc/gshadow • 群组操作相关命令 • groupadd • groupmod • groupdel
软件包管理 • RPM软件包的安装、升级、查询、校验及卸载 • tar包的打包和解包 • .tar • .tar.gz (gzip) • .tar.bz2 (bzip2) • .tar.Z (bzip2) • gzip包的打包和解包
磁盘管理 • 使用fdisk进行硬盘的分区 • LVM(逻辑卷管理器) • RAID • RAID 0 • RAID 1 • RAID 5
Linux文件系统 • 查看Linux系统所支持的文件系统 • /lib/modules/**2.6.**/kernel/fs/ • 挂载和卸载文件系统 • mount命令 • mount [-参数] [设备名称] [挂载点] • umount命令 • umount [选项] [-t <文件系统类型>] [文件系统(设备名称或挂载点)]
查看分区挂载情况 • mount –s • 设置开机自动挂载文件系统 • /etc/fstab
权限管理 • chmod命令 • chown命令 • chgrp命令
打开PC的电源 • BIOS开机自检 • 按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导Linux • 内核的引导 • 执行init程序 • 启动getty,打开了终端供用户登录系统 • 用户登录成功后进入了Shell
MBR • 硬盘的第一扇区称为主引导记录(MBR, MASTER BOOT RECORD) • MBR 的长度为512字节。 • 第一部分为引导(PRE-BOOT)区,占了446个字节 • 第二部分为分区表(PARTITION PABLE),共有64个字节,记录硬盘的分区信息。
init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序。init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序。 • init程序需要读取配置文件/etc/inittab • inittab是一个不可执行的文本文件,它有若干行指令所组成。
/etc/inittab文件内容: • # The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)# • #表示当前缺省运行级别为5(initdefault);id:5:initdefault:
#启动时自动执行/etc/rc.d/rc.sysinit脚本 # System initialization.si::sysinit:/etc/rc.d/rc.sysinit • rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。 • 它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。 • rc.sysinit约有850多行,但是每个单一的功能还是比较简单,而且带有注释,建议大家阅读自己机器上的该文件,以了解系统初始化所详细情况。
l0:0:wait:/etc/rc.d/rc 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6 #当运行级别为5时,以5为参数运行/etc/rc.d/rc脚本,init将等待其返回(wait)
/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本 • /etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。
rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。 • init接下来会打开6个终端,以便用户登录系统。通过按Alt+Fn(n对应1-6)可以在这6个终端中切换。 • 在inittab中的以下6行就是定义了6个终端: 1:2345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6
GRUB配置 • 配置文件 /boot/grub/grub.conf default 2timeout 30color white/blue blue/green title Fedora Coreroot (hd0,4) kernel /boot/vmlinuz-2.6.15 ro root=/dev/hda5 Initrd /boot/initrd-2.6.15.img title Windowsroot (hd0,3)chainloader +1 缺省菜单项 设置超时值 菜单颜色 标题 代表第一块硬盘的第5个分区
将rhgb quiet改为single quiet • 按ENTER键完成修改并booting进入Linux单用户模式
进程与服务管理 • 查看系统进程信息的命令 ps • 输出特定的信号给指定PID的进程kill • 关闭和重启Linux系统shutdown • 查看当前运行的进程以及它们的信息,包括它们的内存和CPU用量 top • chkconfig和 service命令的使用
chkconfig命令 • chkconfig --list [服务名] • chkconfig --add [服务名] • chkconfig --del [服务名] • chkconfig [--level lecels] [服务名] [on|off|reset] • service命令 • service [服务名] [start|stop|restart|status]
守护进程 • Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。 • 提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。 • 守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。 • 守护进程的运行方式? • 独立运行的守护进程由init脚本负责管理 • xinetd管理的守护进程
问题 • 如何自己增加一个服务,使其开机自动运行?
任务计划 • cron • crontab主要用于需要重复执行的任务的计划。通过crontab命令计划的任务记录在crontab文件中。 • at • 使用at命令设定只运行一次的命令。
网络基本配置方法 • Linux中常用的网络配置文件 • /etc/sysconfig/netwok-scripts/ifcfg-ethN • /etc/resolv.conf • /etc/sysconfig/network • /etc/hosts • /etc/services
网络相关命令 • traceroute • 显示数据包到主机之间的路径 • ifconfig • ping • netstat • 显示网络状态信息 • arp • 增加、删除和显示ARP缓存
防火墙的设置 Linux为我们提供了一个非常优秀的防火墙工具,它就是netfilter/iptables(http: //www.netfilter.org/)。它完全是免费的。netfilter/iptables功能强大,使用灵活,并且可以对流入和流出的信息进行细化的控制。 1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service iptables start 关闭: service iptables stop 查看防火墙状态:service iptables status 使用命令配置防火墙设置:lokkit setup命令的使用
Lab Building Linux Kernel • Step 1 Preparation • Step 2 Configuring the kernel • Step 3 Compiling and installing the kernel • Step 4 Boot configuration
Lab Building Linux Kernel Cont. • Step 1Preparation • Downloading the source code Download the package linux-2.6.X.tar.gz ( Linux Kernel version 2.6.X ) from the URL: http://www.kernel.org • Move the tarball to /usr/src • Unpacking the source code
Lab Building Linux Kernel Cont. • Step 2Configuring the kernel • Enter the source directory: • Before compilation, a .config file must be generated. This file contains configuration information specific for the machine the kernel is to run on. • There are several methods to generate this file: • make config - prompts one item at a time (avoid) • make menuconfig - text based menu system (recommended) • make xconfig - X windows based configuration tool • make oldconfig - merges an old configuration with a newer kernel
Lab Building Linux Kernel Cont. • Step 2Configuring the kernel Cont. • Configuring the kernel: • Select hardware and options that appropriate for your particular machine.