【Linux】Linux操作系统期末复习笔记

Linux操作系统基础

Xu An   2018-7-4


第一讲 Linux简介

1、Linux是一个开源的操作系统,发布于GPL协议,全称为GNU/Linux

2、Linux和Unix是相近的

3、FreeBSD是从BSD发展过来的,MacOS是基于FreeBSD开发的 类似还有OpenBSD


第二讲 文件系统

1、Linux使用Ext3,Ext4(16.04默认使用)格式,会越使用效率越高

2、没有盘符概念,使用整体目录树组织文件

3、使用/表示根目录,也是整个目录树的顶层,其他目录均位于/之下

Linux启动时会把磁盘文件信息映射为内存中的树形结构,启动时的目录结构在内存中

4、所有的目录至少包含两个子目录,.表示当前目录,..表示上一层目录

    /也有上层目录(..),其上层目录是自己

5、目录的作用

    /     根目录

    /usr  用户的程序,配置信息    使用pwd查看用户目录

    /bin  存放最常用的命令目录,最核心的命令(和sbin一起是最核心的命令)

    /sbin root用户使用的命令所在的目录

    /boot 系统启动文件所在目录,内核等

    /etc  配置文件等,包默认的安装目录

    /dev  外设设备映射此目录下的文件(U盘映射、打印机映射)

    /media 把系统自动识别U盘,光盘挂载到此目录下

    /proc 虚拟目录,内存的映射,可以得到系统进程信息

    /sys  吧硬件设备映射成文件,通过文件控制硬件

    /var  存放变化增长的东西

    /usr/bin 用户程序目录

    /usr/sbin 超级用户权限目录

    /tmp 临时文件目录

6、创建文件夹——mkdir

    mkdir 文件夹名称

    查参数 man 命令

7、显示目录内容——ls(list)

    ls -a 显示所有文件(包括隐藏文件)

    ls -t 按修改时间顺序排序,最新的排在最前面

    ls -R 显示文件全部内容

    ls -S 文件大小顺序排序

    ls -l 查看详细信息

8、切换工作目录(cd,change directory)

 cd.. 进入上一层目录(在根目录下cd..还是根目录)

 cd~ 在任何目录下进入用户主目录

 cd- 进入上一次使用目录

9、设备文件和磁盘管理

    /dev是外接设备的映射文件,/dev/sd[a-z]表示硬盘设备(hd表示IDE

硬盘)

    在MBR中,一个硬盘最多4个主分区,需要更多分区则需要扩展分区(最多数量为1)

    扩展分区可以有多个,sda5始终表示第一个逻辑分区

    /dev下的cdrom、dvd表示光盘等 

10、df(disk files) 查看磁盘占用 

    df -h 易于读取的形式查看系统占用情况

11、fdisk 磁盘管理

    fdisk -l 列出指定磁盘的分区

12、mkfs (make filesystem)

    创建文件系统(格式化)

    sudo mkfs -f <文件系统类型> <设备分区>

    e.g. sudo mkfs -f ext4 /dev/sdb1

13、挂载 mount 卸载umount

    e.g.

    mount -r /dev/sdb2 /media/c 只读模式挂载

    umount /media/c   卸载挂载点

    想要读取U盘中的文件,必须进行挂载


第三讲  终端

1、终端是一个设备,计算机最外围的设备,主要功能是输入和输出

    早期终端是物理组件,不具备计算能力

    现在的终端,为一个模拟器代替,是虚拟化的终端

    终端的切换:使用ctrl+option+fn键切换不同虚拟控制台

    (virtual console),默认是f7

2、终端是一个设备   shell是一个程序

    shell的功能是获取用户输入的命令运行,返回输出,程序通过shell显示在终端上

    shell有多种实现形式,默认为bash,还有sh、zsh、fish等,均为命令解释程序

    virtual console与terminal完成相同的工作,都是虚拟终端

3、内部命令:属于shell解释器的一部分,是shell程序自带的命令(在系统中找不到文件,可以直接执行)

   外部命令:安装的命令,独立于shell解释器之外,需要安装设定好的路径查找,找到后才可以执行

   

   使用type 命令查看命令类型  e.g. type for  (keywords)

   

   hash会缓存检索过的命令,直接通过hash进行定位 刚开机时hash为空,每次运行命令

   使用whereis查看命令的位置 查找 目录+帮助文档路径(.gz结尾)

4、命令格式

    命令 选项 参数 (多数情况下参数和命令没有顺序要求,个别会有)

    选项的含义:

        -引导 单字符(可以叠加)e.g. ls -a

        --引导多字符    ls --color (误)

    多个字符可以叠加在一起如 -al ,前提是程序支持

5、获得命令的帮助

    内部命令 help + 命令名称

    外部命令 man + 命令名称

    --help 

6、命令搜索路径(环境变量)

    bash中的命令在 ~/.profile中

    其默认的搜索路径:

    ~/bin   ~/.local/bin  

    /usr/local/sbin; /usr/local/bin; /usr/bin

    /sbin; /bin; /usr/games; /usr/local/games

7、添加环境变量

    在path后面添加:/home/username/文件名

8、shell配置

    tab  补全

    history 查看所有缓存在.bash_history 中的命令

    history -c 清空历史记录

    ctrl+a 跳转首行

    ctrl+e 跳转行尾

    ctrl+c 终止程序

    ctrl+w 按单词删除,空格隔开为一个独立的词

9、终端常用命令

    ls 列出文件目录信息

        ls /usr      显示/usr的目录内容

        ls -R /usr   递归显示/usr目录内容

    cd 切换工作目录

    mkdir 创建目录


    rm 删除给定的文件或目录,如果目录不为空,需要使用rm -rf

    cp 拷贝

        cp tmp/a.sh  sh/     --复制a.sh到本目录下的sh/ 中

        cp tmp/a.sh  /tmp    --复制a.sh 到绝对路径 /tmp下

        cp tmp/a.sh  sh/b.sh --复制a.sh到sh/ 并重命名为b.sh

    mv 移动

        mv tmp/a.sh sh/  --移动文件

        mv tmp/a.sh sh/b.sh --移动文件且重命名

        mv tmp/a.sh tmp/c.sh --重命名文件

    cat 显示文件内容

        cat /etc/passwd

    less 以全屏幕方式显示文件内容

    find 在指定目录下查找文件

        find /usr/ -iname gcc*  --在/usr中寻找以gcc开头的文件,大小写不敏感

        find /usr -name gcc  --在/usr中查找 gcc的文件,大小写敏感

    touch 创建空文件

        touch tmp/test.sh 在tmp下创建test.sh的空文件

    env 显示环境变量


第四讲  IO重定向和管道

一、标准输入输出

    (1)每个进程至少有3个信道:

        标准输入-stdin  文件描述符0,默认指向终端(键盘)

        标准输出-stdout 文件描述符1,默认指向终端(屏幕)

        标准错误-stuerr 文件描述符2,默认指向终端(屏幕)

    (2)在linux中一切皆文件,一个进程从文件描述符为0的文件读取输入信息,将结果输出到文件描述符为1 的文件中,并把出错信息输出到文件描述符为2的文件中

    (3)文件描述符:一个进程有一个结构保存一组打开的文件,每个打开的文件用一个数字标识,这个数字就是文件描述符


    e.g. 

        echo abc   --在屏幕上显示abc

        echo abc >~/tmp.txt  --将abc不但输出在屏幕上,还在/home/xuan/tmp.txt中保存输出信息

        echo bcd >>~/tmp.txt --将bcd追加在abc后面而改变原来的

二、控制重定向

    shell中使用> < >>等符号进行重定向shell而不是程序

    shell把重定向符号解释成指令,将标准输入、输出等

三、重定向符号

    <   重定向标准输入(将输入从键盘改为指定某文件)

    >   重定向标准输出 (输出到指定文件,不输入到屏幕上)

    >>  重定向标准输出 (追加内容到指定文件)

    2>  重定向错误输出(将错误信息内容到指定文件)

    2>> 重定向错误输出 (将错误信息追加到指定的文件)

    &>(>&) 将错误、标准输出到指定文件

四、重定向实例

    e.g. 1

    wc -l file   --wc -l为统计行数,本条为将文件名作为输入

    wc -l <file  --本行为将文件内容输入 >

    e.g. 2

    find / -iname gcc* >find_tmp   --将输出写入到文件find_tmp,但错误信息会显示

    find / -iname gcc* &>find_tmp  --将错误和输出到指定文件

五、管道

    shell在解释命令时会创建管道,并创建两个进程,把标准输入输出重定向到管道,前一个进程向管道写入数据,后一个进程从管道中读取数据

    标准错误输入不会写入管道,直接输出到终端

六、管道和重定向实例

    e.g. 

    find /iname *gcc* 2>/dev/null |wc -l 将含有*gcc*的错误信息输出到(/dev/null/实质为丢弃),并统计行数 

    ps -ef |grep ssh --查找含有ssh的进程

    ls | sort -r   --查看当前目录并排序

    help test | less  --分页查看文件


第五讲  用户和组管理

一、linux用户分类

    超级用户:root用户

    普通用户:系统安装时创建的用户及后期使用中由用户创建的用户

    系统用户:系统及服务运行必须存在的用户,默认情况下不能登录系统

二、用户相关文件

    1、用户信息文件 passwd

    用户信息保存在/etc/passwd中,每一行对应一个账号记录

    格式为:

        登录名:口令(已加密,x代替):用户标识号:组标识号:注释性描述:主目录:登录后的shell

    需要root权限

    e.g.

    xuan:x:1000:1000:Xu An,,,:/home/xuan:/bin/bash

    2、用户密码信息文件shadow

    /etc/shadow保存用户加密后的密码,只有root权限可以读取

    文件不要手动修改,要让程序修改

    格式为:

        登录名:加密的密码(sha256加密,!表示没有密码,*是系统账号,不能登录):最近一次修改密码的时间(距离1970-1-1的天数):密码最短有效天数(默认为0,表示无限制):密码最长有效天数:提前多少天告知用户口令将过期

    e.g. 

    xuan:$1$.AlctH6N$xLP5KavvA/.yQPn44nVAK0:17661:0:99999:7:::

三、用户组分类

    1、超级用户组(root)、系统组(system group)、用户组(user group)

    2、基本组:用户所属于的第一个用户组,/etc/passwd中指定

             其他组为附加组, /etc/group中指定

             一个用户可以属于多个附加组,但只能属于一个基本组

    3、私有组:建立账户时,若没有指定账户所述的组,则系统建立一个和用户名相同的组,该组只容纳一户

       公有组:容纳了多个用户的组,属于多个组的用户所拥有的权限是所在组的权限之和

四、组信息文件 group

    /etc/group中保存了系统中所有的组信息

    格式为:

        组名:组密码(已加密,用x代替,真正的密码在/etc/gshadow中):组标识号:以本组为附加组的用户列表

    e.g.

        xuan:x:1000:  --私有组

        adm:x:4:syslog,xuan  --共有组,syslog、xuan以其为附加组

    查看组的常用命令:

    1、groups  查看用户所属的组

    2、groups user 查看user用户所在的组

    3、id user  同时查看用户信息和组信息

五、root用户

    root用户具有最高的权限,其UID为0,在bash上提示符为#,普通用户为$

    使自己用户具有root权限:在/etc/passwd中将自己的uid改为0

六、su(switch user)命令

    可以让普通用户切换为root或其他用户,当前工作目录不变

    用法:

        su 选项 用户名    (若不加用户名,默认切换到root)

七、sudo命令

    允许程序以临时root身份运行,其是受限的su,授权用户可以有5分钟的root权限(root用户不需要sudo)

    /etc/sudoers 记录了那些用户具有sudo权限

八、设置密码

    命令:  sudo passwd username

    Ubuntu中root密码在每次登陆时自动更新,如果需要进入root模式,设置如下:

    1、使用 sudo passwd root命令对root用户密码重新设置

    2、su root命令进入root用户

    3、如需退出使用exit命令

九、修改用户名和密码

    1、修改用户名

        sudo vim /etc/passwd 把原来的改成新的

        sudo vim /etc/shadow 把原来的改成新的

        reboot  重启

        mv 用户目录 自己用户目录 移动用户文件夹

    2、修改密码

        sudo passwd username

十、adduser 添加用户

    此命令默认创建带主目录的普通用户,也可以创建系统用户

    e.g.

        sudo adduser --shell /bin/bash user1  //创建user1,使用shell为bash

        sudo adduser --shell /bin/bash user2 --gid 1001  //创建user2,使用bash,并添加到附加组1001

        sudo adduser --shell /usr/sbin/nologin  --no-create-home --system --disbled-password --disabled-login mysql //创建系统用户mysql

十一、deluser 删除用户

    sudo deluser username //只删除用户名,其他信息均保留

    sudo deluser --remove-home username //删除用户并删除主目录

    sudo deluser --remove-all-files username //删除用户以及一切数据本用户的文件

十二、创建删除组

    sudo addgroup --gid ID group1  //创建group1的组并手动指定组ID

    sudo adduser --group --gid ID group //另一种创建组的方法

    sudo delgroup group1  //删除组

十三、添加组  

    sudo usermod -G group1 -a user1  //将user1加入group1中

    sudo gpasswd -d user1 group1   //将user1从group1中移除


第六讲 文件编辑

一、nano

    1、文件创建 nano 文件名  如果有则打开,没有则新建

    2、基本操作:ctrl+O写入,ctrl+X退出

    3、配置文件:/etc/nanorc

二、vim与vi

    vim是vi的增强版,支持配色主题

    1、三种模式

        命令模式:输入命令对文档操作

        输入模式:编辑文本,显示--insert--

        底行模式:输入:输入命令,完成后返回命令模式

    2、vim启动 

        默认启动为命令模式,输入i,a,o可以切换到插入模式,按esc返回到命令模式

    3、vim基本操作

        (1)光标操作

            h 光标左移

            j 下一行

            k 上一行

            l 光标右移

        (2)删除、插入

            x 删除后面的字符

            X 删除前面的字符

            i 当前位置插入  (a,i, o均进入插入模式)

            a 后一个位置插入

            o 下一行插入

        (3)按esc返回指令模式,输入

            w 写入文件

            q 退出文件

            wq 写入并退出

            q!不保存退出

        (4)指令模式操作

            d 删除、剪切

            dd 删除整行

            d$ 删除到 

            dd 删除当前行  数字+dd 删除以下几行

            u  撤销

            control+r 恢复

            p 复制


第七讲  文件管理

一、Linux文件系统概述

    Linux中,一切皆文件 外设也会被映射成文件 在/dev目录下

    大小写敏感  

    文件目录也是文件,记录了其他的文件信息

二、Linux文件系统

    Linux文件扇区一般512bit

    扇区分为以下几个区域:

    boot block:用于启动分区,如系统安装在本分区,则存储启动信息

    super block:存储文件系统类型、i-node table文件大小信息

    i-node:文件在DateBlock中的存储位置(实际通过本区域找到文件并对文件操作)

    Data block:实际存储数据

    目录文件名:记录其他文件名与i-node

二、常用命令

    ls 列出文件

    stat a 查看a的文件信息

    rmdir 删除空目录

    cp tmp/a tmp/b 复制tmp/a文件到tmp目录,命名为b

    mv tmp/a tmp/b 将tmp/a重命名为tmp/b

    rm -rf 强制删除目录

    ln 创建硬链接或符号链接

    chmod 更改文件权限和所有者

    chown 更改文件所有者

三、文件权限和标志位

列出文件权限信息:ls -l

670453 drwxrwxr-x 2 xuan xuan   4096 May 20 20:05 bin

权限信息依次为:

    1、文件对应iNode号  

    2、文件类型:d(dictionary)目录,l(link)链接文件,- 普通文件

    3、文件权限:r(readable)可读取

            w(writable)可写入

            x(executive)可执行

            连续的三组分别为用户权限、用户组权限、其他用户权限

    4、文件硬链接数

    5、文件所属的用户

    6、文件所属的组

    7、文件大小(字节为单位)

    8、文件创建时间

    9、文件名称


r:可读

w:可写

x:可执行

用户 用户组 其他用户

rwx  rwx  rwx  (八进制表示)

111  111  111

查看在建立文件时预设的权限掩码:umask 现有权限减掉权限掩码后,可以得到建立文件时预设的权限

目录一定有可执行权限 否则cd命令不能切换

文件默认权限:

    系统不允许在创建一个文件时就赋予其执行权限,必须用chmod命令增加权限,但目录允许设置其权限

    默认权限计算:用777按位减去掩码中的相应位置,并且文件要减去可执行位置

四、更改文件权限

    使用chmod命令

    chmod 数字权限 文件路径  e.g chmod 755 bin/pse

    或者

    chmod u=rwx,g=rx,o=r

五、更改文件所属的用户组、用户

    chown 用户名:用户组 hd1  更改hd1文件为所属的用户、用户组

    chown :用户组 hd1 更改文件所属的用户组

    chown  用户名: hd1 更改hd1所属的用户

六、硬链接(hard link)

    ln target link-name  如:ln a b 会在当前目录下创建文件的硬链接b

    在执行连接之前,存放连接的目录不能有与连接名同名的文件,如果创建硬链接,则target文件必须存在,且不能是目录

    硬链接没存建立新文件,相当于文件有一个别名(多个文件名使用一个inode,硬连接数+1)

    rm会使得硬链接数-1,硬链接数为0则会从文件系统中删除

    inode号为系统唯一,linux挂载多个文件系统,创建硬链接不能跨文件系统也不能跨分区

七、软链接(符号链接,类似于Windows上的快捷方式)

    1、ln -s 目标目录(用绝对路径如$HOME/xuan/tmp) 新建目录(如temp)

    2、创建符号链接会创建一个文件,记录了另一个文件的路径

       如果删除源文件或目录,则只删除数据,不删除软连接,一旦以同样的文件名创建了源文件,链接将继续指向该文件

    3、符号链接的大小是指向文件名称的字节数

        可以跨分区跨文件系统


第九讲  进程管理

一、基本概念

进程:运行中的程序,系统会给每一个进程分配一个数字标记,为进程ID(PID)

父进程:进程B由进程A创建,则进程A就是进程B的父进程,进程B就是进程A的子进程

(在shell中输入命令,则shell就是父进程,运行的程序就是shell的子进程,守护进程除外,守护进程的父进程是init,pid=1)

PPID:父进程的ID

UID(user id):每个进程都有所属的一个用户ID,运行程序的用户ID,每个进程都有一个父进程,其UID继承自父进程

EUID(effitive user id)有效ID,表示进程对于文件和资源的访问权限,大多数时候EUID=UID,但是对于设置了相关标志位的程序,运行时会改变EUID。代理运行的用户权限

GID(groud id):进程组的ID

EGID(effective group id):有效组ID

二、常见相关命令

    ps 查看进程信息(前台正在运行的程序)

    ps -e 查看所有进程的信息

    ps -aux 查看详细信息

    ps -ejH 显示进程树

    kill 向进程发信号,终止进程

    pgrep 搜索进程

    top/htop 动态监控进程情况,系统资源使用情况

    nice/renice 调整进程优先级

shell内建命令:

    bg 后台任务继续执行

    fg 后台任务转换到前台运行

    jobs 显示后台运行的任务

 三、进程搜索

    pgrep -a sh 搜索含有sh的进程并列出详细信息

    或者

    ps -e | grep 进程名

四、kill进程

    kill -l 查看命令详情

    kill +pid kill指定pid的进程

    kill -9 +pid 强制kill进程

五、后台任务

    一个任务运行时间太长,或者需要长期运行,如果想获得终端控制权,可以直接将其转入后台

    后台暂停:

    control+z 转入后台

    jobs 查看后台任务

    fg 编号 把后台任务转入前台执行

    后台运行:

    在命令后面加&可以使任务直接后台运行

    find / -iname *curl* 2>/dev/null >tmp/findtmp


    bg 进程号 转入后台运行


    如果在bash里显示,需要重定向来取消显示

六、优先级

    nice 返回当前进程的优先级,一般情况下子进程会继承父进程的优先级,系统内核在运行进程时会动态调整

    nice ps会在当前优先级上加上一个数值(默认为10)运行ps,nice调整的范围是-20~19,数字越小优先级越高


    renice 增加或减少的优先级 PID        调整优先级 

    增加或减少的优先级是一个整数,如果是负数,则只有root权限才可以执行

七、动态监控进程

    使用top命令动态查看进程(Linux内建)

    saidar 动态监控资源占用,但不显示进程信息

    pstree 树形结构显示进程信息


第十讲  网络管理

ip 显示ip地址

ss 显示套接字信息,可以替代netstat

nethogs 网络监控工具

为eth0网卡分配ip地址 

ip address add 192.168.180.102/24 dev eth0

iftop


第十一章  shell脚本基础——变量

shell是用户和系统交互的桥梁

shell是linux的一个程序,实现版本有很多,shell的主要工作是运行命令

sh是shell的缩写,实现方式有sh、bash等

多数Linux的默认shell是bash,登录以后,会运行一个shell等待用户输入命令

一、shell环境变量

环境变量是一个名称和值对应的列表。

一种shell是启动时自动解析的命令

取得环境变量的值:echo $环境变量(如:echo $PWD)


真正执行命令的是系统内核而不是shell

二、shell脚本

shell可以从一个文件中读取命令并逐条执行,文件称为脚本

大多数linux发行版的默认shell为bash

反引号``取得命令变量的值

分号设置两个变量


输入文件名直接执行 rm 当前文件 /bin


第十二章  程序结构

一、test

 是shell内建的命令,可以处理脚本内的各类工作,产生的不是一般形式的输出,而是可用的退出状态

 test返回true或false 但是true是0,false是1(和其他相反)

 test命令有其他形式,[]在&& ||使用会出错,需要用[[]]

二、if语句

    if [ command ] ;then

        command

    elif [ command ] ;then

        command 

    else

        command

    fi

    注意:if [ command ] ;then command ;fi 写在一起时要加分号

三、case

    case $1 in

    "hello")

        echo "hey!"

        ;;

    "time")

        date

        ;;

    *)       --默认选项

        echo "nothing to do"

    esac

四、for

    for i in a b c

    do

        echo $i

    done

第十三章  vim和C语言编程

一、vim配置文件

    在/etc/vim/vimrc 中,但是用户主目录下的.vimrc会覆盖当前的配置

    使用"标记注释


第十四章  Linux系统编程基础

一、简介

    系统编程是调用系统的API完成的任务

    man2 查看系统接口文档

    man3 是程序库函数文档

    man syscalls 查看所有的系统调用

二、调用实例

    1、获取自己的pid :getpid()

    2、用fork创建子进程:fork() 新创建的进程会和父进程一样继续执行(出错返回-1.正常返回0)

    3、等待子进程退出:wait(int *status)(相当于waitpid(-1,&status,0))

        等待子进程退出,并把子进程退出状态设置到status状态,返回退出进程的PID

        在调用wait()时父进程挂起,直到子进程退出

    3、父进程先于子进程退出,子进程被init接管(pid=1)

        服务器版的守护进程 init为1

        桌面版的守护进程为 初始终端的进程(pid不能确定)

    4、open函数(用于打开文件操作)

        int open(const char *pathname,int flags(标志位),mode_t mode(打开模式))

        flag(标志位)选项:

            O_CREAT 没有则创建文件

            O_WRONLY 写模式打开

            O_RDONLY 读模式打开

            O_RDWR 读写方式打开

        mode选项:

            S_IRWXU 可读可写可执行

            S_IRUSR 可读权限

            S_IWUSR 可写权限

    5、write函数(用于写入数据)

        ssize_write(int fd,const void *buf,int count)

        参数为:打开文件的描述符,指向数据的指针,要写入的字节数

        返回值:成果写入的字节数,错误则返回-1

        文件操作后要使用close关闭打开的文件:int close(int fd),成果返回0,错误返回-1

三、IO重定向

    最低可用文件描述符原则(Lowest Available fd):

    1、文件描述符是一个数组索引号,每一个进程都有一组打开的文件,打开的文件保存在一个数组中,文件描述符就是数组的索引号

    2、打开文件时,分配的描述符总是数组中最低可用的索引位置(索引数字最小的位置)

    3、Linux中使用标准输入(0),标准输出(1),标准错误输出(2)作为文件描述符,如果关闭描述符1,打开其他文件,这个文件就被分配了文件描述符1,标准输出就会写入到新打开的文件中

    4、编程实现:

        (1)close-open-close方式:先close(1),再open(filename,O_RDWR,S_IWUSR),close关闭打开的文件

        (2)open-close-dup-close:open打开文件,返回的文件描述符不是1,然后 close(1),现在最低可用描述符是1,dup(fd)会把新打开的描述符复制到1,然后 close(fd)关闭新打开的文件

        (3)open-dup2-close方式:dup2(oldfd, newfd),关闭newfd,把oldfd复制到 newfd,close关闭新打开的描述符


第十六章 系统服务

显示系统服务和运行状态  service --stauts-all

查看开机启动的程序 l /etc/init.d/ |less

查看启动级别  runlevel

0 关机

1 安全模式

2,3,4 多用户模式

5 图形化环境

6 重启


安装桌面环境 sudo apt install gnome

           sudo apt install gnome-core gnome-common gnome-desktop3-data

Linux桌面与终端相互独立,互不影响



期末复习

一、uname -a 查看系统信息

    Linux全称 GNU/Linux  使用GPL开源协议

二、目录的组织结构

    /bin  /sbin 系统命令存放  有些软件放在/usr/中的bin、sbin中

    echo $PATH 查看环境变量

    /home/xuan/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

    找不到环境变量解决方法:/usr/bin/vim .profile



    查看用户主目录:echo $HOME  或者 echo ~

    查看当前工作目录 $PWD  或 pwd

三、重要命令

    ls -l 显示详细信息

    ls -a显示所有文件(包括隐藏文件(.开头的文件))

    ls /usr -R 显示该路径下所有目录(包括内容)

    mkdir 创建文件夹

    cp a xy -R 将a复制到文件夹xy中

    rmdir 删除空目录 

    rm -rf 强制删除

    touch 新建文件

    chmod 改变权限  权限掩码 -rxwrxwrxw

    chown 改变所有者  改用户 sudo chown user: file

                    改用户组 sudo chown :group file

                    支持递归操作

    find / -iname *gcc* 查找所有 含有gcc的文件

    标准错误输出不会重定向

    不显示错误信息: find /-iname *gcc* 2> dev/null | wc -l 

四、

    用户信息 /etc/passwd

    find 

五、进程管理

    ps -e 显示所有进程

    查找特定进程 ps -e | grep 关键词

    kill PID 有些命令不能中断

    sudo kill -9 PID 强制中断进程

六、文件管理

    unmask 设置、显示权限掩码,规则:用0777按位减去umask,如果是文件还要去掉可执行权限(默认不具有可执行权限)

    --0表示八进制数字 

    ln -s ~tmp/tmp/b.sh bin/tmpb  (ln -s 目标文件(最好是绝对路径) 链接路径位置)

    ln b.sh hb.sh (创建硬链接,ln b.sh hb.sh)没有建立新文件(只是多了一条记录,实际是文件的硬链接数加1),相当于起了别名

七、shell编程基础

    1、变量使用_或字母开头,等号左右两侧不能有空格

    2、获取变量需要加$,如 echo $a

    3、

        if[ $a=$b ];then   注意:中括号前后加空格,判等用一个等号

            echo

        fi

------------------------

        if test -d "if.sh" ;then   注意:test不一定必须

            echo 'is not a dir'

        elif [ -f "if.sh" ];then

            cat if.sh

        fi

-------------------------

        if [ $# -gt 0 ];then

            $comm | grep "$1" | grep -v "$0" |grep -v "grep"

        else

            $comm | grep -v "$0"

        fi

-------------------------

        while 

            sleep -1

    4、getpid() 

        fork() 有几个fork就是几个的2次方 

    5、创建规定个数子进程

        close(1);   //最低可用文件描述符

        dup2(fd,1);


        fork 和 wait 组合逻辑

        父进程先于子进程退出,子进程被init接管(pid=1)

    6、open read






猜你喜欢

转载自blog.51cto.com/xuan97916/2136213
今日推荐