linux操作系统

磁盘分区

  1. MBR分区
    存放开机记录和分区表,分区表64bytes最多存储4个分区,这4个分区为主分区和扩展分区。逻辑分区从5开始
  2. GPT分区
    GPT 没有扩展分区概念

系统文件

  1. ls 查看信息
    drwxr-xr-x 3 root root 17 May 6 00:14 .config,对这个信息的解释如下:

    drwxr-xr-x:文件类型以及权限,第 1 位为文件类型字段,后 9 位为文件权限字段
    3:链接数
    root:文件拥有者
    root:所属群组
    17:文件大小
    May 6 00:14:文件最后被修改的时间
    .config:文件名
    常见的文件类型及其含义有:

    d:目录
    -:文件
    l:链接文件
    9 位的文件权限字段中,每 3 个为一组,共 3 组,每一组分别代表对文件拥有者、所属群组以及其它人的文件权限。一组权限中的 3 位分别为 r、w、x 权限,表示可读、可写、可执行。

    文件时间有以下三种:

    modification time (mtime):文件的内容更新就会更新;
    status time (ctime):文件的状态(权限、属性)更新就会更新;
    access time (atime):读取文件时就会更新。

  2. cd
    更换当前目录。

    cd [相对路径或绝对路径]

  3. mkdir
    创建目录。
    mkdir [-mp] 目录名称
    -m :配置目录权限
    -p :递归创建目录

  4. rmdir
    删除目录,目录必须为空。

    rmdir [-p] 目录名称
    -p :递归删除目录

  5. touch
    更新文件时间或者建立新文件。

    touch [-acdmt] filename
    -a : 更新 atime
    -c : 更新 ctime,若该文件不存在则不建立新文件
    -m : 更新 mtime
    -d : 后面可以接更新日期而不使用当前日期,也可以使用 –date=”日期或时间”
    -t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm]

  6. cp
    复制文件。如果源文件有两个以上,则目的文件一定要是目录才行。

    cp [-adfilprsu] source destination
    -a :相当于 -dr –preserve=all
    -d :若来源文件为链接文件,则复制链接文件属性而非文件本身
    -i :若目标文件已经存在时,在覆盖前会先询问
    -p :连同文件的属性一起复制过去
    -r :递归复制
    -u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制
    –preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了

  7. rm
    删除文件。

    rm [-fir] 文件或目录
    -r :递归删除

  8. mv
    移动文件。

    mv [-fiu] source destination
    mv [options] source1 source2 source3 …. directory
    -f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖

  9. chmod
    可以将一组权限用数字来表示,此时一组权限的 3 个位当做二进制数字的位,从左到右每个位的权值为 4、2、1,即每个权限对应的数字权值为 r : 4、w : 2、x : 1。

    chmod [-R] xyz dirname/filename
    示例:将 .bashrc 文件的权限修改为 -rwxr-xr–。

    chmod 754 .bashrc
    也可以使用符号来设定权限。

    chmod [ugoa] [+-=] [rwx] dirname/filename

    • u:拥有者
    • g:所属群组
    • o:其他人
    • a:所有人
    • +:添加权限
    • -:移除权限
    • =:设定权限
      示例:为 .bashrc 文件的所有用户添加写权限。

    chmod a+w .bashrc

  10. 硬连接与软连接
    10.1 实体链接
    在目录下创建一个条目,记录着文件名与 inode 编号,这个 inode 就是源文件的 inode。

    删除任意一个条目,文件还是存在,只要引用数量不为 0。

    有以下限制:不能跨越文件系统、不能对目录进行链接。

    $ ln /etc/crontab .
    $ ll -i /etc/crontab crontab
    34474855 -rw-r–r–. 2 root root 451 Jun 10 2014 crontab
    34474855 -rw-r–r–. 2 root root 451 Jun 10 2014 /etc/crontab
    10.2 符号链接
    符号链接文件保存着源文件所在的绝对路径,在读取时会定位到源文件上,可以理解为 Windows 的快捷方式。

    当源文件被删除了,链接文件就打不开了。

    因为记录的是路径,所以可以为目录建立符号链接。

    $ ll -i /etc/crontab /root/crontab2
    34474855 -rw-r–r–. 2 root root 451 Jun 10 2014 /etc/crontab
    53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 -> /etc/crontab

  11. 获取文件内容

    1. cat
      取得文件内容。

    $ cat [-AbEnTv] filename
    -n :打印出行号,连同空白行也会有行号,-b 不会
    2. tac
    是 cat 的反向操作,从最后一行开始打印。

    1. more
      和 cat 不同的是它可以一页一页查看文件内容,比较适合大文件的查看。

    2. less
      和 more 类似,但是多了一个向前翻页的功能。

    3. head
      取得文件前几行。

    $ head [-n number] filename
    -n :后面接数字,代表显示几行的意思

    1. tail
      是 head 的反向操作,只是取得是后几行。

    2. od
      以字符或者十六进制的形式显示二进制文件。

  12. 指令与文件搜索

    1. which
      指令搜索。

    $ which [-a] command
    -a :将所有指令列出,而不是只列第一个
    2. whereis
    文件搜索。速度比较快,因为它只搜索几个特定的目录。

    $ whereis [-bmsu] dirname/filename
    3. locate
    文件搜索。可以用关键字或者正则表达式进行搜索。

    locate 使用 /var/lib/mlocate/ 这个数据库来进行搜索,它存储在内存中,并且每天更新一次,所以无法用 locate 搜索新建的文件。可以使用 updatedb 来立即更新数据库。

    $ locate [-ir] keyword
    -r:正则表达式
    4. find
    文件搜索。可以使用文件的属性和权限进行搜索。

    find [basedir] [option]
    example: find . -name “shadow*”

  13. 压缩与打包
    压缩文件名
    Linux 底下有很多压缩文件名,常见的如下:

    扩展名 压缩程序
    *.Z compress
    *.zip zip
    *.gz gzip
    *.bz2 bzip2
    *.xz xz
    *.tar tar 程序打包的数据,没有经过压缩
    *.tar.gz tar 程序打包的文件,经过 gzip 的压缩
    *.tar.bz2 tar 程序打包的文件,经过 bzip2 的压缩
    *.tar.xz tar 程序打包的文件,经过 xz 的压缩
    压缩指令

    1. gzip
      gzip 是 Linux 使用最广的压缩指令,可以解开 compress、zip 与 gzip 所压缩的文件。

      经过 gzip 压缩过,源文件就不存在了。

      有 9 个不同的压缩等级可以使用。

      可以使用 zcat、zmore、zless 来读取压缩文件的内容。

      $ gzip [-cdtv#] filename
      -c :将压缩的数据输出到屏幕上
      -d :解压缩
      -t :检验压缩文件是否出错
      -v :显示压缩比等信息
      -# : # 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6

    2. bzip2
      提供比 gzip 更高的压缩比。

      查看命令:bzcat、bzmore、bzless、bzgrep。

      $ bzip2 [-cdkzv#] filename
      -k :保留源文件

    3. xz
      提供比 bzip2 更佳的压缩比。

      可以看到,gzip、bzip2、xz 的压缩比不断优化。不过要注意的是,压缩比越高,压缩的时间也越长。

      查看命令:xzcat、xzmore、xzless、xzgrep。

      $ xz [-dtlkc#] filename

    4. tar打包
      压缩指令只能对一个文件进行压缩,而打包能够将多个文件打包成一个大文件。tar 不仅可以用于打包,也可以使用 gzip、bzip2、xz 将打包文件进行压缩。

      $ tar [-z|-j|-J] [cv] [-f 新建的 tar 文件] filename… ==打包压缩
      $ tar [-z|-j|-J] [tv] [-f 已有的 tar 文件] ==查看
      $ tar [-z|-j|-J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩
      -z :使用 zip;
      -j :使用 bzip2;
      -J :使用 xz;
      -c :新建打包文件;
      -t :查看打包文件里面有哪些文件;
      -x :解打包或解压缩的功能;
      -v :在压缩/解压缩的过程中,显示正在处理的文件名;
      -f : filename:要处理的文件;
      -C 目录 : 在特定目录解压缩。
      使用方式 命令
      打包压缩 tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
      查 看 tar -jtv -f filename.tar.bz2
      解压缩 tar -jxv -f filename.tar.bz2 -C 要解压缩的目录

  14. Bash
    可以通过 Shell 请求内核提供服务,Bash 正是 Shell 的一种。

    特性
    命令历史:记录使用过的命令
    命令与文件补全:快捷键:tab
    命名别名:例如 lm 是 ls -al 的别名
    shell scripts
    通配符:例如 ls -l /usr/bin/X* 列出 /usr/bin 下面所有以 X 开头的文件
    变量操作
    对一个变量赋值直接使用 =。
    对变量取用需要在变量前加上 $ ,也可以用 ${} 的形式;

    数据流重定向
    重定向指的是使用文件代替标准输入、标准输出和标准错误输出。

    1 代码 运算符
    标准输入 (stdin) 0 < 或 <<
    标准输出 (stdout) 1 > 或 >>
    标准错误输出 (stderr) 2 2> 或 2>>
    其中,有一个箭头的表示以覆盖的方式重定向,而有两个箭头的表示以追加的方式重定向。

    可以将不需要的标准输出以及标准错误输出重定向到 /dev/null,相当于扔进垃圾箱。

    如果需要将标准输出以及标准错误输出同时重定向到一个文件,需要将某个输出转换为另一个输出,例如 2>&1 表示将标准错误输出转换为标准输出。

    $ find /home -name .bashrc > list 2>&

  15. 管道指令 (cat file | grep “regex” | wc -l)
    管道是将一个命令的标准输出作为另一个命令的标准输入,在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用管道。

    选取命令:cut.grep
    cut -d ‘分隔字符’ -f field // 用于分隔字符
    cut -c 字符范围
    [参数说明]
    -d : 后面接分隔字符,通常与 -f 一起使用
    -f : 根据-d 将信息分隔成数段,-f 后接数字 表示取出第几段
    -c : 以字符为单位取出固定字符区间的信息


    栗子1:
    打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和家目录
    [root@izuf6i29flb2df231kt91hz /]# cat etc/passwd | cut -d ‘:’ -f 1,6
    root:/root
    bin:/bin
    daemon:/sbin
    adm:/var/adm
    lp:/var/spool/lpd

    栗子2:
    打印/etc/passwd文件中每一行的前10个字符:
    [root@izuf6i29flb2df231kt91hz /]# cat /etc/passwd | cut -c 1-10
    root:x:0:0
    bin:x:1:1:
    daemon:x:2
    adm:x:3:4:
    lp:x:4:7:l
    排序命令:sort,wc,uniq
    sort [-fbMnrtuk] [file or stdin]
    [参数]
    -f :忽略大小写的差异,例如A 与a 视为编码相同
    -b :忽略最前面的空格部分
    -M :以月份的名字来排序,例如JAN, DEC 等等的排序方法
    -n :使用『纯数字』进行排序默认是以文字型态来排序的)
    -r :反向排序
    -u :就是uniq ,相同的资料中,仅出现一行代表
    -t :分隔符号,预设是用[tab] 键来分隔
    -k :以那个区间(field) 来进行排序的意思

    uniq
    uniq [-ic]
    [参数]
    -i :忽略大小写的不同
    -c :进行计数

    wc
    wc [-lwm]
    [参数]
    -l :仅列出行
    -w :仅列出多少字(英文单字)
    -m :多少字符
    字符转换命令:tr,col,join,paste,expand
    切割命令:split

  16. 进程管理 (ps -aux | grep tomcat 指定进程)(netstat -apn | grep 4000)(lsof -i tcp:4000)
    查看进程

    1. ps
      查看某个时间点的进程信息。

    示例一:查看自己的进程

    $ ps -l
    示例二:查看系统所有进程

    $ ps aux
    示例三:查看特定的进程

    $ ps aux | grep threadx
    2. pstree
    查看进程树。

    示例:查看所有进程树

    $ pstree -A
    3. top
    实时显示进程信息。

    示例:两秒钟刷新一次

    $ top -d 2
    4. netstat
    查看占用端口的进程

    示例:查看特定端口的进程
    $ netstat -anp | grep port

ts -->