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:用于磁盘分区
  • 相关阅读:
    [洛谷 U68862] 奶牛滑迷宫 题解
    STL的妙用(二)——洛谷 P2073 送花
    平衡树 x 01-trie √
    最小生成树(大纲,待补全)
    单源最短路算法
    黑科技:如何提高整数域内高斯消元的精度和速度——高斯消元与辗转相除法的结合
    Scratch的入门笔记
    Ubuntu18.04安装Tensorflow
    Ubuntu18.04安装英伟达显卡驱动
    macOS下appstore提示未能完成该操作的解决办法
  • 原文地址:https://www.cnblogs.com/xingyuner/p/14589457.html
Copyright © 2011-2022 走看看