zoukankan      html  css  js  c++  java
  • Linux基础知识和命令

    1.文件种类

    使用man man命令也可以看到;

    1 使用者在shell环境中可以操作的命令或可运行文件
    2 系统核心可呼叫的函数与工具等
    3 一些常用的函数(function)与函式库(library),大部分为C的函式库(libc)
    4 装置文件的说明,通常在/dev下的文件
    5 配置文件或者是某些文件的格式
    6 游戏(games)
    7 惯例与协议等,例如Linux文件系统、网络协议、ASCII code等等的说明
    8 系统管理员可用的管理命令
    9 跟kernel有关的文件

    2.硬盘分区表头的16个字节的含义

    硬盘分区表项的16个字节分配如下:  
      第1字节:是一个分区的激活标志,表示系统可引导。如是0则表示非活动分区;  
      第2字节:该分区起始磁头(HEAD)号,8位可表示0~255个磁头;  
      第3字节:该分区起始扇区(Sector)号,实际仅用该字节的低6位,表示1~63扇区;  
      第4字节:该分区起始的柱面(Cylinder)号,与第3字节高2位合成10位二进制数;  
      第5字节:该分区系统类型标志,06-FAT16,0B-FAT32,0F-LBA模式扩展分区,05-扩展分区,07-NTFS分区;  
      第6-8字节:该分区终止磁头号、分区结束的扇区号、分区结束的柱面号;  
      第9-12字节:该分区首扇区的相对扇区号;  
      第13-16字节:该分区占用的扇区总数。  
      举例说明如下,以下是某80G硬盘的分区信息(16进制):  
      000001B0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 80 01  
      000001C0: 01 00 06 FE 7F 04 3F 00 - 00 00 86 FA 3F 00 00 00  
      000001D0: 41 05 0F FE FF FF C5 FA –3F 00 00 E5 11 09 00 00  
      000001E0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00  
      000001F0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 55 AA  
      第一分区的16字节内容为:80 01 01 00 06 FE 7F 04 3F 00 00 00 86 FA 3F 00  
      最前面的“80”是一个分区的激活标志,表示系统可引导;  
      “01 01 00”表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;  
      “06”表示分区的系统类型是FAT16;  
      “FE 7F 04”表示分区结束的磁头号为FE,分区结束的扇区号为7F中的低6位即3F,分区结束的柱面号为04加上7F中的高2位即104;  
      “3F 00 00 00”表示首扇区的相对扇区号,应反过来读即00 00 00 3F;  
      “86 FA 3F 00”表示总扇区数即00 3F FA 86-->4192902个扇区;  
      据此可以计算出该分区的容量:4192902×512=21,979,665,824B =2.047GB。  
      第二分区的16字节内容为:00 00 41 05 0F FE FF FF C5 FA 3F 00 00 E5 11 09  
      最前面的“00”是一个未激活分区的标志;  
      “00 41 05”表示分区开始的磁头号为00,开始的扇区号为1,开始的柱面号为105;  
      “0F”表示分区的系统类型是扩展分区;  
      “FE FF FF”表示分区结束的磁头号为FE,分区结束的扇区号为FF中的低6位即3F,分区结束的柱面号为FF加上FF中的高2位即3FF,但当柱面号是大于3FF时,只能显示3FF,而此盘实际为2604H。  
      “C5 FA 3F 00”表示首扇区的相对扇区号,反过来读即00 3F FA C5扇区;  
      “00 E5 11 09”表示总扇区数即09 11 E5 00-->152167680个扇区;  
      据此可以计算出该分区的容量:152167680×512=7990985216B =72.56GB。

    3.Linux下设置网络需要修改的文件

    修改的参数 配置文件与重要启动脚本 观察结果的指令
    IP相关参数 /etc/sysconfig/network-scripts/ifcfg-eth0
    /etc/init.d/network restart
    ifconfig (IP/Netmask)
    route -n (gateway)
    DNS /etc/resolv.conf dig www.google.com
    主机名 /etc/sysconfig/network
    /etc/hosts
    hostname (主机名)
    ping $(hostname)
    reboot

    4.Run Level等级

    基本上,依据有无网络与有无 X Window 而将 run level 分为 7 个等级,分别是:

    • 0 - halt (系统直接关机)
    • 1 - single user mode (单人维护模式,用在系统出问题时的维护)
    • 2 - Multi-user, without NFS (类似底下的 runlevel 3,但无 NFS 服务)
    • 3 - Full multi-user mode (完整含有网络功能的纯文字模式)
    • 4 - unused (系统保留功能)
    • 5 - X11 (与 runlevel 3 类似,但加载使用 X Window)
    • 6 - reboot (重新启动)

    由於 run level 0, 4, 6 不是关机、重新启动就是系统保留的,所以:『 您当然不能将默认的 run level 配置为这三个值』, 否则系统就会不断的自动关机或自动重新启动.... 好了,那么我们启动时,到底是如何取得系统的 run level 的?当然是 /etc/inittab 所配置的罗!

    5. grub.conf文件中的vga设置

    关於核心功能当中的 vga 配置

    事实上,你的 tty1~tty6 除了 80x24 的解析度外,还能够有其他解析度的支持喔!但前提之下是你的核心必须支持 FRAMEBUFFER_CONSOLE 这个核心功能选项才行。如何确定有没有支持呢?你可以查阅 /boot/config-2.6.18-92.el5 这个文件,然后这样搜寻:

    [root@www ~]# grep 'FRAMEBUFFER_CONSOLE' /boot/config-2.6.18-92.el5
    CONFIG_FRAMEBUFFER_CONSOLE=y
    # 这个项目如果出现 y 那就是有支持啦!如果被注解或是 n ,那就是没支持啦!
    

    那么如何调整 tty1 ~ tty6 终端机的解析度呢?先参考底下的表格再说 (此为十进位数值):

    彩度\解析度 640x480 800x600 1024x768 1280x1024 bit
    256 769 771 773 775 8 bit
    32768 784 787 790 793 15 bit
    65536 785 788 791 794 16 bit
    16.8M 786 789 792 795 32 bit

    假设你想要将你的终端机萤幕解析度调整到 1024x768 ,且色彩深度为 15bit 色的时候,就得要指定 vga=790 那个数字! 举例来说,鸟哥的 tty1 就想要这样的解析度时,你可以这样做:

    [root@www ~]# vim /boot/grub/menu.lst
    ....(前面省略)....
    title CentOS (2.6.18-92.el5)
            root (hd0,0)
            kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet vga=790
            initrd /initrd-2.6.18-92.el5.img
    ....(后面省略)....
    

    重新启动并选择此菜单进入 Linux,你跑到 tty1 去看看,嘿嘿!就已经是 1024x768 的解析度罗! 只是字会变的很小,但是画面的范围会加大就是了。不过,某些版本支持的是 16 进位制,所以还需要修改一下格式呢! 一般使用上表当中的值应该就可以了。不过,由於不同的操作系统与硬件可能会有不一样的情况,因此, 上面的值不见得一定可以在您的机器上面测试成功,建议您可以分别配置看看哩~以找出可以使用的值! ^_^

    6.Linux核心源代码的目录介绍

    Linux核心源代码目录为/usr/src/kernels/

    • arch :与硬件平台有关的项目,大部分指的是 CPU 的类别,例如 x86, x86_64, Xen 虚拟支持等;
    • block :与区块装置较相关的配置数据,区块数据通常指的是大量储存媒体!还包括类似 ext3 等文件系统的支持是否允许等。
    • crypto :核心所支持的加密的技术,例如 md5 或者是 des 等等;
    • Documentation :与核心有关的一堆说明文件,若对核心有极大的兴趣,要瞧瞧这里!
    • drivers :一些硬件的驱动程序,例如显卡、网络卡、PCI 相关硬件等等;
    • firmware :一些旧式硬件的微命令码 (韧体) 数据;
    • fs :核心所支持的 filesystems ,例如 vfat, reiserfs, nfs 等等;
    • include :一些可让其他程序呼叫的标头 (header) 定义数据;
    • init :一些核心初始化的定义功能,包括挂载与 init 程序的呼叫等;
    • ipc :定义 Linux 操作系统内各程序的沟通;
    • kernel :定义核心的程序、核心状态、运行绪、程序的排程 (schedule)、程序的讯号 (signle) 等
    • lib :一些函式库;
    • mm :与内存单元有关的各项数据,包括 swap 与虚拟内存等;
    • net :与网络有关的各项协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等;
    • security :包括 selinux 等在内的安全性配置;
    • sound :与音效有关的各项模块;
    • virt :与虚拟化机器有关的资讯,目前核心支持的是 KVM (Kernel base Virtual Machine)

    7.使用 ether-wake 实行远程自动开机 (remote boot)

    如果客户端的主机符合一些电源标准, 并且该客户端主机所使用之网络卡暨主板支持网络唤醒的功能时,我们就可以透过网络来让客户端计算机开机了。 如果你有一部主机想要让他可以透过网络来启动时,你必须要在这部客户端计算机上进行:

    1. 首先你得要在 BIOS 里面设定『网络唤醒』的功能,否则是没有用的喔!
    2. 再来你必须要让这部主机接上网络线,并且电源也是接通的。
    3. 将这部主机的 MAC 抄下来,然后关机等待网络唤醒。

    接下来请到永远开着的主机 DHCP 服务器上面 (其实只要任何一部 Linux 主机均可!) ,安装 net-tools 这个软件后, 就会取得 ether-wake 这个指令,这就是网络唤醒的主要功能!那该如何使用这个指令呢?假设客户端主机的 MAC 为 11:22:33:44:55:66 并且与我的服务器 eth1 相连接好了,那么你想要让这部主机被唤醒,就这样做吧:

    [root@www ~]# ether-wake -i eth1 11:22:33:44:55:66
    
    # 更多功能可以这样查阅喔:
    [root@www ~]# ether-wake -u
    

    然后你就会发现,哈哈!那部客户端主机被启动了!以后如果你要连到局域网络内的话, 只要能够连上你的防火墙主机,然后透过这个 ether-wake 软件,就能够让你局域网络内的主机启动了, 控管上面就更加方便的啦!你说是吧! ^_^

    Tips:
    鸟哥办公室有一部桌机是经常用来测试的机器,但是因为比较耗电,因此当鸟哥离开办公室时,就会将计算机关闭。 不过鸟哥办公室有一部 NAT server 在负责防火墙的第一道关卡,当鸟哥在家里有需要查询到学校桌机的数据时, 桌机关了怎办?没关系,透过 NAT server 登入后,使用 ether-wake 唤醒桌机,那就能够开机进去工作啰! 这样也比较不怕耗电问题~

     8.Linux系统目录结构

    Linux系统目录结构

    9.需要和根目录放在同一个分割槽的目录

    因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分割槽则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分割槽去!那哪些目录不可与根目录分开呢?有底下这些:

    • /etc:配置文件
    • /bin:重要执行档
    • /dev:所需要的装置文件
    • /lib:执行档所需的函式库与核心所需的模块
    • /sbin:重要的系统执行文件

    10.忘记root密码的解决办法

    常常有些朋友在配置好了Linux之后,结果root密码给他忘记去!要重新安装吗?不需要的, 你只要以单人维护模式登陆即可更改你的root密码喔!由于lilo这个启动管理程序已经很少见了, 这里鸟哥使用grub启动管理程序作为范例来介绍啰!

    先将系统重新启动,在读秒的时候按下任意键就会出现如同第四章图3.2的菜单画面,仔细看菜单底下的说明, 按下『e』就能够进入grub的编辑模式了。此时你看到的画面有点像底下这样:

    root (hd0,0) 
    kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet 
    initrd /initrd-2.6.18-128.el5.img 
    

    此时,请将光标移动到kernel那一行,再按一次『 e 』进入kernel该行的编辑画面中, 然后在出现的画面当中,最后方输入 single :

    kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/ rhgb quiet single 

    再按下『 Enter 』确定之后,按下 b 就可以启动进入单人维护模式了! 在这个模式底下,你会在tty1的地方不需要输入密码即可取得终端机的控制权(而且是使用root的身份喔!)。 之后就能够修改root的密码了!请使用底下的命令来修改root的密码喔!

    [root@www ~]# passwd # 接下来系统会要求你输入两次新的密码,然后再来reboot即可顺利修订root密码了! 


    11.Linux发行版之间的区别

    最大区别在于,发行版的侧重点:

    • CentOS , Redhat, SUSE Entprise侧重于网络服务,企业管理
    • Debian, Slackware侧重于服务器及其稳定性
    • Ubuntu,Fedora,OpenSUSE侧重于用户体验

    同时期发布的发行版Linux Kernel 版本差别不大,软件包管理系统不太一样:

    • Redhat及其近亲(Fedora,CentOS, Red Flag,...)用RPM
    • Debian及其近亲(Ubuntu, ...)用DEB
    • SUSE用的也是RPM但是也支持DEB模式

    备注:上述关于Linux的基础知识大多摘自鸟哥的Linux私房菜网站

    参考资料:

    [1].鸟哥的Linux私房菜,http://vbird.dic.ksu.edu.tw/

  • 相关阅读:
    ArrayList removeRange方法分析
    LinkedHashMap源码分析(基于JDK1.6)
    LinkedList原码分析(基于JDK1.6)
    TreeMap源码分析——深入分析(基于JDK1.6)
    51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
    51 NOD 1049 最大子段和 动态规划 模板 板子 DP
    51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
    8月20日 训练日记
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/cnpirate/p/2725886.html
Copyright © 2011-2022 走看看