• Save
5, system admin
Upcoming SlideShare
Loading in...5
×
 

5, system admin

on

  • 500 views

Linux system administration basic

Linux system administration basic

Statistics

Views

Total Views
500
Views on SlideShare
473
Embed Views
27

Actions

Likes
0
Downloads
0
Comments
0

4 Embeds 27

http://ebshome.blogspot.com 17
http://ebshome.blogspot.jp 7
http://ebshome.blogspot.sg 2
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 说明: init进程执行的动作都记录在/etc/inittab文件中.
  • 注意:切换用户与用户初次登陆一样,也需要执行这些步骤.
  • 说明:源的元数据存储了包的版本及包之间的依赖关系.
  • 说明:什么是文件描述符?进程在打开一个文件时, 会为该文件分配一个数字进行标识, 该数字就是文件描述符.

5, system admin 5, system admin Presentation Transcript

  • System Administration
  • Agenda
  • 系统启动• 载入BIOS中的硬件信息进行自测;• 读取并执行MBR中的boot loader, 目前流行的是 GRUB;• 载入内核(kernel), 检查硬件并加载相应的驱动程序;• 加载initrd, 并执行init程序, 并判断当前的启动级别 (run level);• init执行/etc/rc.d/rc.sysinit, 执行相关的系统初始化工 作, 比如网络, 时区等;• init执行当前启动级别对应的系统服务脚本;• init执行/etc/rc.d/rc.local脚本;• init执行终端模拟程序mingetty, 并等待用户登录;
  • 系统启动 - 内核和虚拟内存磁盘• 查看/boot目录下面的内容, vmlinuz-2.6.18-164.el5是系统核心(kernel)文件, initrd-2.6.18-164.el5.img则是初始化内存磁盘 (initial RAM Disk)文件;• 在加载内核之后, 内核并不能识别诸如文件系统 (ext3, reiserfs等)之类的信息, initrd起到了一个过渡的 作用; 借由initrd可以载入最基本的系统模块(包含了 文件系统模块), 从而挂载实际的系统根目录, 并最终 释放内存中的initrd虚拟磁盘系统.
  • /etc/inittab 概述• 此文件被init进程读取, 描述了如何对系统进行初始化工 作, 文件的每一行都遵循格式: id:runlevels:action:process id 作为标志, 最多两个字符 runlevels 启动级别, 可以写多个比如1234 action 需要执行的动作, 常见的如下: respawn 进程如果被杀死则自动重启 wait 进入指定的启动级别时, 执行指定 的程序, init会等待该程序结束 sysinit 系统启动时执行指定的程序 initdefault 指定系统的启动级别 process 程序命令, 比如/etc/rc.d/rc 0
  • /etc/inittab - 内容说明• 接下来解释该文件中比较重要的部分:1, id:5:initdefault: 设置系统的启动级别, 这里设置为5. 启动级别使用数字 表示, 可以理解为不同的操作模式, 不同的启动级别会运 行该级别对应的系统服务: 0 关机(保留使用) 1 单用户模式 2 多用户模式, 不启用NFS 3 多用户模式, 启用NFS 4 不被使用unused 5 图形模式 6 重启(保留使用)2, si::sysinit:/etc/rc.d/rc.sysinit 执行/etc/rc.d/rc.sysinit脚本
  • /etc/inittab - 内容说明3, l0:0:wait:/etc/rc.d/rc 0 执行各个启动级别对应的初始化脚本(系统服 务), 比如启动级别5会按照当前的系统配置执 行/etc/rc.d/rc5.d目录下面的脚本.4, 1:2345:respawn:/sbin/mingetty tty1 启动mingetty, 等待用户的登录
  • 系统服务 - 概述• 系统在启动过程中, 会根据启动级别和相关的配置启动相应的系统服 务, linux系统服务是使用脚本文件和相应的命令来实现的, 这里使用 redhat linux为例进行说明. 1, 脚本文件 所有的系统脚本文件都存储在/etc/rc.d/init.d目录下面, 比如 /etc/rc.d/init.d/nfs; 这些脚本文件执行时均可以传入start/stop/restart等 参数启动, 关闭或者重启服务. 各系统级别对应的脚本目录, 比如/etc/rc.d/rc5.d, 下面存放的是指向这 些脚本的符号链接, 因此系统启动时执行的脚本实际上是 /etc/rc.d/init.d下面的脚本. 说明: 实际上对于大多数其它linux发行版本而言, 系统脚本存放在 /etc/init.d目录; redhat有所不同, /etc/init.d只是一个指向/etc/rc.d/init.d 目录的符号链接. 2, 命令 redhat开发了相应的命令便于系统服务的管理, 常用的有: chkconfig 添加/删除/查看/配置系统服务 service 对系统服务进行启动/停止/重启等操作 system-config-service 使用图形界面的方式管理系统服务
  • 系统服务 - chkconfig• chkconfig 此命令用于添加/删除/查看/配置系统服务, # 查看系统服务, 可以指定服务名查看某个特定的服务 chkconfig --list [服务名] chkconfig --add 服务名# 添加一个系统服务 chkconfig --del 服务名 # 删除一个系统服务 # 在指定的启动级别关闭或者开启系统服务 chkconfig --level 级别 服务名 on|off 示例: chkconfig --list # 列出所有的系统服务 chkconfig --list nfs # 查看nfs系统服务 chkconfig --add httpd # 添加apache系统服务 chkconfig --level 234 nfs on # 在系统启动级别234启动nfs服务
  • 系统服务 - service• serviceservice命令用于查看当前系统服务的状态, 启动,关闭或者重启系统服务. 命令格式: service 服务名 start/stop/restart/status另外还可以根据不同的服务传入该服务特有的参数. 示例: service nfs restart # 重启nfs服务 service httpd status # 查看apache服务器状态• system-config-service当用户以X11方式登录系统时, 可以使用此命令对系统服务进行维护, 命令运行之后会打开一个系统服务的图形管理界面.
  • 系统服务 - 如何添加一个系统服务?• 按照如下步骤添加一个系统服务, 这里以 someservice服务为例:1, 编写系统服务脚本, 该脚本应该至少接收 start/stop/restart等参数, 将脚本保存至 /etc/rc.d/init.d/someservice文件;2, 使用chkconfig --add someservice命令添加服 务, 这里的服务名称应该和脚本文件名称一致;3, 添加服务之后该服务默认在各个启动级别均被 关闭, 使用chkconfig --level命令配置需要在哪些 级别启动.
  • 用户登录过程• 系统启动过程中, init进程会按照/etc/inittab的 配置启动多个getty后台进程, 这些进程用于等 待用户的登录; getty有不同的实现, 对于redhat 是/sbin/mingetty;• 用户登录时getty打印出类似”login: ”字符提示 输入用户名, 并调用/bin/login程序对账户信息 进行验证, 如果验证通过则根据用户的设置启 动SHELL程序;• login执行全局shell脚本/etc/profile 和 /etc/bashrc;• login执行用户HOME目录下面的脚本.bashrc 和.bash_profile;• 提示并接受用户输入的命令.
  • 包管理 - 概述• linux系统的安装介质是由一个个的包(package)组成的, 类 似于windows下面的安装文件(.exe), 关于包: 1, 包具有版本 比如gcc-4.1.2-46.el5这里的4.1.2就是gcc这个包的版本; 2, 包与包之间存在依赖关系 依赖关系指的是某个版本的包依赖于另外某个版本的 包; 3, 不同linux发行版包的命名及安装方式不同 比如redhat使用的是后缀名.rpm的包, 系统提供了rpm命 令对包进行安装管理; ubuntu则使用后缀为.deb的包, 命 令为dpkg; 4, 每个linux发型版都配备了相应的包管理工具 比如redhat的yum工具, ubuntu则使用apt-get进行管理.• 对linux系统软件进行维护升级实际上就是下载安装新的 包和解决包之间依赖关系的过程.
  • 包管理 - 包命令 和 包管理工具• 在进行包管理时需要注意区分包命令 和 包管理工 具, 包命令用于对单个包进行维护比如rpm命令;而包 管理工具(yum)则是指基于源(respos)的方式对包进行管 理的工具, 所谓源就是包的集合, 它解决了包之间的 依赖关系问题;• 为什么需要包管理工具? 在使用包命令进行软件包的安装时会碰到如下的困难: 1, 需要搜索并下载相应版本的软件包; 2, 如果该软件包依赖于其他的包, 则仍需要下载其他 的包, 以此类推. 这样很容易导致一个问题: 为了安装一个软件需要 花费大量的时间去寻找并下载相应的软件包. 包管 理工具由此而来, 通过配置适当的源很好地解决了 上面的问题.
  • 包管理 - rpm命令rpm是基于redhat linux分支中使用的包管理命令, 该命令比较常用的选项有: -i 安装软件包, 可以指定多个.rpm文件 -e 删除某个软件包 -v 命令执行过程中输出相关的信息 -q 查询某个软件包的信息 -qa 查询所有已安装的软件包 -ql 显示已安装软件包的文件, 需指定包名 -qlp 显示未安装软件包的文件, 需指定包名 -qf 查询指定的文件属于哪个软件包, 需指定文件路径 -qi 查询已安装包的版本信息, 需指定包名 --test 测试软件包的安装, 并不实际进行 --prefix 指定安装路径 --nodeps 不检查包依赖关系 --force 强制安装常用的rpm命令: rpm -ivh pkg.rpm # 安装某个.rpm包 rpm -e gcc-4.1.2-46.el5 # 移除gcc软件包 rpm -qa | grep gcc # 查看是否安装gcc及其版本 rpm -ql gcc-4.1.2-46.el5 # 查看gcc软件包安装后的文件列表 rpm -qf /path/to/file # 查看文件属于哪个软件包
  • 包管理 - yum• 概述 yum是基于redhat linux分支中使用的包管理工具, 全称 是”Yellowdog Updater, Modified”, 在使用yum进行包管理之前需 要先配置源.源可以是本地的也可以是基于网络的, 本地源是指 存储在本地文件系统上的包组成的源, 网络源对应的软件包需要 通过网络进行获取;• 相关的配置文件 yum源的配置是通过修改配置文件来实现的, 以下文件或目录与 yum源配置相关: /etc/yum.conf 默认源配置文件 /etc/yum.repos.d 源配置文件存放目录, 可以将多个后缀为.repo的 源配置文件放在此目录 通常的做法是不去修改/etc/yum.conf文件, 而将源配置放在 /etc/yum.repos.d目录下面.
  • 包管理 - yum• 配置文件的格式 以下面CentOS 5的源为例对yum源配置进行说明(见注释 行): # 源的名称base [base] # 可以理解为源的title, $releasever|$basearch分别指版本和CPU架构信息 name=CentOS-$releasever - Base - 163.com # 镜像列表, 在baseurl失效后使用 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os # 通过baseurl可以访问源的元数据, 从而下载相应的软件包 baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5• OEL基于网络的源 http://public-yum.oracle.com/public-yum-el5.repo 将上述链接的源配置文件拷贝至/etc/yum.repos.d/目录, 然后 运行yum clean all命令更新源配置.• 如何创建一个本地源? 参考: 《 2, Installation.pptx 》
  • 包管理 - yum• 常用的命令 yum search 查找某个软件包, 需要指定关键字, 此命令会根据包 的名称和描述对关键字进行匹配 yum list 查找某个软件包, 根据包名或者版本信息进行匹配, 并显示该包是否已经安装 yum install 安装某个软件包 yum erase 删除某个软件包 yum clean all清空yum缓存, 在添加新的源之后需要执行此命令 yum grouplist yum源将某些软件包归类到某个group下面, 比如”Web Server”是一个组, 此命令列出所 有已安装和未安装的组 yum groupinstall 安装某个group, 组名称可以通过上面的命令找到 yum groupremove 删除某个group
  • 包管理 vs. 基于源代码编译安装• 前面介绍的无论是rpm还是yum都是基于已经编译好的二进制程 序进行软件安装的, 但有的时候需要下载源代码包手动编译后安 装, 通常有两种情况: 1, 该软件未提供二进制安装包; 2, 需要通过在编译时指定某些选项进行定制.• 基于源代码的方式通常有如下步骤: 1, 下载源代码包并解压, 通常而言是.tgz的压缩包, 这里以 game.tgz为例. 切换到root用户, 使用tar -zxvf game.tgz进行解压 缩; 2, 进入解压缩后的源代码目录, 使用./configure运行目录下面的 配置脚本,该脚本用于检查一些系统信息比如要求的库文件是否 存在等, 并生成MakeFile. 可以为该脚本指定一些参数, 比如: --prefix=/usr/local/game 软件的安装目录 --sysconfdir=/etc/ 软件的配置文件目录 使用./configure --help查看该所有的配置参数. 3, 运行配置脚本成功之后, 使用make命令进行编译;
  • 系统进程管理 - ps• 进程可以理解为操作系统正在运行的某项作业, 进程需要占用cpu时 间, 内存以及IO等资源; 系统会为每一个进程分配一个进程id(process id), 系统启动的第一个进程是init, 其pid是1, 之后所有的其他进程均是 它的子进程;• linux提供了相关的命令用于查看系统进程的信息, 这里逐一进行说明 1, ps ps命令主要用于列出当前系统运行了哪些进程, 该命令常用的格式是: ps -ef 两者均列出系统的所有进程, 显示的信息稍有差别. 前者列出了 ps aux 父进程id, 后者则列出了cpu/内存使用情况 这里选取ps -ef的输出进行说明: UID 进程用户id PID 进程id PPID 父进程id C CPU占用百分比 STIME 进程的启动时间 CMD 启动进程使用的命令 这里比较重要的是UID, PID, CMD列.
  • 系统进程管理 - top & kill2, toptop命令用于查看系统进程运行时的动态信息, 它会动态更新进程占用的CPU, 内存等信息, 示例:执行top命令之后可以交互式的输入一些指令, 比较常用的有:enter 刷新当前的显示q 退出topN 按照pid排序P 按照CPU排序M 按照内存的使用排序k 杀死某个pid的进程3, killkill命令用于杀死某个进程, 使用很简单, 示例:kill -9 254 # 杀死pid254的进程
  • 系统进程管理 - sar4, sarsar命令可以被认为是linux进程监控的集大成者较之其他的命令sar更为全面但使用起来也比较复杂.sar需要安装额外的sysstat软件包, 使用如下命令: yum install sysstat, 安装之后会注册sysstat系统服务, 该系统服务用于收集系统的运行时信息, 使用sar命令是必须确保该服务已经启动, 可以使用/etc/init.d/sysstat start命令手动开启.
  • 系统进程管理 - sarsar命令的格式: sar [options] [-A] [-o file] t [n] -o 2进制格式输出至指定文件 -t 采样间隔时间, 此参数必须 -n 采样次数, 如不指定采样1次, 0表示不限次数sar命令的常用选项:-u cpu -r 内存 -d 硬盘-n 网卡设备 -A 信息汇总 -e 采样截止时间-X 特定进程sar命令示例:sar 1 5 # 查看cpu使用, 间隔1s, 5次sar -X 2425 2 5 # 查看pid2425号进程的cpu使用# 内存采样, 截止时间当天18点sar -r 10 0 -e 18:00:00 > meminfo.txtsar -d 1 10 # 硬盘设备信息采样
  • 系统进程管理 - lsof• lsof命令用于查看进程打开了哪些文件, 在linux下面一切都被当 成文件, 包括设备/网络socket/pipe等;• lsof命令通常的输出格式如下, 这里解释一下FD和TYPE列: FD 文件描述符列, 此列会有如下值: cwd 当前工作目录 txt 文本文件 mem 内存映射文件(memory mapped file) mmap 内存映射设备(memory mapped device) NUMBER 数字, 这里是真正的文件描述符 TYPE文件类型列, 取值: REG 普通文件 DIR 目录 FIFO First In First Out CHR 字符设备文件
  • 系统进程管理 - lsof• 常用选项 -c 查看某个进程打开的文件, 指定进程名称 -p 查看某个进程打开的文件, 指定PID -t 仅显示进程PID列 -u 查看某个用户打开的文件 +D 递归查看某个目录下面文件被使用的情况 +d 非递归查看某个目录下面文件被使用的情况 -i 查看网络相关的信息 -N 查看与NFS相关的信息 以上选项可以被同时使用, 输出结果是各选项输出结果的和, 使用-a选项输出它们的交集. -a 对其他选项的结果做交集• 常用命令 lsof /var/log/syslog # 查看打开该文件的进程 lsof -t /var/log/syslog # 仅列出进程id lsof +D /var/log/ # 递归查看/var/log目录下面文件的使用, +d非递归 lsof -c ssh -c init # 查看ssh 和 init进程文件使用情况 lsof /home # 查看挂载点下面文件的使用情况 等价于 losf +D /home lsof -u root # 查看root用户打开的文件 lsof -u ^root # 查看非root用户打开的文件, ^表示非 lsof -p 1753 # 查看pid1753进程打开的文件 kill -9 `lsof -t -u demo` # 杀死demo用户的所有进程 lsof -u demo -a -c ssh # 查看用户demo的ssh进程打开的文件 lsof -i -a -c ssh # 查看ssh进程使用的网络文件 lsof -i :22 # 查看侦听25号端口的进程
  • 网络管理netstat ifconfig