Ubuntu完全教程三

 

Ubuntu系统简介

Ubuntu系统目录结构


    以下为Ubuntu目录的主要目录结构,您稍微了解它们都包含了哪些文件就可以了,不需要记忆。

    /   根目录
    │
    ├boot/              启动文件。所有与系统启动有关的文件都保存在这里
    │    └grub/         Grub引导器相关的文件
    │
    ├dev/               设备文件
    ├proc/              内核与进程镜像
    │
    ├mnt/               临时挂载
    ├media/             挂载媒体设备
    │
    ├root/              root用户的$HOME目录
    ├home/
    │    ├user/         普通用户的$HOME目录
    │    └.../
    │
    ├bin/               系统程序
    ├sbin/              管理员系统程序
    ├lib/               系统程序库文件
    ├etc/               系统程序和大部分应用程序的全局配置文件
    │   ├init.d/        SystemV风格的启动脚本
    │   ├rcX.d/         启动脚本的链接,定义运行级别
    │   ├network/       网络配置文件
    │   ├X11/           图形界面配置文件
    │
    ├usr/
    │   ├bin/           应用程序
    │   ├sbin/          管理员应用程序
    │   ├lib/           应用程序库文件
    │   ├share/         应用程序资源文件
    │   ├src/           应用程序源代码
    │   ├local/
    │   │     ├soft/    用户程序
    │   │     └.../     通常使用单独文件夹
    │   ├X11R6/         图形界面系统
    │
    ├var/               动态数据
    │
    ├temp/              临时文件
    ├lost+found/        磁盘修复文件

启动流程

    Linux系统主要通过以下步骤启动:

       1.

          读取MBR的信息,启动Boot Manager

              Windows使用NTLDR作为Boot Manager,如果您的系统中安装多个版本的Windows,您就需要在NTLDR中选择您要进入的系统。 Linux通常使用功能强大,配置灵活的GRUB作为Boot Manager,我们将在启动管理章节中向您介绍它的使用方式。

       2.

          加载系统内核,启动init进程

              init进程是Linux的根进程,所有的系统进程都是它的子进程。

       3.

          init进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启动,并指向一个系统中的程序。

              通常情况下, /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是 /etc/rcN.d/ 目录。例如您设定的运行级别为3,那么它对应的启动目录为 /etc/rc3.d/ 。

       4.

          根据 /etc/rcS.d/ 文件夹中对应的脚本启动Xwindow服务器 xorg

              Xwindow为Linux下的图形用户界面系统。

       5.

          启动登录管理器,等待用户登录

              Ubuntu系统默认使用GDM作为登录管理器,您在登录管理器界面中输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/ 文件夹中找到一个名为 S13gdm 的链接)

更改运行级别

    在 /etc/inittab 文件中找到如下内容:

    # The default runlevel.
    id:2:initdefault:

    这一行中的数字 2 ,为系统的运行级别,默认的运行级别涵义如下:

    0   关机
    1   单用户维护模式
    2~5 多用户模式
    6   重启

服务管理

更改启动服务

    在运行级别对应的文件夹中,您可以看到许多文件名以 S## 和 K## 起始的启动脚本链接。例如:

    /etc/rcS.d/S35mountall.sh   挂载文件系统
    /etc/rcS.d/S40networking    启用网络支持
    /etc/rc2.d/S13gdm           启动登录管理器
    /etc/rc2.d/S20makedev       创建设备文件
    /etc/rc2.d/S23xinetd        启动超级进程

    init进程将以 start 为参数,按文件名顺序执行所有以 S## 起始的脚本。脚本名称中的数字越小,它将被越早执行。例如在 /etc/rc2.d/ 文件夹中, S13gdm 文件名中的数字小于 S23xinetd , S13gdm 将比 S23xinetd 先执行。

    如果一个脚本链接,以 K## 起始,表示它将以 stop 参数被执行。如果相应服务没有启动,则不执行该脚本。例如:

    /etc/rc2.d/K20powernowd     针对某种硬件的电源管理支持

    如果您想禁止某一服务在启动时自动运行,您可以将相应运行级别中的脚本由 S##xxx 重命名为 K##xxx 。

手动控制服务

    您也可以手动运行带有以下参数的启动脚本,来控制系统服务。 - start 启动 - stop 停止 - restart 重启

    例如:

    /etc/rc2.d/K20powernowd start

    有时您并不清楚当前运行级别,该运行级别下未必有相应脚本;而且此类脚本的前三位字符并不固定,不便于记忆。这时,可以直接使用 /etc/init.d/ 文件夹中的启动脚本( /etc/rcX.d/ 中的启动脚本链接到 /etc/init.d/ 文件夹下相应脚本),这也是推荐的方式。

    例如:

    /etc/init.d/powernowd start

    Note:以上命令的位置并没有包含在环境变量的搜索路径中,所以要输入完整路径。

常用系统服务

    acpi-support 高级电源管理支持
    acpid acpi守护程序.这两个用于电源管理,非常重要
    alsa 声音子系统
    alsa-utils
    anacron cron的子系统,将系统关闭期间的计划任务,在下一次系统运行时执行。
    apmd acpi的扩展
    atd 类似于cron的任务调度系统。建议关闭
    binfmt-support 核心支持其他二进制的文件格式。建议开启
    bluez-utiles 蓝牙设备支持
    bootlogd 启动日志。开启它
    cron 任务调度系统,建议开启
    cupsys 打印机子系统。
    dbus 消息总线系统(message bus system)。非常重要
    dns-clean 使用拨号连接时,清除dns信息。
    evms 企业卷管理系统(Enterprise Volumn Management system)
    fetchmail 邮件用户代理守护进程,用于收取邮件
    gdm gnome登录和桌面管理器。
    gdomap
    gpm 终端中的鼠标支持。
    halt 别动它。
    hdparm 调整硬盘的脚本,配置文件为 /etc/hdparm.conf。
    hibernate 系统休眠
    hotkey-setup 笔记本功能键支持。支持类型包括: HP, Acer, ASUS, Sony, Dell, 和IBM。
    hotplug and hotplug-net 即插即用支持,比较复杂,建议不要动它。
    hplip HP打印机和图形子系统
    ifrename 网络接口重命名脚本。如果您有十块网卡,您应该开启它
    inetd 在文件 /etc/inetd.conf 中,注释掉所有你不需要的服务。如果该文件不包含任何服务,那关闭它是很安全的。
    klogd 重要。
    linux-restricted-modules-common 受限模块支持。 /lib/linux-restricted-modules/ 文件夹中的模块为受限模块。例如某些驱动程序,如果您没有使用受限模块,就不需要开启它。
    lvm 逻辑卷管理系统支持。
    makedev 创建设备文件,非常重要。
    mdamd 磁盘阵列
    module-init-tools 从/etc/modules加载扩展模块,建议开启。
    networking 网络支持。按 /etc/network/interfaces 文件预设激活网络,非常重要。
    ntpdate 时间同步服务,建议关闭。
    pcmcia pcmcia设备支持。
    powernowd 移动CPU节能支持
    ppp and ppp-dns 拨号连接
    readahead 预加载库文件。
    reboot 别动它。
    resolvconf 自动配置DNS
    rmnologin 清除nologin
    rsync rsync守护程序
    sendsigs 在重启和关机期间发送信号
    single 激活单用户模式
    ssh ssh守护程序。建议开启
    stop-bootlogd 在2,3,4,5运行级别中停止bootlogd服务
    sudo 检查sudo状态。重要
    sysklogd 系统日志
    udev & udev-mab 用户空间dev文件系统(userspace dev filesystem)。重要
    umountfs 卸载文件系统
    urandom 随机数生成器
    usplash 开机画面支持
    vbesave 显卡BIOS配置工具。保存显卡的状态
    xorg-common 设置X服务ICE socket。
    adjtimex 调整核心时钟的工具
    dirmngr 证书列表管理工具,和gnupg一起工作。
    hwtools irqs优化工具
    libpam-devperm 系统崩溃之后,用于修理设备文件许可的守护程序。
    lm-sensors 板载传感器支持
    mdadm-raid 磁盘陈列管理器
    screen-cleanup 清除开机屏幕的脚本
    xinetd 管理其他守护进程的一个inetd超级守护程序

重要配置文件

    !无论任何情况下,修改配置文件之前,先备份它!

    建议使用这个命令: sudo cp xxx xxx_`date +%y%m%d_%H:%M` 。

    当然这很麻烦,您可以新建一个名为 bak 的文件,内容如下:

    #!/bin/bash
    sudo cp $1  $1_`date +%y%m%d_%H:%M`

    把它放在您能够记住的目录下,比如 /home ,执行命令 sh /home/bak xxx ,就可以将当前文件夹下的文件 xxx 另存为 xxx_yymmdd_HH:MM 的格式了

全局配置文件

    系统初始化

        /etc/inittab 运行级别、控制台数量
        /etc/timezone 时区
        /etc/inetd.conf 超级进程

    文件系统

        /etc/fstab 开机时挂载的文件系统
        /etc/mtab 当前挂载的文件系统

    用户系统

        /etc/passwd 用户信息
        /etc/shadow 用户密码
        /etc/group 群组信息
        /etc/gshadow 群组密码
        /etc/sudoers Sudoer列表(请使用“visudo”命令修改此文件,而不要直接编辑)

    Shell

        /etc/shell 可用Shell列表
        /etc/inputrc ReadLine控件设定
        /etc/profile 用户首选项
        /etc/bash.bashrc bash配置文件

    系统环境

        /etc/environment 环境变量
        /etc/updatedb.conf 文件检索数据库配置信息
        /etc/issue 发行信息
        /etc/issue.net
        /etc/screenrc 屏幕设定

    网络

        /etc/iftab 网卡MAC地址绑定
        /etc/hosts 主机列表
        /etc/hostname 主机名
        /etc/resolv.conf 域名解析服务器地址
        /etc/network/interfaces 网卡配置文件

用户配置文件

    /etc/ 目录下的文件,只有root用户才有权修改。应用软件的全局配置文件,通常普通用户也不能够修改,如果要通过配置软件,来适应特殊需求,您可以修改用户配置文件。

    用户配置文件通常为全局配置文件的同名隐藏文件,放在$HOME目录下,例如:

    /etc/inputrc                /home/user/.inputrc
    /etc/vim/vimrc              /home/user/.vim/vimrc

    也有少数例外,通常是系统程序

    /etc/bash.bashrc            /home/user/.bashrc

软件安装

DPKG


    Linux系统中,软件通常以源代码或者预编译包的形式提供。

    软件源代码需要编译为二进制的机器代码才能够使用,安装比较耗时,不过您可以自行调节编译选项,决定需要的功能或组件,或者针对硬件平台作一些优化。

    预编译的软件包,通常是由软件的发布者进行编译,您只要将软件拷贝到系统中就可以了。考虑到预编译软件包的适用性,预编译软件包通常不会针对某种硬件平台优化。它所包含的功能和组件也是通用的组合。

    Ubuntu系统中,软件通常以 deb 格式的包文件发布,它是一种预编译软件包。deb包中除了包含已编译的软件,通常还包括软件的拷贝路径、对其它软件包的依赖关系纪录、比较通用的配置文件以及软件的描述、版本、作者、类别、占用空间等信息。

    deb软件包命令遵行如下约定:

    soft_ver-rev_arch.deb

    soft
        软件包名称
    ver
        软件版本号
    rev
        Ubuntu修订版本号
    arch
        目标架构名称

    例如: azureus_2.4.0.2-0ubuntu2_all.deb

    您需要使用 dpkg 命令来管理deb软件包:

    dpkg -i | --install xxx.deb   安装deb软件包
    dpkg -r | --remove xxx.deb    删除软件包
    dpkg -r -P | --purge xxx.deb  连同配置文件一起删除
    dpkg -I | -info xxx.deb       查看软件包信息
    dpkg -L xxx.deb               查看包内文件
    dpkg -l                       查看系统中已安装软件包信息
    dpkg-reconfigure xxx          重新配置软件包

    有些时候,您使用 dpkg 安装一个软件包,系统会提示您该软件包依赖其它软件包。这时,您先安装其它软件包,直到满足依赖关系为止。或者同时安装多个软件包

    dpkg -i aaa.deb bbb.deb ccc.deb

APT

    如果一个软件依赖关系过于复杂,使用 dpkg 来安装它,并不是一个明智的选择,这个时候您就需要用到APT软件包管理系统。APT可以自动的检查依赖关系,通过您预设的方式来获得相关软件包,并自动安装配置它。事实上,在多数情况下,我们推荐您使用APT软件包管理系统。

    APT系统需要一个软件信息数据库和至少一个存放着大量deb包的软件仓库,我们称之为 源 。 源 可以是网络服务器,安装CD或者本地软件仓库。您需要修改 /etc/apt/sources.list 文件,使APT系统能够连接到 源。

    从以下页面中获得网络安装源的列表,并且根据您的网络环境,选择速度较快的源。

    http://wiki.ubuntu.org.cn/%E5%BF%AB%E9%80%9F%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97/DapperDrake

    APT系统主要包括 apt-get 和 apt-cache 等命令。通常是复合命令,包含若干个子命令。

    apt-get install xxx     安装xxx
            -d 仅下载
            -f 强制安装
    apt-get remove xxx      卸载xxx
    apt-get update          更新软件信息数据库
    apt-get upgrade         进行系统升级
    apt-cache search        搜索软件包

Tip:建议您经常使用 sudo apt-get update 命令来更新您的软件信息数据库

APT系统修复

    由于各种意外,APT系统可能会出现问题,使用如下命令,尝试进行修复:

    apt-get -f install

源码包

    对于绝大多数软件,我们建议您使用APT系统来安装它。在少数情况下,例如某软件没有以deb包的格式发布,或者需要定制适合自己的软件,您可以通过编译源代码的方式安装它。

    首先需要下载软件的源码包,并且将它解包为一些源代码文件。并了便于管理,建议将下载的源码包移动到 /usr/local/src/ 目录下,并在这里解包。

    sudo mv xxx.tar.gz /usr/local/src       移动源码包
    cd /usr/local/src                       进入“/usr/local/src/”目录
    sudo tar -xzvf xxx.tar.gz               解包源码
    cd xxx_ver/                             进行解包后的源码目录

    源码目录中通常有一个 configure 脚本,用来配置即将开始的编译过程。您可以执行它

    sudo ./configure [--prefix=/usr/loca/xxx ......]

    它会自动检测软件的编译环境和依赖关系,并且生成 Makefile 文件。
        使用带参数的命令 ./configure --help ,或者阅读 INSTALL 文件,查看该脚本允许的参数。例如使用 --prefix=/usr/local/xxx 参数,将软件的安装目录设定为 /usr/local/xxx/ 。(如果一定要将软件安装在单独目录下,建议您安装在这里)

    现在执行 make 命令,系统会根据 Makefile 文件中的设定,通过 make 工具调用编译器和所需资源文件,将源代码编译成目标文件。

    sudo make

    执行 make install 命令, make 工具会自动连接目标文件和库文件,将最终生成的文件拷贝到 Makefile 文件设定的路径中,并且完成更改文件的属性,删除残留文件等活动。

    sudo make install

    现在,编译安装已经完成,为了更方便的使用它,需要给程序的可执行文件作一个符号链接。

    sudo ln -sf /usr/local/xxx/可执行文件 /usr/local/bin/可执行文件

Tip:为了顺利的进行编译,至少需要安装 build-essential 软件包。

sudo apt-get install build-essential

[ 本帖最后由 枫叶飘飘 于 2007-6-29 02:09 编辑 ]
  • 枫叶飘飘 (2007-6-29 01:26:12)
    Xwindow简介

        Xwindow是工作站图形系统的工业标准,它有多种不同的实现,Ubuntu系统中使用的为Xorg。

        (比较前卫的图形界面系统XGL,实际代替X服务器的作用,另外还有与之配套的窗口管理器)

    历史

        当然,Xwindow有悠久的历史和传统,不过那不在我们讨论的范围。您要注意的有两点:

            * Xwindow 和 Xbox 中的“X”本意是不同的, X 只是 W 后的一个字母,差不多应该这样理解,Xwindow 是 Window 的接班人 (注意,Window不是Windows)
            * 同样,也不要把 Xwindow 说成是 Xwindows,那是一种亵渎!一切伟大的创造,都应得到应有的理解和尊重。

    架构及原理

        Xwindow使用服务器-客户端架构。无论本地图形界面,还是远程图形界面,都以同样的流程工作。这样便不需要分别进行设计和维护,极大的提高了网络透明性。

            本地X客户端 ┐                        ┌ 键盘
            远程X客户端 ┼ X协议 ─ X服务器 ─ 硬件规范 ┼ 鼠标
            远程X客户端 ┘                        └ 显示器

    Xserver

        Xwindow系统服务器端,通过驱动程序(硬件规范)来管理硬件资源。

        例如:当我们移动鼠标时,通过驱动程序,向 Xserver 发送信息:

        “向右移动200点,向上移动100点”(向右上移动);“按下左键”……

        Xserver作出如下响应:
            1、上一次鼠标停止的坐标为600,500
            2、向右200,向上100。现在鼠标位于坐标800,600
            3、坐标800,600处,为窗口Firefox的“关闭”按钮
            4、根据预设动作,将 “点击Firefox窗口的关闭按钮” 翻译为 “关闭窗口Firefox”
            5、向X客户端Firefox发送一个“退出”消息
            6、Xserver通过显示子系统(显卡、显示器),全程显示鼠标的位置和移动

            * 事实上,向程序发送“退出”信号,通常窗口管理器完成……为了描述方便,这里暂不区分。稍后,我们将向您介绍 窗口管理器 的其它一些细节。

        大多数的鼠标不需要专门的驱动程序,因为它们符合某一硬件规范,例如:有四个移动方向和三个键
    Xclient

        Xwindow系统客户端,通过X协议,实现与Xserver 的交互。

        例如:
            1、Xclient (假设Firefox) 接收Xserver的消息: 输入焦点在地址栏的范围内,“ubuntu.org.cn”,回车
            2、Firefox根据预设动作,将这些消息识别为 “打开链接 ubuntu.org.cn”
            3、Firefox向域名服务器请求 链接 “ubuntu.org.cn”。域名服务器将这个请求转换为 “http://ubuntu.org.cn/” 和 IP地址211.148.131.7,发送回 Firefox
            4、Firefox将 “http://ubuntu.org.cn/”显示在地址栏(向Xserver发送请求,在地址栏位置显示这个地址)
            5、Firefox向地址 211.148.131.7 请示显示页面。
            6、Firefox将服务器发送回的页面显示在主窗口中

    Xprotocol

        Xwindow系统协议,Xserver和Xclient之间进行通信的规则

    窗口管理器

        Window Manager,一种特殊的Xclient。

        使用窗口管理器时,Xserver并不直接与其它Xclient通信,而是通过WM中转,当一些消息被定义为WM指令时,它们会被拦截。例如Alt+F4关闭窗口、拖动标题栏……

        消息“打开链接 ubuntu.org.cn”,具体内容如下:

        输入焦点在地址栏的范围内,“ubuntu.org.cn”,回车

        Xserver并不能直接判断焦点,而是这样:
            1、Xserver向WM发送位置和点击的信息,WM根据当前的“焦点策略”确定激活(最上层)的窗口为Firefox
            2、Xserver将Firefox显示在最上层,高亮显示它的标题栏
            3、在窗口Firefox内点击地址栏,或者 Ctrl+L,Xserver将位置信息发送给WM,WM再发送给Firefox
            4、Firefox判断当前焦点后,显示一个闪动的文字输入光标
            5、Firefox将输入光标通过WM发送给Xserver,Xserver在屏幕相应位置进行显示

        那么,“窗口管理器”到底能作些什么呢?其实它所作的一切都是管理窗口。例如:

           1.

              最上层的窗口会把其它窗口挡住
           2.

              它通常是一个“已激活窗口”,根据不同的“焦点策略”,窗口管理器确定被激活的窗口。

              激活窗口标题栏高亮显示,接收大部分的键盘消息和窗口内的鼠标点击消息。
           3.

              为了美观和容易分辨,大多数窗口都要有标题栏和边框。

              为了方便,标题栏上还要有一些按钮,比如:最小化,最大化,关闭(这些按钮是窗口管理器请求的小窗口)
           4.

              一个窗口可以在另一个窗口旁边显示,而不一定完全被遮挡。为了实现这一点,就要控制窗口显示的位置
           5.

              为了控制窗口的显示位置,需要将整个屏幕用座标描述,最好的办法是绘制一个填充整个屏幕的窗口,也就是根窗口。
           6.

              因为根窗口是最大的,所以它可以严严实实的遮挡任何窗口,为了避免这一点,根窗口永远在最底层。

              这很形象的说明了为什么它叫作“根窗口” ……root
           7.

              根窗口不一定只有一个,大多数的窗口管理器可以使用 “工作区” ,来切换显示多个根窗口
           8.

              根窗口固定位置上通常放置一些其它Xclient的窗口,例如底部面板,顶部面板,侧面板,程序启动图标
           9.

              面板上又可以放一些其它的Xclient窗口,如任务条,启动栏,菜单……

              任务条可以以图标显示正在运行的任务,还可以作其它的杂活,像自动挂载USB设备……

    启动流程

        我们知道 init 是linux的根进程,是所有进程的父进程。同样, xinit是所有Xwindow进程的根进程

        Startx

            startx 命令可以在命令行下启动图形界面。执行startx 命令时,实际执行这一命令:

            xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc

            根据脚本 /etc/X11/xinit/xserverrc 启动Xserver,同时根据脚本 /etc/X11/xinit/xinitrc 启动指定Xclient进程,例如窗口管理器


            脚本 /etc/X11/xinit/xserverrc 以预设的参数运行程序 /usr/bin/X11/X

            /etc/X11/xinit/xinitrc 脚本则指向 /etc/X11/Xsession ,依次启动 /etc/X11/Xsession.d 目录中的脚本

                * 您可以在用户配置文件 ~/.Xsession 中定义使用的WM,它的优先级高于全局配置文件(对于GDM会话不起作用)
                * startx启动时,并不会再进行身份认证。因为它启动的是 /etc/X11/Xsession.d/gnome-session ,而不是 GDM会话

        GDM会话

            Ubuntu系统启动时自动进入图形界面,不需要运行 startx 命令

            在某些启动级别中,包含了gdm的启动脚本,例如 : /etc/rc2.d/S13gdm

                   1. 指向 /etc/gdm/gdm-cdd.conf 文件,加载预设视觉主题,启动 /usr/lib/gdm/gdmgreeter(登录屏幕)
                   2. 用户身份认证完成后,启动 /etc/X11/default-display-manager 这个文件中设定的默认窗口管理器 /usr/sbin/gdm

            gdm在启动时,会要求用户名和密码,也就是我们看到的登录屏幕(gdmgreeter)

                * /usr/share/xsessions 目录下为所有可用登录会话的脚本

    配置文件

    X服务器


        X服务器的主要配置文件为 /etc/X11/xorg.conf

        布局

        Section "ServerLayout"
        Identifier     "Default Layout"
        Screen         "Default Screen" 0 0
        InputDevice    "Generic Keyboard"
        InputDevice    "Configured Mouse"
        EndSection

            * 定义了 布局标识 、 屏幕标识 、 键盘标识 、 鼠标标识

        模块

        Section "Module"
            Load  "i2c"
            Load  "bitmap"
            Load  "ddc"
            Load  "dri"
            Load  "extmod"
            Load  "freetype"
            Load  "glx"
            Load  "int10"
            Load  "type1"
            Load  "vbe"
        EndSection

        X核心字体路径

        Section "Files"
                FontPath     "/usr/share/X11/fonts/75dpi"
                FontPath     "/usr/share/X11/fonts/100dpi"
                FontPath     "/usr/share/X11/fonts/misc"
                FontPath     "/usr/share/X11/fonts/cyrillic"
                FontPath     "/usr/share/X11/fonts/100dpi/:unscaled"
                FontPath     "/usr/share/X11/fonts/75dpi/:unscaled"
                FontPath     "/usr/share/X11/fonts/Type1"
                FontPath     "/usr/share/fonts/Chinese/wqy-bitmapfont"
        EndSection

        屏幕

        Section "Screen"
            Identifier "Default Screen"
            Device     "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]"
            Monitor    "DELL E176FP"
            DefaultDepth     24
            SubSection "Display"
              Depth     1
              Modes    "1280x1024" "1152x864" "1024x768" "800x600" "720x400" "640x480"
              ………………
            EndSubSection
        EndSection

            * DefaultDepth 24 默认色深
            * SubSection 可用色深及分辨率

        显卡

        Section "Device"
           Identifier  "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]"
           Driver      "fglrx"
           Option       "KernelModuleParm" "agplock=0"
           VideoRam   131072
        EndSection

            * Identifier 显卡标识
            * Driver 显卡驱动(如不同正常启用图形界面,首先尝试"vesa")
            * Option 显卡参数
            * VideoRam 显存大小

        显示器

        Section "Device"
           Identifier  "ATI Technologies, Inc. RV370 5B62 [Radeon X600 (PCIE)]"
           Driver      "fglrx"
           Option       "KernelModuleParm" "agplock=0"
           VideoRam   131072
        EndSection

        配置文件内部结构

        /
        ├/ "ServerLayout"               布局
        │├ "InputDevice" keyboard       键盘
        │├ "InputDevice" mouse          鼠标
        ││
        │└/ "Screen"                    显示子系统
        │ ├ "Monitor"                   显示器
        │ ├ "Device"  videocard         显卡
        │
        │
        ├ "Files"                        字体
        └ "Module"                       模块

    X客户端

        在 /etc/X11/Xsession 文件中可以发现下列内容

        OPTIONFILE=/etc/X11/Xsession.options

        SYSRESOURCES=/etc/X11/Xresources
        USRRESOURCES=$HOME/.Xresources

        SYSSESSIONDIR=/etc/X11/Xsession.d
        USERXSESSION=$HOME/.xsession
        ALTUSERXSESSION=$HOME/.Xsession
        ERRFILE=$HOME/.xsession-errors

            * OPTIONFILE=/etc/X11/Xsession.options 设定X进程的启动参数。例如允许用户进程allow-user-xsession
            * Xresources X资源文件。许多程序保留了X接口,允许X服务器管理一些视觉选项,例如窗口内的字体,配色等
            * xsession X进程。可以设置一些启动时自动运行的程序,也可以用来设定自己的窗口管理器(窗口管理器和桌面环境或者登录管理器是无关的)

    字体

    freetype渲染引擎


        作为Xorg服务器的一个模块,freetype的功能包括读取Truetype字体信息,如大小、分辨率、编码等,并以之为依据渲染字体 - freetype2.x相对于freetype1.x 增加了抗锯齿等功能 - ( /etc/X11/xorg/conf 的 Module 字段中,可以选择字体渲染模块,建议使用默认的 freetype )

        freetype只负责渲染字体。而查找字体,则可以由X服务器、X客户端或者字体服务器来完成。找到字体后,使用freetype引擎就地渲染


        X核心字体
            X服务器根据X客户端的请求(字符编码),查找字体并进行渲染,然后显示,我们称之为
        Xft字体

            X客户端自行查找字体并进行渲染,X服务器只负责显示

            由于Xft字体的渲染在客户端完成,所以它可以动态的加载,而不需要随同X服务器一同启动
        字体服务器
            另外还有一种字体服务器模式,例如 XFT字体:当客户端请求字体时,X服务器将请求转发到字体服务器,由字体服务器查找字体,并使用freetype引擎渲染,将结果传回X服务器,X服务器进行显示……

    X核心字体

        /etc/X11/xorg.conf 中可以配置X核心字体的搜索路径

        Section "Files"
        FontPath "/usr/X11R6/lib/X11/fonts/misc/"
        FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
        FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
        EndSection

            *

              当X客户端向X服务器请求显示文字的时候,X服务器会按上面列表的先后顺序查找字体

                  例如显示中文时,如果第一个路径中的字体不包含中文,则查找下面的路径,直到发现中文字体

            *

              请将您偏好的字体放在靠前的位置

        要使安装的字体能够作为X核心字体使用,将字体的安装路径添加到上面的列表中,使用 mkfontscale 、 mkfontdir 扫瞄文件夹中的字体,并生成索引,就可以了(建议使用 ttmkfdir 生成 fonts.scale ,将其复制为 fonts.dir )

        字体的选择及显示风格,可以修改GTK1的配置文件,或者在Xresources文件中对程序单独进行定义

        事实上,在我们的日常应用中,X核心字体环境并不常见,使用GTK1图形库的程序、某些类型的终端……

            * Emacs也是这样一个老派的程序……不过Emacs23中刚刚加入了xft字体的支持

    XFT字体

        Xft字体相关选项在 /etc/fonts/fonts.conf 文件中配置

        可以使用 fc-cache 命令,递归扫瞄以下目录中的字体(包括子文件夹中的字体),建立字体缓存

        /usr/share/X11/fonts
        /usr/share/fonts
        /usr/local/share/fonts
        ~/.fonts

            * /etc/fonts/fonts.conf 文件的 <dir> 字段

        多数支持GTK2或者Qt图形库的X客户端能够使用Xft字体渲染技术

            * GTK2为Gnome使用的图形库,Qt为KDE使用的图形库。相对来说,GTK2图形库在程序的GUI设计中更加通用


        安装字体,只要将字体拷贝到以上任意目录, fc-cache -fv 刷新字体缓存即可 (参数: -f 强制刷新; -v 显示过程)

        使用命令 fc-list 列出所有可用字体

        字体的选择及显示风格,可以修改GTK2或者Qt的配置文件,建议使用图形界面配置

 

系统管理

一些细节

    Linux是大小写敏感的系统,所有的命令、路径、参数、变量……都区分大小写

    使用 TAB 键补全命令,无论任何时候,多按几次TAB总会有所帮助

    Shell的功能键能够协助您更高效的编辑命令,请熟悉其键绑定,尽量使用它


    命令由 命令名 、 分隔符 、 参数 、 操作对象 构成

        命令名

            标识命令的功能,例如cp(copy)、mv(move)、rm(remove)……

            有些命令包含一些子命令,您可以认为它的命令名由两个单词构成,例如“apt”软件包管理系统:

            apt-get install             安装一个软件
            apt-get remove              删除一个软件

        分隔符

            通常为空格,多个连续的空格视为一个空格,下面两个命令相同:

            cp a b
            cp     a     b

            有一些特殊符号也属于分隔符,例如管道 | 、重定向 > 、 >> 、 < 、后台运行 & 、序列执行 && 、 ; 。使用这些符号时,您不需要再使用空格作为分隔符,例如:

            ls -al|less

            写为以下形式,是为了让您更容易的阅读它:

            ls -al | less

        参数

            精细调节命令的行为,以 - 引导,通常为参数名的首字母。许多软件都可以使用 -h 参数来阅读使用说明,例如:

            apt-get -h

            也可以使用参数的全名,一般以 -- 引导,例如:

            apt-get --help

            多数命令中,使用 - 引导多个字符,将会被视为多个参数,例如:

            apt-get -help

            系统会解读为以下命令

            apt-get -h -e -l -p

            少数命令的参数,不需要以 - 引导,或者使用 - 引导参数全名,例如:

            ps aux
            /etc/init.d/gdm start
            mplayer -loop xxx

        需要对多个对象进行操作时,可以使用空格分隔符将它们隔开:

        touch 1 2 3 4 5 6

        使用空格分隔的多个对象,视为一个整体,作为命令的一个操作对象:

        mv 1 2 3 4 5 6 /home/

        这个命令把“1 2 3 4 5 6”作为一个操作对象,移动到另一个操作对象,“/home/”目录




    递归 表示在子层次中重复相同操作。例如递归复制某目录,不但复制当前目录及其下的所有文件;而且对当前目录的子目录,也进行递归复制的操作。

格式约定

    使用 [] 表示可选项,实际输入为方括号中的内容,例如

    ls [-al]

    ls是必须的,参数不需要以方括号括起来。

    使用 <> 表示必需项,实际输入为尖括号中的内容

    使用 | 表示 或 ,以 | 分隔的项目不能同时使用,例如

    tar [-z|j c|x vf] <归档文件> [源文件]

    参数通常紧跟命令名,除非必要,在命令格式中,我们通常省略它们

系统信息

uptime


联机信息-时间,显示如下

11:27pm    up 9 days,  7:12,      3 user,  load average:   0.07,   0.12, 0.14
当前系统时间      系统运行时间    当前在线用户数    系统负荷       1分钟前       5分钟前  15分钟前

w

联机信息-已登录用户,显示如下

01:04:10 up  1:34,  2 users,  load average: 0.25, 0.16, 0.11
        uptime 信息

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
user     tty1     192.168.0.1       23:30    1:33   0.14s  0.12s -bash
用户名    登录方式   来源地址           登录时间   发呆时间   资源占用   当前任务

Tip:w  [用户名称]   : 显示某一用户相关信息

who

联机信息,常用参数
    -r     运行级别

whoami

显示当前用户名

last

最近用户登录信息

    -<数字> 使用数字作为参数,控制显示条目。例如
        last -10 显示10条纪录

uname

系统信息

    -s 内核名称(默认参数)
    -a 全部
    -p CPU信息
    -n 主机名
    -r 内核发行信息(版本号)
    -v 内核版本信息

date

显示、设定系统时间
    -u 显示格林尼洛时间(UTC)
    MMDDhhmm[[CC]YY][.ss] 设定时间,需要管理员权限。例如: date 12292359

        MM 月份 DD 天数 hh 小时 mm 分钟 CC 年份前两位 YY 年份后两位 ss 秒钟
        秒钟、年份为可选,例如: date 122923592006.59

    +[%X]设定显示格式,以下为date默认输出格式:

            date +%Y年%m月%d日%A%H:%M:%S%Z

        格式控制

            %n 换行
            %t 制表符

        小时

            %H(00~23) %I(01~12) %k(0~23) %l(1~12) %p(AM|PM)

        分、秒

            %M分钟(00~59)
            %S秒(00..61)
            %T(hh:mm:ss) %r(hh:mm:ss [AM|PM])
            %s 从1970年1月1日00:00:00 UTC到目前为止的秒数
            %X(%H:%M:%S)
            %Z时区

        星期

            %a(Sun~Sat) %A(Sunday~Saturday) %w : 一周中的第几天 (0..6)

        年份

            %Y(0000~9999) %y(00~99)

        月份

            %m(01~12) %b %h(Jan~Dec) %B(January~December)

        日期

            %d(01~31) %j(001~366)
            %x(本地格式mm/dd/yy) %D(mm/dd/yy) %c

        一年中的第几周

            %U(00~53)以Sunday为一周的第一天 %W(00~53)以Monday为一周的第一天

cal

显示日历

文件管理

一些细节


    / 目录为文件系统根目录,所有目录都是它的子目录

    绝对路径以 / 起始,相对路径以当前所在目录起始

    目录是一种特殊类型的文件,如果没有特别指明, 文件 包括文件和目录

    .. 表示上一级目录, . 表示当前目录,它们是两个特殊目录


    链接
        为当前文件建立在其它路径中的访问方法。例如将系统中其它位置的可执行文件,链接到 /usr/local/bin 目录下,使用命令调用。

ls [路径]

显示当前目录文件列表
    --color 不同属性以不同颜色显示(默认参数)
    -a 全部显示
    -i 显示inode值
    -l 详细信息
    -F 显示文件类型后缀 目录/ 链接@ 可执行文件* 端口文件= 管道文件| >
    -A 显示隐藏文件
    -R 递归显示子目录文件列表
    -S 按文件大小排序
    -t 按修改时间排序
    -u 按访问时间排序
    -d 只显示目录,不递归显示目录下的文件

cd [目录路径] | [特殊路径]

切换目录

    目录路径可以使用绝对路径或者相对路径特殊路径:

    ~ $HOME目录(默认值)
    - 上一次目录
    .. 上一级目录
    . 当前目录

    Tip:您可以通过修改 /etc/environment 文件,来定义 $CDPATH 变量,设定“cd”命令的搜索路径。

pwd

显示当前路径

file <文件名>

显示文件类型

    -i 显示mime类型

du [路径]

计算文件或目录空间占用
    -h 人性化显示。自动以G、M、K为单位显示占用空间大小
    -l 重复计算硬链接文件大小
    -L 计算符号链接文件大小
    -a 显示当前目录子目录中的文件
    -c 显示文件数

less <文件名>

浏览文件,使用VI和Emacs两种风格的键绑定。以下为VI风格键绑定

Ctrl+f(orward)    向下翻一页    Ctrl+d(own)   向下翻半页
Ctrl+b(ackward)   向上翻一页    Ctrl+u(p)     向上翻半页
/                 查找          q(uit)   退出

touch <目标文件>

触碰,在不修改文件的前提下,更改其时间属性。通常用来创建一个空文件

mkdir <文件夹>

创建文件夹
    -p <多级目录> 按路径创建多级目录
    -m <数字权限值> 设定权限

cp <源文件> <目标目录|文件>

将源文件复制为目录文件,或者将源文件复制到目标目录。多个源文件使用空格分隔

cp <源目录> <目标目录>

将源目录复制到目标目录中,如果复制多个源目录,需要使用 -R 参数
    -a 相当于-dpr参数
    -d 保留链接
    -f 强制复制,覆盖目标文件
    -i 覆盖时询问用户
    -p 保留修改时间和访问权限
    -r -R 递归复制(目录=>目录)
    -l 创建链接
    -v 显示过程

rm <目标目录|文件>

删除
    -r -R 递归删除
    -f 强制删除(无需确认,直接删除。慎用!)
    -i 交互式删除(询问用户)

rmdir <目标目录>

    删除目录时,建议您使用“rm -r”命令

mv <源文件> <目标目录|文件>

相当于cp后删除源文件,也可以作为“重命名”使用。

mv <源目录> <目标目录>

    -r -R 递归

ln <源文件> <链接>

链接
    -s 符号链接
    -f 强制链接,覆盖目标文件
    -i 覆盖前询问用户

文件操作

nano


一个简单轻便的文本编辑器,使用Emacs风格的键绑定。

split <源文件> [目标文件名前缀]

将源文件按一定规则分割成若干个目标文件。默认文件名前缀为 x
    -<行数> 按行数分割文件
    -l <行数> 同上
    -b <字节> 按大小分割文件。可以使用b、k、m作单位,不指定单位的情况下,默认单位为b
    -C <字节> 按大小分割文件,并尽量保持每行的完整

    示例:

    split -C 100k file.split x

cat <文件名>

输出文件内容。用空格分隔多个文件名,可以将多个文件内容连接到一起输出。使用重定向合并为一个文件
    -n 在输出中添加行号
    -b 在输出中添加行号,空行不编号
    -s 将两行或以上的空行,合并为一个空行

    示例:

    cat xaa xab xac > file.split

sort [-o <输出文件>] [-t <分隔字符>] [+<起始字段> - <结束字段>] [文件]

对文本内容排序
    -m 合并文件
    -c 检查文件是否已按规则排序
    -b 忽略行首空格字符
    -u 忽略内容重复行
    -f 忽略大小写
    -l 忽略非打印字符
    -M 作为月份比较
    -d 按字典顺序排序,按照字母、数字、空格、制表符排序
    -r 逆序输出

more

查看文件内容,我们建议您使用 less
diff <文件名>

比较文件

cksum [文件名]

计算文件的CRC值。不指定文件名则从标准输入设备读入数据,例如:

echo xxx | cksum

md5sum [文件名] 计算文件的md5值。同上

权限管理

一些细节


    一个文件主要包含下列属性, ls -l

    - rwx rwx rwx  user  group  date   filename
      111 101 101

    其中,第一组为归属用户的权限,第二组为归属群组的权限,第三组为其它用户群组的权限。user为文件的归属用户,group为文件的归属群组,date为日期信息,filename为文件名。


    对于文件夹,必须拥有它的可执行权限,才能够使用 cd 命令进入该文件夹;拥有可读权限,才能够使用 ls 命令查看该文件夹的文件列表。

    root用户拥有最高权限。


    可以使用3位的二进制数字来描述一组权限,某一权限对应的数字为1,则表示具有该种权限,为0,则不具有该种权限。

    使用二进制数字来描述一组权限,虽然非常直观,但是3组权限需要用9位数来表示,使用不够方便。因此我们将三组权限使用3位8进制数字来表示。它们的对应关系为:

    r 100 4
    w 010 2
    x 001 1

    将这三位8进制数字相加的结果,就可以表示该组权限的具体内容,例如:

    7=4+2+1=rwx
    5=4+1=rx
    755=4+2+1 4+1 4+1=rwx r-x r-x

    还可以使用 a 、 u 、 g 、 o 表示归属关系,使用 = 、 + 、 - 表示权限变化,使用 r 、 w 、 x 表示权限内容,

    a 所有用户  u 归属用户  g 归属群组  o 其它用户
    = 具有权限  + 增加权限  - 去除权限
    r 可读权限  w 可写权限  x 可执行权限

    例如:

    a+x 给所有用户增加可执行权限
    go-wx 将归属群组和其它用户的可写、可执行权限去掉
    u=rwx 归属用户具有可读、可写、可执行权限

chmod <权限表达式> <文件|目录>

更改文件的权限。权限的表达式可以使用三位8进制数字表示,或者使用 augo +-= rxw-s 来表示
    -R 递归
    -v 显示过程
    -c 类似“-v”,仅显示更改部分
    --reference=<参考文件或目录> 以指定文件为参考更改权限

    示例:

    chmod -R a+x path
    chmod -Rv 755 path

chown <归属用户>[:归属群组] <文件|目录>

更改文件的归属用户。可以使用用户名或者UID
    -R 递归
    -v 显示过程
    -c 类似 -v ,仅显示更改部分
    --reference=<参考文件或目录> 以指定文件为参考更改权限

    示例:

    chown user:admin path
    chown -R user.admin path
    chown user path

chgrp <归属群组> <文件|目录>

更改文件的归属群组。可以使用群组名或者GID
    参数同上

SUID、SGID、Sticky bit

    某些情况下,需要以可执行文件归属用户的身份执行该文件,可以为该文件设置SUID。同样,设置SGID能够以该文件归属群组的身份执行它。

    例如:用户自行设定密码。出于安全方面的考虑, /etc/shadow 只能由root用户直接修改。

    -rw------- root root /etc/shadow

    这个时候,可以为程序 /usr/bin/passwd 设置SUID,当普通用户执行“passwd”命令时,便能够以该程序归属用户root的身份修改 /etc/shadow 文件。而“passwd”程序自身带有身份验证机制,不能通过验证时拒绝执行,从而保证了安全。

    ls -l /usr/bin/passwd
    -r-s--x--x root root /usr/bin/passwd

    我们发现,归属用户的可执行权限位使用 s ,表示SUID。同样,归属群组的可执行权限位使用 s ,表示SGID。任何用户或群组都拥有 其它用户 的权限,所以不需要以 其它用户 身份执行文件,其它用户的可执行权限位便不会出现 s 。该权限位可能出现的属性为 t ,也就是粘着位Sticky bit。

    ls -ld /tmp
    drwxrwxrwt root root /tmp

    粘着位表示任何用户都可能具有写权限,但只有该归属用户或root用户才能够删除

    SUID、SGID、Sticky bit也可以像权限一样,使用一个八进制数表示,如下:

    4       SUID
    2       SGID
    1       Sticky bit

    通过在“chmod”命令中使用4个八进制数的表达式,如 4755 ,用第一位表示SUID、SGID、或Sticky bit,便能够为文件设置这些特殊权限。示例:

    chmod -R 4755 path

lsattr [路径]

查看文件的特殊属性
    -a 全部显示
    -d 只显示目录
    -R 递归

    特殊属性包括:

    a:仅供附加用途
    b:不更新最后存取时间
    c:压缩后存放
    d:排除在倾倒操作之外
    i:不得任意更动文件或目录
    s:保密性删除文件或目录
    S:即时更新文件或目录
    u:预防以外删除

chattr  +|-|=<属性> <路径>

更改文件特殊属性
    -R 递归
    -V 显示过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值