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/

  • 相关阅读:
    30秒懂SQL中的join(2幅图+30秒)
    MySQL字符串连接函数
    php 月初,月末时间大统计
    php判断中文,英文, 数字
    配置linux----------------ip
    配置samba
    Python的MySQLdb模块安装
    python 之 PIP 安装
    linux之svn
    vue之computed(计算属性)
  • 原文地址:https://www.cnblogs.com/cnpirate/p/2725886.html
Copyright © 2011-2022 走看看