UNIX概述

•   UNIX历史

•   UNIX特点

•   UNIX原则

 

UNIX历史

•      UNIX操作系统诞生于60年代末期的Bell实验室

•      美国电话电报公司(AT&T)在70年代中期开始发行UNIX的非商业许可证

•      从70年代末开始在市场上出现了不同的UNIX商品化版本

UNIX特点

•      可靠性高

•      伸缩性强

•      开放性好

•      植根于网络

•      面向数据库使用

UNIX基本原则

•      所有对象,包括硬件都是文件

•      配置数据以文本形式保存

•      由短小的单目的程序构成

•      避免不必要的用户交互

•      可使用多个程序合作完成复杂任务.

GNU项目介绍

•      GNU是GNU’s not UNIX的缩写

•      1984,Project GNU  由Richard Stallman发起

•      GNU的基本体系是micro kernel

•      GNU的基本原则是共享

GPL–GNU通用公共授权

•      FSF,Free Software Foundation

•      Free Software的概念不是免费(gratis)

•      copyleft

•      open source

Linux 起源

•      核心编写者Linus Torvalds

•      自由的类Unix操作系统

•      遵循GNU 和GPL

为何选择Linux?

•      支持UNIX的API,可以实现所有UNIX的功能

•      遵循开源许可协议

•      多用户多任务系统

•      广泛的网络协议和配置支持

•      广泛的硬件支持

•      广泛的技术支持

Red Hat Linux

•      最新的系统内核

•      拥有常用的实用程序和应用软件

•      简单的安装和配置软件

•      提供技术支持

推荐硬件配置

•      奔腾系列或者更高的CPU

•      128 MB或更大的内存

•      最少600MB(文本模式)或1.2GB(图形模式)的硬盘空间

•      可以用于引导系统的CD-ROM或3.5寸软驱。

Linux图形环境

XFree86:标准的Linux X Window系统

      XFree86 3.3.X

      XFree86 4.2.X

GNOME(The GNU Network Object Model Environment)--基于GTK的工具包

KDE    --基于QT的工具包

第一单元

基础操作

Linux用户环境

•      内核(Kernel)

•      Shell

•      终端模拟器(Terminal Emulator)

•      X Window系统

•      窗口管理器(Window Manager)

•      桌面环境(Desktop Environment)

本地登录

Red Hat Linux release 9.0  (Shrike)

Kernel 2.4.20-8 on an i686

 

login:root(用户名)

password:______(密码)

 

提示符与home目录

[root@stationXX root]#

•      [当前用户名@主机名 当前目录]

•      提示符因用户而异

•      home目录是用户登入系统后即所在的默认目录。

创建用户

#useradd [用户名]

#password [用户名]

•      example:

•    [root@stationXX root]# useradd student
•    [root@stationXX root]# passwd student
•    Changing password for user student
•    New password:                                      (无回显)
•    Retype new password:                           (无回显)
•    passwd: all authentication tokens updated successfully
•    [root@stationXX root]#

 

 

 

运行指令

•      指令名[选项][参数]

–   例子:ls -l /etc/X11

 

•      帮助和在线帮助

–   指令--help

•    例:mknod --help

–   man 指令

•    例:man mknod

–   info 指令

•    例:info mknod

 

基础指令(一)

•      man 的使用技巧

    man -k   keyword

    man -f    keyword

    man -a    keyword

    man  n    keyword

基础指令(二)

•      ls    -查看文件

•      cp   -拷贝文件

•      mv  -移动或重命名文件

•      rm  -删除文件

•      touch-   创建空文件或更新文件时间

 

 

基础指令(三)

•      cd   -改变当前路径

•      pwd-察看当前完整路径

•      mkdir-    创立新目录

•      rmdir-    删除空目录

 

 

 

基础指令(四)

•      cat  -察看文件内容

•      more-    逐屏察看文件内容

•      less-逐行察看文件内容

•      date-显示当前时间

•      cal  -显示月历

基础指令(五)

•      df   -显示磁盘用量

 

•      du  -计算目录下文件占用磁盘的大小

基础指令(六)

•      head -显示文件开头部分内容

 

 

•      tail  -显示文件结尾部分内容

设备文件

 

•      设备在Linux中以特殊文件的形式存在

•      块(block)设备文件

•      字符(character)设备文件

•      设备文件所在位置

•      查看设备类型

虚拟控制台及用户身份切换

•      在系统中有12个虚拟控制台,前6个可供用作本地登录

•      用户可以用Alt+Fn(n=1~12)来切换。

•      用su可以用来切换用户身份

          su - username

 

 

 

离开系统

•      重启

–   reboot

–   shutdown -r now

–   init 6

•      关机

–   halt

–   shutdown -h now

–   poweroff

–   init 0

第二单元

文件

检查文件

•      用ls –l以长模式察看文件的详细信息

–  包含当前目录的硬盘使用空间、文件类型、文件权限、硬连接数、文件拥有者、文件所属组、文件大小、更动时间、文件名。

 

•       用file检查文件类型

–   由于linux中的文件名中没有扩展名,所以可能需要 用file来查看文件类型

 

 

文件类型

•      在linux中,所有东西都被当成文件。

•      文件权限前的第一个字母用来标识文件类型:

-: 一般文件

d: 目录文件

b: 块设备文件

c: 字符设备文件

l: 链接文件

p: 人工管道

文件权限 

•      对于每一个文件,Linux都提供了一套文件权限系统。

•      文件权限系统,将操作文件的用户都分成三类

–   文件的拥有者(u)

–   文件所属组的成员 (g)

–   其他用户(o)

文件权限类型

•      对于每一类用户,权限系统又分别提供他们三种权限

•      读(r):用户是否有权力读文件的内容

•      写(w):用户是否有权利改变文件的内容

•      执行(x):用户是否有权利执行文件

改变文件权限 

•      使用chmod 来改变文件的当前权限

chmod  [-R]  权限  文件名

 

•      只有文件的拥有者和root才可以改变文件的权限

使用数字来改变文件权限 

•      chmod后可以用三个数字来表示用户权限

–  第一位代表文件拥有者权限

–  第二位代表文件所属组成员权限

–  第三位代表其他用户权限

•       每一个数字都采用加和的方式

–  4(读)

–  2(写)

–  1(执行)

 

建立链接

•      ln

–   硬 链接

•    语法 :ln  源文件 新建链接名

–   软链接

•    语法:ln –s  源文件 新建链接名

 

ext2/3中文件的构成

•      在ext2和ext3文件系统中,文件以inod+block的方式存在。

•      一但用rm指令删除文件中的inode记录。文件无法被找回。

•      stat指令可以用来检查文件的block与inode状况。

所属用户

•      每一个文件都有一个拥有者。文件的拥有者可以改变文件的权限。

•      root用户可以用chown来改变文件的拥有者。

所属组

•      每一个文件只能属于一个指定的组。

•      文件的拥有者与root用户,可以用chgrp来改变文件所属的组

文件名

•      文件名最大为255个字符。

•      开头为.的文件为隐藏文件。

 

第三单元

目录

目录

•      目录在文件类型上用d标识

•      用/ 分隔目录层

•      Linux 操作系统都有且仅有一个起始目录,我们用一个单独的/ 来表示,称其为根目录。

•      对每一个shell和操作环境,都有一个当前工作目录。

.文件与..文件

•      在每一个目录下都有一个.文件与..文件。

•      .文件是对当前目录的一个硬连接

•      ..文件是对上级目录的一个硬连接

目录权限

•      目录也是一种文件

•      目录上的读写执行权限与普通文件有所不同:

–   读:用户可以读取目录内的文件

–   写:单独使用没有作用。与执行权限连用可以在目录内添加与删除文件。

–   执行:用户可以进入目录,调用目录内的资料

强制位与冒险位

•      除了读写执行权限以外,ext2文件系统还支持强制位(setuid 和setgid)与冒险位(sticky)的特别权限。

•      针对u,g,o,分别有set uid,set gid,及sticky。

•      强制位与冒险位添加在执行权限的位置上。如果该位置上原已有执行权限。则强制位与冒险位以小写字母的方式表示,否则,以大写字母表示。

•      set uid与set gid在u和g的x位置上各采用一个s,sticky使用一个t。

set gid对目录的作用

•      默认情况下,用户建立的文件属于用户当前所在的组。

•      目录上设置了setgid,表示在此目录中,任何人建立的文件,都会属于目录所属的组。

 

冒险位对目录的作用

•      默认情况下,如果一个目录上有w和x权限,则任何人可以在此目录中建立与删除文件。

•      一旦目录上设置了冒险位,则表示在此目录中,只有文件的拥有者、目录的拥有者与系统管理员可以删除文件。

 

强制位对文件的作用

•      在可执行文件上,用户可以添加set uid和set gid。

•      默认情况下,用户执行一个指令,会以该用户的身份来运行进程。

•      指令文件上的强制位,可以让用户执行的指令,以指令文件的拥有者或所属组的身份运行进程。

设置强制位与冒险位

•      用户可以用chmod指令来为文件设置强制位与冒险位。

–   set uid:chmod u+s 文件名

–   set gid:chmod g+s 文件名

–   sticky:chmod o+t 文件名

•      强制位与冒险位也可以通过一个数字加和,放在读写执行的三位数字前来指定。

–   4(set uid)

–   2(set gid)

–   1(sticky)

umask

•      每个用户建立文件时,此文件都会有默认权限。

•      默认权限的值由环境中的umask值来确定

•      用户可以自主改动umask值,并在改动后建立的文件上得到体现。

•      一般用户的默认umak值为002,系统用户的默认umask值为022。

根目录下的目录

•      /bin:存储常用用户指令。

•      /boot:存储核心、模块映像等启动用文件

•      /dev:存储设备文件

•      /etc:存储系统、服务的配置目录与文件

•      /home:存放个人主目录

•      /lib:存放库文件,诸如核心模块、驱动

•      /lost+found:存储fsck用的孤儿文件

 

根目录下的目录(二)

•      /mnt:系统加载文件系统时用的常用挂载点

•      /opt:第三方工具使用的安装目录

•      /proc:虚拟文件系统,包含系统讯息等资料

•      /root:root用户的主目录

•      /sbin:存储系统管理用指令

•      /tmp:临时文件的暂存点

•      /usr:存放与用户直接相关的文件与目录

•      /var:存储在系统运行中可能会更改的数据

 

第四单元

过滤器、输入输出

及管道

过滤器

•      Linux中的应用工具分为三种:

–  交互工具

–  过滤器

–  编辑器

•      能够接受数据,过滤再输出的工具,称为过滤器

•      对过滤器和进程,存在着输入源与输出对象

输入、输出、重定向

•      输入:过滤器的数据来源

–   标准输入stdin(0):默认是键盘

•      输出:过滤器的数据去向

–   标准输出stdout (1):默认是终端屏幕

•      错误输出:报错讯息与标准输出走不同的I/O通道

–   标准错误输出stderr(2):默认是终端屏幕

•      重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向

输入重定向

•      使用“<”来重定向输入源

•      大多数工具都会以其后的文件名为输入源

•      有一些过滤器一定需要添加< 以明确输入源

 

 

从当前文档输入

•      使用<< 让系统将一次键盘的全部输入,先送入虚拟的‘当前文档’,然后一次性输入

•      需要一对字母、符号或字符串作为起始终结标识符

•      可以选择任意符号作为起始终结标识符

输出重定向

•      使用>改变数据输出目标

•      范例:

ls –l > listfile

–   将当前目录下的文件以长模式显示,然后写入listfile文件

•       文件已有内容会被消除

覆盖与追加

•      使用>进行输出重定向,文件的原内容会被覆盖

ls –l > listfile

•       使用>>,可以将输出追加入文件

ls –l >> listfile

错误输出重定向

•      系统错误与标准输出使用的I/O管道不同

•      默认情况下,系统报错会显示到终端屏幕上

•      使用2>将报错讯息重定向入一个文件

find / -type s 2> /dev/null

•       使用2>>将报错讯息追加入一个文件

find / -name passwd 2>> results

双重输出重定向

•      使用>和2>可以将一次操作的正确、错误输入,被单独地送到不同的地方:

find / -perm -2 2> error > results

 

•       使用&>将所有输入都送向同一个地方:

find / -perm +6000 > file

 

管道

•      使用| 将前一个过滤器的输出直接送入后一个过滤器的输入

ls –l | grep pass

•      允许多重管道

•      注意管道前过滤器的输出与管道后过滤器的输入数据类型匹配

 

重定向、管道的常用范例

•      ls –l | more

–  分屏显示当前目录下的文件

•      cat < filea > fileb

–   拷贝filea到fileb

•      cat file.* > file

–   将数个小文件合并成一个文件

 

第五单元

文件查找与文件管理

可执行文件的搜索

•      which

–  显示一个可执行文件的完整路径

–  按照alias -> $PATH的顺序查找

•      whereis

–   搜索一个可执行工具及其相关配置、帮助

slocate

•      语法:

–  slocate [关键字段]

–  locate    [关键字段]

•      所有文件名及其所在路径包含关键字段的文件与目录都会显示

•      slocate先将当前目录结构做成一个数据库,然后再在此数据库中搜索匹配记录

find

•      语法:

find  [路径]  [参数]   [表达式]

•      从指定路径下递归向下搜索文件

•      支持按照各种条件方式搜索

•      支持对搜索得到的文件进一步用指令操作

操作找到的文件

•      语法:

find [路径]  [参数] [表达式]  -exec   指令{} \;

–  {}代表find找到的文件

–  \  禁止转意

–   ;表示本行指令结束

 

常用的文件操作指令

•      wc -统计文件的行、词、字数

 

•      grep -显示文件中匹配关键字的行

 

•      sort -   按序重排文本并送显示

常用的文件操作指令(二)

•      diff -  报告文本差异内容

•      comp -报告文本差异位置

•      uniq -去除文件中重复的行

•      cut -显示文件中的某一列

•      paste -将文本按列拼接

压缩

•      gzip,gunzip

–  Linux标准压缩工具

–  对文本文件可以达到75%的压缩率

•      compress,uncompress

–   旧的Unix压缩工具

•      bzip2,bunzip2

–   更新的Linux压缩工具

–   比gzip有着更高的压缩率

 

Z系列指令

•      对于用gzip压缩的文件,有一系列以z为开头的文件,可以在不经解压的情况下,直接操作文件

–  zcat: 直接显示压缩文件的内容

–  zless: 直接逐行显示压缩文件的内容

–  zdiff: 直接报告压缩文件的差异内容

–  zcmp: 直接报告压缩文件的差异处

tar

•      用于在磁带机、软盘、ZIP设备上做备份。也可以备份在一个硬盘文件上。

•      主要参数:

–   c:将文件备份出来

–   v:将过程输出

–   x:从一个文件中解出备份

•      范例

–   备份:tar cvf backup.tar *.txt

–   解开:tar xvf backup.tar –C backup/

 

 

dump/restore

•      备份与还原ext2/3文件系统

–  不可以在其他文件系统上使用

•       可以选择进行完全备份或增量备份

•       范例:

–  dump –0u –f  /var/tmp/hda2dump /dev/hda1

–  restore –rf /var/tmp/hda2dump

 

第六单元

交互工具与编辑器

交互工具

•      mesg   -- 控制终端是否接收讯息

 

•      常用的交互工具:

–  write: 指定一个在线用户发送短消息

–  wall: 向所有在线用户广播

编辑工具

•      我们通常用各种编辑工具来处理文本文件

•      常用的编辑工具:

–  VIM

–  EMACS

 

Vi

•      作为一个编辑器,vi被广泛地运用在各种Unix操作系统上。

•      Vi是Linux中的标准文本编辑器。

•      在Red Hat Linux上,一般采用的“可视编辑器/ visual editor” 是vim(vi improved)

打开文件

•      vi 文件名

–   如果文件已存在,则此文件被打开且显示文件内容

–   如果文件不存在 ,则vi在第一次存盘时自动建立在硬盘上

存写文件

•      从命令模式下:

–  :w  保存当前文件

–  :q   如果未对文件做改动则退出

–  :wq /:x /ZZ  保存当前文件并退出

–  :q!   放弃存储并退出

–  :e 文件名 打开另一文件并开始编辑

 

vi 模式

•      vi 提供两种模式

–   命令模式

•    浏览、删除、剪贴、查找等
•    可以用各种命令进入插入模式

–   插入模式

•    输入新文档
•    用<ESC>退出插入模式回命令模式

删除与块操作

•             在命令模式下可以直接删除字符

•             在命令模式下键入v则进入块操作:

–         移动光标以选定操作块

–         c 剪切选定块  或  y 复制选定块

–         p 将选定内容贴在光标所在位置右手边

取消操作

•      u:取消上一个更动

•      U:取消一行内的所有更动

•      <ctrl-r>:重做

•      :e! :放弃所有更动,重新编辑

 

查找文本

•      vi支持用户在全文中查找一个关键字段

•      在命令模式下,用/ 向上查找或用? 向下查找

•      查找一直到文件尾或文件头

•      在查找后,可以用n 继续寻找下一个关键字段。

 

命令模式的输入选项

•      : r <文件名>    把文件插入到光标处

•       :r !<命令>      把<命令>的输出插入到当前文本中

•      :nr <文件>       把<文件>插入到第n行

•      :!<命令>          运行<命令>,然后返回

•      :sh                    转到SHELL

•      :so <文件>       读取<文件>,再执行文件里面的命令

第七单元

BASH

Shell简介

•      Shell:命令行解释器,是用户与系统沟通时的媒介。

•      在Unix系统中有各种Shell,Linux采用bash为其默认shell

•      系统可以使用的shell记录在/etc/shells中

bash

•      bash:Bourne Again Shell的缩写。

•      GNU计划的一个组件。

•      与Unix上的Bourne Shell完全兼容。

•      支持命令行输入、操作历史查询、快捷键、使用变量等功能。

预定义环境变量

•      在bash中有很多预定义环境变量

•      系统通过预定义环境变量来定义shell的环境

•      用户可以用set或env查询当前的环境变量

•      常用的预定义变量:

–  HOME:当前用户的主目录

–  PATH:当前用户的可执行文件搜索路径

–  LANG:程序应该使用的默认语言

–  PS1:行提示符

 

history

•      在bash中输入history指令可以查询用户的过往操作。

•      内存中记录的过往指令数根据环境变量中HISTSIZE而定。

•      history表存储在内存中,在用户logout时会记录入用户主目录下的.bash_history文件中。在下次login时载入。

•      .bash_history中的指令数根据环境变量中的HISTFILESIZE而定。

调用过往指令

•      使用! 来调用过往指令:

–  !!:重复执行上一条指令

–  !a:重复执行上一条以a为首的指令

–  !number:重复执行上一条在history表中记录号码为number的指令

–  !-number:重复执行前第number条指令

•      可以用<ctrl+r>来在history表中查询某条过往指令

alias

•      在shell下键入alias可以查询当前alias列表。

•      用户可以alias来为一条命令取一个简单的别名

•      用户也可以用unalias来取消一条别名记录。

•      alias记录在shell中总是先行。

命令行表达式

•      命令行输出——“ ”

–   将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义。

 

•      命令行输出——‘ ’

–   将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义。

•      执行引用符——` `

–   引用命令的执行结果

 

 

命令行表达式(二)

•      数学运算——$[ ]

–  在中括号内的表达式会被数学计算

 

•       逸脱符——\

–   用于取消命令行中字符的特殊含义

–   用于表示一行未结束

 

命令行表达式(三)

•      命令行结束符——;

–   用于在一行内分隔两个独立命令,表示一行已结束,作用相当于回车键

pwd ; ls –l

•       子shell激活——()

–   在小括号内的命令行表示激活一个子shell后在子shell中运行

逻辑运算符

•      shell命令行支持在同一行的两条命令中插入&&(逻辑与)与  ||(逻辑或)

–  &&:当前一条指令执行成功时再执行后一条指令

–    ||:当前一条指令执行失败时再执行后一条指令

登录shell

•      默认情况下,在shell下改变变量、umask、alias,只在此次登录中有效。一旦logout后再login,则设定恢复初始值。

•      一个通过登录而得到的shell,一般是用户的初始shell。

•      在登录shell下激活的shell采用登录shell的环境设定

•      登录shell从配置文件中读取其环境设定

 

定制登录shell

•      bash 在用户登录时从四个文件中读取环境设定:

–   全局设置文件:

     /etc/profile

     /etc/bashrc

–   用户设置文件:

     ~/.bashrc

     ~/.bash_profile

其他shell设定文件

•      ~/.bash_logout:在用户logout的时候自动执行。

•      ~/.bash_history:用户login时自动读取其内容并加载到内存history记录中,logout时将内存history记录写入。

•      /etc/profile.d/*.sh:在/etc/profile中被执行,其中的环境设定,也会被全局引用

常用快捷键

•      Ctrl + d:输入已结束。在shell下相当于一个exit

•      Ctrl + c:键盘中断请求。

•      Ctrl +s & Ctrl + q:暂停/恢复屏幕输出

•      Ctrl + l:清屏,相当于clear。

•      Tab:自动补完命令行与文件名

–  Tab键 双击可以列出所有可能匹配的选择

第八单元

X window

X window 系统

•      支持在Linux上运行图形界面

•       创立于1986年,至今仍在被使用

•      客户端/服务器端模型

•      XFree86 – 自由、开放源代码的执行X

GNOME

•      三个主要构件

–  稳定,易于使用的桌面环境

–  为开发工具提供的完整工具组与库

–  GNOME office的应用工具

•      使用GTK+来设置桌面装饰

KDE

•      KDE是K Desktop Environment的缩写

•      稳定的桌面环境

•      Koffice应用工具

•      使用QT来设置桌面装饰

Sawfish

•      GNOME的默认窗口管理工具

•      可主题化

–  http://sawfish.themes.org

•       非常灵活且易于定制

–  sawfish-ui

•    同样也是GNOME配置工具的一部分

其他X环境

•      无GNOME或KDE的X11

–   一个可以为低性能硬件考虑的解决方案

•      WindowMaker

–   以NeXTSTEP GUI为范本的窗口管理器

•      fvwm

–   成熟、稳定的窗口管理器,在许多版本的Linux中采用过

•      twm

–   一个古旧的X窗口管理器

切换桌面

•      可以在桌面环境中使用switchdesk切换桌面

–  可以选择使用GNOME、KDE或其他窗口管理器

•       建立~/.Xclients、~/.Xclients_defaults或 其他主机配置文件,并在其中指定桌面:

–  GNOME      (exec  gnome-session)

–  KDE       (exec  startkde)

鼠标配置

•      X为三键鼠标而设计

•      双键鼠标可以用双键齐按的方式来模拟中键

•      支持鼠标滚轴轮

–  并不是对所有的应用工具都生效

•      鼠标配置工具  —redhat-config-mouse         

                                  或mouseconfig

拷贝与粘贴

•      以鼠标左键来选择文本(高亮化)

 

•      用鼠标中键来粘贴

–   在双键鼠标中可以双键齐按来模拟中键

启动XFree86

•      设定runlevel为5自动激活图形登录窗口进入X

•      用gdm、kdm、xdm开启图形登录窗口进入X

•      用startx在字符界面下进入X

GUI 终端

•      xterm

–  XFree86的一个组件(不支持中文)

•      gnome-terminal

–   标准GNOME终端

•      konsole

–   标准KDE终端

nautilus

•      GNOME文件管理器

•      从面板上可以点选“start here”来开启nautilus

•      支持http及ftp连接

•      支持text、html、man、info、mp3等文件句柄的嵌入

文书编辑器

•      gvim

–  GUI下的vim

•      kwrite

–   默认 的KDE文本编辑器

•      xemacs

–  x下的emacs编辑器

•      gedit

–   简单 的GNOME文本编辑器

图片浏览器

•      gimp

–   强大的GNU图片处理程序

•      display

–   图片阅览器

•      convert

–   图形格式转换工具

•      gqview

–   图片目录册

•      ee

–   高性能图片浏览器

声音工具

•      xmms

–  Linux上的winamp

•      gmix

–  GNOME标准混声器

•      gtcd

–  GNOME下的CD播放器

网络应用工具

•      gftp

–  FTP客户端

•      xchat

–  IRC客户端

•      evolution

–   邮件客户端

•      mozilla

–   网页浏览器

Office组件

•      Open Office

–  源代码开放的staroffice组

–  oowriter ,ooimpress,oodraw,oomath,oocalc

 

•      koffice

–   完整 的KDE下的office组件

–  kword,kspread,kpresenter,kontour,kchart

X中有用的快捷键

•      Ctrl+Alt+Backspace     退出X

 

•      Ctrl+Alt+Fn                      切换到虚拟控制台n

 

•      Alt+Tab                            改变窗口

 

 

配置X 环境

redhat-config-xfree86

•         Red Hat 开发的X配置工具

•         需要root的权限

•         显卡的选择

•         显示器的选择

•         分辨率的选择

•         色彩的选择

第九单元

系统监视

了解系统状况

•      unam e:显示系统信息

•      hostname:显示主机名

•      last:列出最近的用户登录

•      lastlog:列出每一个用户的最近登录情况

•      free:显示内存使用状况

•      top:系统监视器

 

 

进程

•      系统通过进程来完成工作

•      每一个进程都有一个独立的进程号,系统通过调用进程号来调度操控进程

•      系统的原始进程是init

–  init的PID总是1

•      一个进程可以产生另一个进程,除了init以外,所有的进程都有父进程

查询进程

•      查询进程的指令:

–  ps  [option]

•      pstree可以用来以树状的方式表现进程的父子关系

•      top是一个常用的系统监视工具。

控制进程

•      kill:

–   语法 :kill  [-signal]  PID

向进程传送一个特定的讯号

–   默认为15(终结)

–  kill -l: 列出所有可以由kill传递 的讯号

•      killall

进程的优先级

•      进程的优先级,用nice值来表示

•      nice:以一个不同的nice值来运行指令

–  nice -n num command

•      renice: 改变一个运行进程 的nice值

–  renice -n pid

 

前台和后台

•      默认情况下,一个命令执行后,此指令将独占shell,并拒绝其他输入。我们称之为前台进程。反之,则称为后台进程。

•      对每一个控制台,都允许多个后台进程。

•      对前台/后台进程的控制与调度,被称为任务控制。

将进程丢入后台

•      command &:将一个进程直接丢入后台运行

–  nohup command &:将一个进程直接丢入后台运行,而且在该控制台退出后,进程仍不挂断

•      ctrl + Z:将一个正在运行的前台进程暂停,并丢入后台

 

工作

•      jobs:列出系统当前的后台进程

•      fg:将后台进程拉回前台

•      bg:激活后台暂停的进程

 

/proc目录

•      /proc目录是一个虚拟的文件系统,包含了来自正在运行着的核心的信息

•      用户可以通过cat /proc/下的文件,来获得系统的信息

•      这些信息包括系统硬件、网络设置、内存使用,及其他一些东西

•      /proc/sys目录下的文件,允许系统管理员更动,这些变动会直接影响当前核心

 

系统日志

•      系统日志记录着系统运行中的记录信息

•      在服务或系统发生故障的时候,通过查询系统日志,可以帮助我们诊断。

•      系统日志可以预警安全问题

•      系统日志一般都存放在/var/log目录下

常用的系统日志

•      /var/log/dmesg

–  核心启动日志

•      /var/log/messages

–   系统报错日志

•      /var/log/maillog

–   邮件系统日志

 

常用的系统日志(二)

•      /var/log/xferlog

–  FTP服务用日志

•      /var/log/secure

–   安全信息

–   系统登录与网络连接的信息

•      /var/log/wtmp

–   登录记录

第十单元

Shell Scripts

Shell 脚本

•      Shell Scripts是一个包含shell指令的文本文件。

•      Shell脚本支持变量与简单的语法来完成批量工作。

•      Shell脚本支持交互的方式,在执行时从标准输入读取数据。

•      有大量的系统工作都是通过Shell脚本的方式来完成,例如系统开机,服务控制。

编辑shell脚本

•      我们可以使用各种编辑工具来编辑shell script。

•      在脚本中,#开头表示该行被注释。

•      脚本中可以采用shell下能使用的所用命令、变量、正则表达式

 

变量赋值与继承

•      在shell与shell脚本中,我们允许自己定义变量并为他们赋值。

–  语法:变量名=值

•       默认情况下,变量值不会被继承 入子shell

•       用export将变量变成环境变量

–  export  变量名

•       用unset取消变量定义。

 

脚本的数据读取与写出

•      使用read将数据读入

read username

–   从标准输入读取数据 来为username这个变量赋值

•       使用echo完成简单地输出

echo “hello  world”

•       也可以使用printf来产生各种格式的输出

 

运行shell脚本

•             有三种执行shell脚本的方式

–          sh  /路径/脚本名

–          /路径/脚本名

–          .  /路径/脚本名

if

•      条件判断控制语句:

      if      条件 

               then   动作

      elif   条件

              then   动作

      else         

                  动作

      fi

case

•      条件判断控制语句:

case       表达式      in

             匹配值1)

                        动作;;

             匹配值2)

                        动作;;

            *  )

                        动作;;

esac

select

•      循环控制语句

select     变量     in        数组  

      do

            动作

      done

 

for

•      循环控制语句

for        变量    in         数组

      do

             动作

      done

while

•      循环控制语句

while   条件      

      do

             动作

      done

           

until

•      循环控制语句

until     条件        

      do

            动作

      done

 

Shell 脚本命令行参数

•      使用带命令行参数的Shell脚本

    #command [option1] [option2] …..

•      引用Shell 脚本命令行参数

    $0       命令名本身

    $1       第一个参数(option1)

    $2       第二个参数(option2)

    …       ….

第十一单元

用户管理

检查用户身份

•      用户可以使用下列指令了解用户身份

•      who:查询当前在线的用户

•      groups:查询用户所属的组

•      id:显示当前用户信息

•      finger:查询用户信息

 

添加用户

•             用指令添加命令

–         useradd <username>

–         passwd <password>

•             系统添加用户的标准步骤

•         编辑/etc/passwd与/etc/group
•         创建用户主目录
•         从/etc/skel拷贝文件与目录
•         让新用户获得其主目录与文件的拥有权限
•         给新用户一个密码

更改/删除用户

•      更改用户的资料可以通过:

–  redhat-config-users或kusers之类的图形界面工具来完成

–  在字符界面下可以使用usermod指令来更改

•       系统管理者可以用userdel指令来删除已存在的用户

–   参数-r可以帮助系统将一个用户的目录等一并删除。

/etc/passwd文件

•      passwd文件中记录的是个用户的登录信息。

•      每一行代表一个用户,用: 分隔成七项,即用户的基础登录信息。

•      添加或删除一个用户,最基础的操作,即在passwd文件中添加或删除相应的个人记录。

passwd文件详细

•      login name:登录用名

•      passwd:密码

•      uid:用户身份编号

•      gid:登录默认所在组编号

•      full name:用户全名或注释

•      home directory:用户主目录

•      shell:用户默认使用shell

 

 

Home directory

•      login.defs中的create home选项决定系统在建立用户的时候是否同时创建其主目录

•      系统在建立用户主目录时,会将/etc/skel下的内容复制到新目录下。

•      最后,系统会使该目录与其下的文件归属于新用户。

–  chown –R user.group  目录名

/etc/shadow

•      目前,Red Hat Linux默认将用户密码存储在/etc/shadow文件中。

•      passwd文件默认权限为644,shadow文件默认权限为400。

•      shadow文件支持密码过期设定等功能

•      shadow文件中每一行表示一个系统用户的密码记录,用: 号分隔。

•      用户可以通过authconfig来设定是否使用shadow文件及md5加密。

 

shadow文件详细

•      shadow文件的每一行中的每一项具体来说:

–   登录用名

–   用户密码(一般经md5加密)

–   从1970年1月1日起到密码上一次被更改的时间

–   密码再过几天可以被变更(0表示随时可被变更)

–   密码再过几天必须被变更(99999表示永不过期)

–   密码过期前几天系统提醒用户(默认为一周)

–   密码过期几天后帐号会被取消

–   从1970年1月1日算起,多少天后帐号失效。

 

 

组管理

•      系统中组的信息,记录在/etc/group中

•      系统用户可以直接修改/etc/group文件达到更改组数据的目的,也可以使用以下指令:

–  groupadd:添加一个组

–  groupdel:删除一个已存在组

–  groupmod:更改组的信息

•       用户可用newgrp指令改变当前所在组

 

组文件

•      /etc/group中的每一行代表一个组,用: 隔开不同项

–  group_name: 组名

–  password: 组密码(一般不用)

–  GID  : 组身份编号

–  user_list: 组成员列表

 

第十二单元

硬件配置与管理

设备文件

•      Linux沿袭Unix的风格,将所有设备认成一个文件。

•      设备文件分为两种

–  块设备文件(b)

–  字符设备文件(c)

•      设备文件一般存放在/dev目录下

常用的块设备文件

•      /dev/hd[a-t]:IDE设备

•      /dev/sd[a-z]:SCSI设备

•      /dev/fd[0-7]:标准软驱

•      /dev/md[0-31]:软raid设备

•      loop[0-15]:本地回访设备

•      ram[0-19]:内存

常用的字符设备文件

•      /dev/null:无限数据接收设备

•      /dev/zero:无限零资源

•      /dev/tty[0-31]:虚拟终端

•      /dev/ttyS[0-9]:串口

•      /dev/lp[0-3]:并口

•      /dev/console:控制台

•      /dev/fb[0-31]:framebuffer

常用的符号连接设备文件

•      /dev/cdrom   à/dev/hd[a-t],sd[a-z]

•      /dev/modemà/dev/ttyS[0-9]

•      /dev/pilotà/dev/ttyS[0-9]

设备文件的使用

•      用户可以通过操作设备文件来完成对设备的操作。

–  echo hello > /dev/tty2

 在 第二个tty终端上显示一个‘hello’

–  cp /dev/fd0 /dev/fd1

 将第一个软驱中的软盘拷入第二个软驱中的软盘

–  dd if=/dev/hda of=/root/mbr bs=512 count=1

 备份第一个硬盘上的mbr为/root目录下的mbr文件

dd

•      dd指令是一个功能强大的copy命令

•      支持在拷贝文件的过程中转换文件格式

•      支持指定范围的复制

•      常用参数

–  if=文件名:指定源文件

–  of=文件名:指定目标文件

–  bs=xxx: 指定块的大小

–  count=n: 指定复制块的数量

mknod

•      系统用户可以用mknod指令来建立所需的设备文件

–  语法:mknod 文件名文件类型  主号从号

•      主号与从号可以在

   /usr/src/linux-2.4/Documentation/devices.txt中找到

kudzu

•      kudzu:Red Hat Linux上的硬件自检工具,它维护两份文件

–  /etc/sysconfig/hwconf;使用硬件列表

–  /etc/modules.conf:为硬件指定驱动

•      kudzu以/usr/share/hwdata为数据库寻找硬件

•      hwbrowser是图形界面下的硬件管理器

硬盘结构

•      对于每一个硬盘:

–   主引导记录/Master Boot Record/MBR

–   硬盘分区 表/Standard Partition Table/SPT

–   主分区/Primary Partition

–   扩展分区/Extended Partition

•    逻辑分区/Logical Partition

 

硬盘分区

•      一块硬盘只能有四个主分区

•      用户可以也只可以将一个主分区变成扩展分区

•      在扩展分区上,用户可以以链表方式建立逻辑分区

–  Red Hat Linux对 一块IDE硬盘最多支持 到63个分区,SCSI硬盘支持到15个。

–  fdisk工具最多只能辨认出16个分区。

为硬盘分区

•      硬盘分区工具

–  disk druid:方便的分区工具,只能在安装时使用

–  fdisk:运用广泛的字符界面下硬盘分区工具

•      分区改变后需重启系统才会生效。

第十三单元

文件系统

文件结构

•      为了能在设备上储存与读取文件,我们需要在分区上创立文件系统

•      文件系统记录目录与文件我们称之为文件结构

•      每一个文件系统在Linux里都被解释成由一个根目录为起点的目录树结构

•      Linux将各个文件系统挂载(mount)在系统目录树中使用。

文件系统

•      对应不同的操作系统与设备,计算机里有许许多多种文件系统。

•      不同的文件系统存放、搜索文件的方式都有不同

•      Linux支持多种文件系统的读写。

•      Linux自身最主要使用的是ext2/ext3文件系统

ext2/ext3文件系统

•      ext2/ext3文件系统支持rwx权限及文件属性(attributes)。

•      ext2/ext3文件系统采用block+inode的方式存放文件

•      ext2/ext3文件系统上有一块空间被称为超级块(superblock)用于存放文件系统的元数据,诸如卷标名、block数、inode数等等

•      inode存放文件的元数据,包含文件权限、属性、更改时间等等数据。

文件属性

•      在ext2/3文件系统中,对每一个文件,还提供额外的属性支持

•      用户可以用lsattr来检查文件的属性

•      系统用户可以用chattr来改变文件的属性

–  +号添加、-号去除

ext3文件系统

•      ext3文件系统即一个添加了日志功能的ext2,可与ext2文件系统无缝兼容

•      ext2文件系统可以通过增加日志的方式简单地升级成为ext3文件系统

•      ext3文件系统支持三种日志模式

–  规则(默认,仅记录元数据)

–  日志化(将数据象元数据一样记录入日志)

–  写回(只在fsck时发生)

 

其他常见的文件系统

•      minix:古老的文件系统

•      msdos/fat:microsoft早年的文件系统

•      vfat:win95与win98采用的文件系统

•      ntfs:win2000使用的文件系统

•      iso9660:光盘使用的文件系统

•      ReiserFS/JFS:仍然在完善的带日志文件系统

创建文件系统

•      如果我们需要使用一个分区用于存储文件,则我们要在这个分区上建立文件系统

•      常用的创建文件系统的工具:

–  mkfs

 可以用于创建各种文件系统 ,由-t参数指定

–  mke2fs

 创建ext2/3文件系统,支持指定block大小等功能

使用文件系统

•      为了使用一个文件系统,往其中存读文件,用户需要先挂载该文件系统。

•      挂载文件系统的指令是mount。

•      语法:

mount -t 文件系统类型[其他参数] 设备挂载点

 

 

mount参数

•      -t 文件系统类型:用于指定挂载文件系统的类型,一般这个参数是必须的。

•      -o 参数:补充追加的参数

•      ext2文件系统默认采用的参数:rw、suid、dev、exec、auto、nouser、async

/etc/fstab

•      配置文件系统挂载信息

•      mount文件系统时若给出的参数不全,系统会从/etc/fstab中读取参数补完

•      系统启动会参考/etc/fstab中的配置项自动加载文件系统

•      也被fsck、dump、quotaon、swapon等程序使用

当前挂载系统

•      用户可以通过直接键入mount后回车来检查当前挂载中的文件系统

•      用户也可以通过查看/etc/mtab文件来查看当前挂载中的文件系统。

卷标

•      由于设备文件名可能在硬盘结构发生变化时更动,因此Red Hat Linux对ext2文件系统使用卷标来挂载与卸载。

•      卷标记录在ext2/ext3文件系统的超级块中

•      用户可以用e2label指令来查询与更改ext2文件系统的卷标

卸载文件系统

•      当一个文件系统使用完毕,用户应当卸载该文件系统。

•      umount指令用于卸载文件系统

•      语法:

umount [参数] 设备/挂载点

•      一个正在使用中的文件系统不能被卸载

文件系统维护

•      fsck/filesystem check:用于检查与修复文件系统

–  e2fsck:检查与修复ext2文件系统

•      系统在启动时自动会被检查

•      tune2fs:更改ext2文件系统属性

•      resize2fs:更改ext2文件系统的大小

•      parted:更改多种文件系统大小

自动挂载

•      系统通过autofs服务自动挂载文件系统

–  需要后台的automount进程

–  autofs服务的开闭由/etc/init.d/autofs脚本控制

•      主要应用于软驱与光驱等场合

•      如果该设备一段时间没有被使用,autofs会自动卸载

 

磁盘限额

•      Linux内核支持基于文件系统的磁盘限额

•      每一个组或用户,可以单独设置其磁盘限额

•      磁盘限额包括对block的限制与对inode的限制,每一种限制又可以分为软限制与硬限制

•      软限制被突破后,经过一段时间(grace time),会自动变成硬限制

quota的配置与使用

•             在/etc/fstab中需要设置磁盘限额的文件系统所在行的第四项(mount参数)中添加usrquota、grpquota参数

•             使用mount –o remount 需要限制的文件系统,将mount参数带入/etc/mtab中

 

 

quota的配置与使用(二)

3.  执行quotacheck –auvg,在文件系统的根目录下建立aquota.user及aquota.group两文件

4.   使用edquota 用户名与edquota –g 组名编辑用户与组的磁盘限额

5.  用quotaon –auvg打开quota功能

 

第十四单元

计划任务

Linux的计划任务

•      Linux系统支持一些能够自动执行任务的服务我们称其为计划任务:

–  at:指定一个时间执行一个任务 

–  cron:根据一个时间表自动执行任务

–  anacron:在一个指定时间间隔错过后自动执行任务

 

at

•      at服务:安排一个任务在未来执行

•      at服务需要系统后台有一个atd进程

•      常用指令

–  at: 安排延时任务

–  atq: 查询当前的等待任务

–  atrm: 删除等待任务

–  batch: 以一个低优先级延时执行任务

at的使用控制

•      at的使用控制文件

–  /etc/at.allow

–  /etc/at.deny

•      基于用户的使用控制

cron

•      允许系统根据时间表自动完成任务

•      服务需要后台运行的系统进程crond

•      开关cron服务

–   系统管理员可以 用service crond start|stop来开关cron服务

–   用chkconfig或ntsysv选择cron服务的默认开启关闭。

定制个人计划任务

•      用户级别

–  crontab –e:编辑当前的守护进程表

–  crontab –l:列出当前的守护进程表

–  crontab –r:删除当前的守护进程表

–  crontab –u user:以某一个用户的身份

•      /var/spool/cron:存放用户守护进程表

crontab格式

 *   *   *   *   *   echo “hello” | wall

分钟/小时/日/月/星期  命令

#每分钟向所有在线用户的屏幕上发送‘hello’

 

定制系统计划任务

•      系统级别

–   采用/etc/crontab作为 其crond的运行配置文件

–   与个人 的crontab文件格式有所不同

–   默认情况下,系统会自动执行以下目录内的脚本

•   /etc/cron.hourly: 每小时的零一分
•   /etc/cron.daily: 每天四点零二分
•   /etc/cron.weekly: 每周日四点二十二分
•   /etc/cron.monthly: 每月一日四点四十二分

–  /etc/cron.d/目录下存放着附加的系统守护文件

cron的使用限制

•      默认情况下,所有用户都可以定制自己的守护任务

•      系统的守护任务只能由root来编辑

•      限制/允许用户使用cron

–  /etc/cron.allow

–  /etc/cron.deny

anacron

•      cron服务的扩展

•      防止非24小时开机的计算机遗漏守护任务

•      每次计算机通电时自动检测

•      配置文件:/etc/anacrontab

–   范例:

7    80   cron.weekly   run-parts  /etc/cron.weekly

tmpwatch

•      为指定目录清理古旧文件

•      有效应用于防止/tmp目录被填满

•      tmpwatch每天在/etc/cron.daily中运行

•      语法:

/usr/bin/tmpwatch  小时数指定目录

 

 

 

第十五单元

RPM包及其管理

什么是RPM

•      RPM:RedHat Package Manager

 

 

RPM的安装和卸除

•      安装与卸除

–   安装:rpm -i

–   升级:rpm -U

–   更新:rpm -F

–   卸除:rpm -e

•      可能会用到的补充参数

–   输出用:-v,-h

–   预设条件:--nodeps,--force

–   重定位:--root

RPM包的查询

•      RPM包的查询:

–  rpm -q: 查询某一个RPM包是否已安装

–  rpm -qi: 查询某一个RPM包的详细信息

–  rpm -ql: 列出某RPM包中所包含的文件

–  rpm -qf: 查询某文件属于哪一个RPM包

–  rpm -qa: 列出当前系统所有已安装的包

–  rpm -qp: 指定一个等待安装 的RPM包

 

RPM包的校验及检查

•      RPM包的校验

–  rpm -V:校验某个RPM包

–  rpm -Va:校验所有已安装的RPM包

•      RPM包的 检查

–  rpm -K: 检查RPM包的GPG签名

第十六单元

 打印与电子邮件

在Linux中进行打印

•      打印机可以是本地打印机也可以是网络打印机

•      打印请求首先被送入打印队列

•      排队的请求任务按照先来先服务的原则送到打印机

•      在打印前或打印中可以取消任务

打印命令

•      lpr - 提交一个任务到打印队列以供打印

           可接受的格式:ASCII,PostScript

•      lpq - 查看打印队列的内容

•      lprm - 从打印队列中删除一个任务

•      System V 的打印命令也在支持之列(例如:lp,lpstat 和cancel )

 

从应用程序中打印

•      大部分的应用程序输出PostScript格式

•      从应用程序输出仍然使用LPRng打印系统

         任务被送到打印队列

         lpr的参数可以被使用

打印工具

•      enscript - 把文本文件转化成PostScript文件

•      a2ps - 把文本文件转化成PostScript文件

•      gv - PostScript 文件浏览器

•      ps2pdf - PostScript到PDF转换器

•      pdf2ps - PDF到PostScript转换器

•      mpage  - 在一张纸上打印多页

邮件

•      一台Linux主机可以是一个邮件服务器或邮件客户端

•      有很多可用的邮件客户端

         文本模式

                  pine,mutt

          图形模式

                   mozilla Mail,evolution,kmail,balsa

          命令行模式

                   mail

邮件客户程序

•      pine - 菜单驱动接口,简便易用

•      mutt - 可详细配置的邮件客户程序

•      evolution - 邮件,任务管理器,联系管理器

•      mozilla mail - 图形,高级过滤,支持多个邮件帐号

•      kmail - 图形,简单易用,KDE的一部分

POP和IMAP

•      POP - Post Office Protocol

              允许远端收取和删除邮件

              在客户端的邮件必须是压缩的

IMAP - Internet Message Access Protocol

               允许远端邮件收取和基于服务器的邮件目录管理

邮件过滤

•      mozilla mail拥有很灵活的过滤功能

 

•      pine和mutt的过滤功能由procmail来实现

fetchmail

•      收取远端的邮件然后送到本地的邮件系统

•      支持许多协议

           POP

           IMAP

           SMTP

第十七单元

sed

•      Stream EDitor (流编辑器)

          用来编辑文本流

          只读取文件一次

          通常用在命令的输出

          占用的系统资源很少

sed  地址

•      告诉sed在哪里执行编辑

       没有地址- 编辑整个文件

       一个地址- 编辑所有匹配的

       两个地址- 编辑所有在之间的

 

sed脚本

•      编辑内容可以写成脚本

•      脚本是包含sed命令的文本文件

•      有很多的命令和选项!

一个sed例子

•      把文件aboutsed.txt中所有的单词"slow"换成"fast"

•      $ sed s/slow/fast/g aboutsed.txt > output.txt

 

awk

•      编辑文本的程序语言

•      在一个文件中搜索匹配一个模式或多个模式的行

•      在匹配的行上执行特殊的操作

 

awk程序

•      规则通常由新行来分离

•      规则包含一个模式和在{ }内包含的操作

                pattern  {action}

运行awk程序

•      简单的程序可以在命令行下直接输入:

              $awk 'program' input file

•      更长的程序保存在文件中

              $awk -f program_file input_file

一个简单的awk例子

•      用awk搜索文件/etc/passwd中包含"bash"字符串的行

               $ awk '/bash/ { print }' /etc/passwd

一个更加复杂的awk例子

•      统计/project目录下所有属于用户joshua的文件的总大小.

            #ls -l /project | awk '$3 == "joshua" { \

sum += $5 } END { print sum }'

何时使用awk

•      从大量的原始数据中产生报告

•      从其他程序的输出中总结信息

•      当你需要一个又小又快的文本处理程序的时候

 

到哪里学到更多

•      sed和awk有详细的info页

                    $info sed

                    $info awk

其他语言

•      Red Hat Linux支持的其他语言和程序库包括:

•      Perl

•      Java

•      C和C++

•      Tcl/Tk和Expect

•      GTK+

•      Qt

•      php

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐