zoukankan      html  css  js  c++  java
  • linux基础

     

     

     

    1.linux的发行版

    Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

    2.linux的启动过程

    • 内核的引导。
    • 运行 init。
    • 系统初始化。
    • 建立终端 。

    用户登录系统。

    init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab。 Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。 Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。

     Linux系统有7个运行级别(runlevel):

    
    
    • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
    • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
    • 运行级别2:多用户状态(没有NFS)
    • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
    • 运行级别4:系统未使用,保留
    • 运行级别5:X11控制台,登陆后进入图形GUI模式
    • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
     

    内核引导:当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备启动,操作系统接管硬件后,首先读入 /boot 目录下的内核

    运行init:init进程是所有进程的起点,没有这个进程,任何进程都不会启动,init程序,首先要读取配置文件 /etc/inittab

    运行级别:根据运行级别,启动一些进程。  许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

    系统初始化:  在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

    建立终端:Linux预设提供了六个命令窗口终端机让我们来登录。默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 来切换它们。

    用户登录系统:命令行,SSH,图形界面登录

    3.linux关机

    正确的关机流程为:sync  > shutdown > reboot > halt

          将数据由内存同步到硬盘中  > 关机 > 重启 > 关闭系统

    shutdown h now 立马关机
    shutdown r now 系统立马重启 
    reboot 就是重启,等同于 shutdown r now
     

    4.linux系统目录结构    

    目录详解:

    以下是对这些目录的解释:
    
        /bin:
        bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
    
        /boot:
        这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
    
        /dev :
        dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
    
        /etc:
        etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
    
        /home:
        用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
    
        /lib:
        lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
    
        /lost+found:
        这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
    
        /media:
        linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
    
        /mnt:
        系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
    
        /opt:
        opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
    
        /proc:
        proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
        这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
    
        echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
        /root:
        该目录为系统管理员,也称作超级权限者的用户主目录。
    
        /sbin:
        s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
    
        /selinux:
         这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
    
        /srv:
         该目录存放一些服务启动之后需要提取的数据。
    
        /sys:
    
        这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
    
        sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
    
        该文件系统是内核设备树的一个直观反映。
    
        当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
    
        /tmp:
        tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
    
        /usr:
         usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
    
        /usr/bin:
        系统用户使用的应用程序。
    
        /usr/sbin:
        超级用户使用的比较高级的管理程序和系统守护程序。
    
        /usr/src:
        内核源代码默认的放置目录。
    
        /varvar 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
    
        /run:
        是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
    
    在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
    
    /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
    
    /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
    
    值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
    
    /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日 志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

    5.linux忘记密码的解决办法

    进入单用户模式更改一下root密码即可。  修改密码

    步骤:开机之后在内核上敲击e,然后编辑选项  > 在linux16这一行,将红框内的内容改成rw rd.break

    >根据提示,使用组合键CTRL+X进入密码修改  > 依次输入 

    # chroot /sysroot //进入系统的根目录
    # passwd   //重置密码
    # touch /.autorelabel //创建文件,让系统重新启动时能够识别修改
    # exit  退出chroot模式
    # reboot //重启系统

    6.文件基本属性

    chgrp:更改文件属组

    chown (change ownerp) : 修改所属用户与组    属主、属组      来授权用户,通过 chmod 为用户设置可以开门的权限。    

    chmod (change mode) : 修改用户的权限    可读可写可执行    drwxr-xr-x

    chgrp [-R] 属组名 文件名
    chown [–R] 属主名 文件名
    chown [-R] 属主名:属组名 文件名
    chmod [-R] xyz 文件或目录
     

    -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

    [root@www /]# ls -l
    total 64
    dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
    dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot

    实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。

    在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

    • 当为 d 则是目录   dictionary
    • 当为 - 则是文件;
    • 若是 l 则表示为链接文档(link file);
    • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

       

      [root@www /]# ls -l
      total 64
      drwxr-xr-x 2 root  root  4096 Feb 15 14:46 cron
      drwxr-xr-x 3 mysql mysql 4096 Apr 21  2014 mysql

      在以上实例中,mysql 文件是一个目录文件,属主和属组都为 mysql,属主有可读、可写、可执行的权限;

      与属主同组的其他用户有可读和可执行的权限;   其他用户也有可读和可执行的权限。

    7.Linux 文件与目录管理

    处理目录的常用命令
    
    接下来我们就来看几个常见的处理目录的命令吧:
    
        ls(英文全拼:list files): 列出目录及文件名
        cd(英文全拼:change directory):切换目录
        pwd(英文全拼:print work directory):显示目前的目录
        mkdir(英文全拼:make directory):创建一个新的目录
        rmdir(英文全拼:remove directory):删除一个空的目录
        cp(英文全拼:copy file): 复制文件或目录
        rm(英文全拼:remove): 删除文件或目录
        mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
    
    你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。

    文件查看

    cat  由第一行开始显示文件内容

    tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写!

    nl   显示的时候,顺道输出行号!

    more 一页一页的显示文件内容

    less 与 more 类似,但是比 more 更好的是,他可以往前翻页!

    head 只看头几行

    tail 只看尾巴几行

     

    rm 文件名 ,可以删除文件。
    rmdir 文件夹名,可以删除文件夹,但是文件夹里面不为空的话命令无法执行。

     mkdir -p test/test2/test3,可以创建多层文件夹一样,

     rmdir -p test/test2/test3 可以删除多层文件夹。从最底层的文件夹开始删除,一直往上层删除,直到遇到不为空的文件夹或者到输入路径的最上层,命令才执行完毕。
    比如如果test2里面有hello.txt的文件,那么执行结果是失败,只删除了test3,还剩test/test2没删除。

    1.Linux 链接概念
    
    Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。
    
    硬连接
    
    硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
    
    硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
    
    软连接
    
    另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
    2.通过实验加深理解
    
    [oracle@Linux]$ touch f1          #创建一个测试文件f1
    [oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2
    [oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
    [oracle@Linux]$ ls -li            # -i参数显示文件的inode节点信息
    total 0
    9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1
    9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2
    9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1
    
    从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 9797648,然而符号连接文件的 inode 节点不同。
    
    [oracle@Linux]$ echo "I am f1 file" >>f1
    [oracle@Linux]$ cat f1
    I am f1 file
    [oracle@Linux]$ cat f2
    I am f1 file
    [oracle@Linux]$ cat f3
    I am f1 file
    [oracle@Linux]$ rm -f f1
    [oracle@Linux]$ cat f2
    I am f1 file
    [oracle@Linux]$ cat f3
    cat: f3: No such file or directory
    
    通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效
    3.总结
    
    依此您可以做一些相关的测试,可以得到以下全部结论:
    
        1).删除符号连接f3,对f1,f2无影响;
        2).删除硬连接f2,对f1,f3也无影响;
        3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
        4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除

    8.linux系统用户账号管理

    添加账号:
    # useradd –d /home/sam -m sam

    此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam

    # useradd -s /bin/sh -g group –G adm,root gem

    此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

    删除账号:

    userdel -r sam

    此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

    修改帐号
    usermod -s /bin/ksh -d /home/z –g developer sam

    此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。

    passwd 选项 用户名
    • -l 锁定口令,即禁用账号。
    • -u 口令解锁。
    • -d 使账号无口令。
    • -f 强迫用户下次登录时修改口令。

    Linux系统用户组的管理

    添加# groupadd group1
    删除 # groupdel group1
    修改  #groupmod 选项 用户组
    切换用户组   #newgrp root这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

    与用户账号有关的系统文件

    • /etc/passwd文件是用户管理工作涉及的最重要的一个文件。

    用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell cat /etc/passwd root:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc:

    • /etc/shadow中

    登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

    • 用户组的所有信息都存放在/etc/group文件中。
      组名:口令:组标识号:组内用户列表
        root::0:root
        bin::2:root,bin

     9.磁盘管理

    • df:列出文件系统的整体磁盘使用量 df -h 
    • du:检查磁盘空间使用量
    • fdisk:用于磁盘分区
  • 相关阅读:
    搜索回车跳转页面
    登录验证码
    【排序算法】排序算法之插入排序
    PAT 乙级 1044 火星数字 (20 分)
    PAT 甲级 1035 Password (20 分)
    PAT 甲级 1041 Be Unique (20 分)
    PAT 甲级 1054 The Dominant Color (20 分)
    PAT 甲级 1027 Colors in Mars (20 分)
    PAT 甲级 1083 List Grades (25 分)
    PAT 甲级 1005 Spell It Right (20 分)
  • 原文地址:https://www.cnblogs.com/xingyuner/p/14589457.html
Copyright © 2011-2022 走看看