Liunx操作系统

1. 什么是操作系统

  大家正在玩的 Windows 和 Max OS 就是两个操作系统。操作系统是用户和计算机的接口,同时也是计算机硬件和应用程序的接口,也就是说我们和计算机打交道以及计算机底层硬件和应用程序打交道都是通过操作系统。

2.liunx 由来与简介

  1991 年 10 月,Linus Torvalds(Linux 之父)在赫尔辛基大学接触 UNIX,可是 UNIX 的商业版本非常昂贵,于是他从 MINIX 开始入手,但 MINIX 功能单调,于是决定自己编写软件。他第一次发行的版本,尽管 Linux 并没有多少用处,但由于一些黑客的加入使它很快就具有了许多吸引人的特性。每当出现新问题时,有人会立刻找到解决办法,很快 Linux 成为了一个操作系统。


 

  Linux 的发行版本,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。商业版本以 Redhat 为代表,开源社区版本则以 debian 为代表。下面是三个典型的发行版:

  CentOS 是从 redhat 源代码编译重新发布版。CentOS 去除很多与服务器功能无关的应用,系统简单但非常稳定,命令行操作可以方便管理系统和应用,并且有帮助文档和社区的支持。(实用新手)

  Ubuntu 有亮丽的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,并且 Ubuntu 对计算机硬件的支持好于 CentOS 和 Debian,兼容性强,Ubuntu 应用非常多。(有图形化界面,内存开销大)

  Debian 也非常适合做服务器操作系统,底层非常稳定,内核和内存的占用都非常小。(资源占用小稳定)


  Linux 的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。

  系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等。对于操作系统内核而言,都被视为拥有各自特性或类型的文件。

3.Liunx 指令

  1. 目录处理指令(ls    -> 指令所在路径 /bin/ls)

  2. 创建目录指令(mkdir   -> 指令所在路径 /bin/mkdir)  -p 递归创建

  3. 切换目录指令(cd   -> 指令所在路径shell 内置命令

  4. 显示当前目录(pwd   -> 指令所在路径 /bin/pwd)

  5. 删除空目录 (rmdir    -> 指令所在路径 /bin/rmdir)

  6. 复制文件 / 目录(cp  -> 指令所在路径 /bin/cp)  -r : 复制目录   -p : 保留文件属性

  7. 剪切文件 / 目录(mv  -> 指令所在路径 /bin/mv)  

  8. 删除文件 / 目录(rm  -> 指令所在路径 /bin/rm)  -r : 删除目录  -f : 强制执行

  9. 创建文件   (touch   -> 指令所在路径 /bin/touch)  

  10. 显示文件内容(cat   -> 指令所在路径 /bin/cat)  -n : 显示文件行号

    反向显示文件内容(tac-> 指令所在路径 /bin/tac )

    分页显示文件内容(more-> 指令所在路径 /bin/more)  空格 /f :翻页     Enter:换行   q / Q:退出

    分页显示文件内容(less-> 指令所在路径 /bin/less)   空格 /f/PgDn: 向后翻页    PgUp:向前翻页 ⬆:行往前显示  q / Q: 退出  /(搜索的字符)+enter:搜索

   显示指定行号文件内容(head-> 指令所在路径 /bin/head)-n:指定显示的行数(不加 -n 默认显示前 10 行数据)


 

  11. 创建链接文件  (ln -> 指令所在路径 /bin/link)   -s : 创建软链接 (不加 -s   创建硬链接)

  12. 更改文件 / 目录权限(chmod -> 指令所在路径 /bin/chmod)-R: 递归修改

       更改文件 / 目录权限的所有者(chown-> 指令所在路径 /bin/chown)

    更改文件 / 目录所属组(chgrp-> 指令所在路径 /bin/chown)

    显示文件 / 目录缺省权限(umask-> 指令所在路径shell 内置命令) -S:以 rwx 形式显示文件的缺省权限(否则已数字显示)  


  13. 根据 文件 / 目录 名搜索  (find -> 指令所在路径 /bin/find)  -name(区分大小写)  -iname(不去分大小写)   

   find【搜索范围】【匹配条件】

   根据 文件大小 搜索    -size

     根据 所有者和所属组 搜索    -group:(所属组)  -user:(所有者)

     根据 时间属性 搜索    -amin: 访问时间  -cmin: 文件属性被更改  -mmin:文件内容被更改

     根据 文件类型和 i 节点 搜索 -type 根据文件类型查找:f 表示文件,d 表示目录,l 表示软链接  -inum 根据 i 节点查找

  14. 在文件资料库中查找文件 (locate -> 指令所在路径 /usr/bin/locate)  -i  不区分大小写  locate【文件名】

  updatedb  手动更新资料库,但是对于 /tmp 目录下的文件,是更新不到文件资料库的,因为 /tmp 目录不属于文件资料库的收录范围

  15. 搜索命令所在的目录及别名信息(which-> 指令所在路径 /usr/bin/which)            which 【指定指令】

    搜索命令所在目录及帮助文档路径(whereis-> 指令所在路径 /usr/bin/whereis)        whereis 【指定指令】

  16. 在文件中搜索匹配行并输出(grep -> 命令所在路径:/bin/grep)  -i 不区分大小写  -v 排除指定字符串  

    grep -iv 【指定字符串】【文件】


  17. 获得命令或配置文件帮助信息(man-> 命令所在路径:/usr/bin/man)            man【命令或配置文件】

  可以 man 5 passwd, 因为 5 表示配置文件信息,1 表示命令帮助信息。

      获得 shell 内置命令的帮助信息(help-> 命令所在路径:shell 内置命令)             help【shell 内置命令】

   获得命令的中文帮助信息(--help)                               命令 --help


  18. 添加新用户  (useradd-> 命令所在路径:/usr/sbin/useradd)                useradd【用户名】

   设置密码    (password-> 命令所在路径:/usr/bin/passwd)              passwd【用户名】

   查看用户的简单信息(who-> 命令所在路径:/usr/bin/who)                  who

   查看登录用户详细信息(w-> 命令所在路径:/usr/bin/w)                    w


  19. 压缩文件为.gz(gzip-> 命令所在路径:/bin/gzip)                         gzip【需要压缩的文件】

   解压.gz    (gunzip-> 命令所在路径:/bin/gunzip)                       gunzip【压缩文件名】

   压缩文件 / 目录为.tar.gz(tar-> 命令所在路径:/bin/tar)                        tar 【-zvcf】【压缩后文件名】【目录】

    -c 打包   -v 显示详细信息   -f  指定文件名  -z 打包同时压缩 / 解压缩  -x 解包

   解压.tar.gz  (tar-> 命令所在路径:/bin/tar)               tar 【-zvxf】【压缩文件名】【解压后目录】

   压缩文件 / 目录为.zip(zip-> 命令所在路径:/usr/bin/zip)           zip 【-r】【压缩后文件名】【文件或目录】

   解压.zip   (unzip-> 命令所在路径:/usr/bin/unzip)           uzip【压缩文件名】

   压缩文件为.bz2(bzip1-> 命令所在路径:/usr/bin/bzip2)              bzip2 【-k】(保留原文件) 【文件】

   解压.bz2   (bunzip2-> 命令所在路径:/usr/bin/bunzip2)         bunzip2 【-k】 【压缩文件】


  20. 给指定用户发送信息(write-> 命令所在路径:/usr/bin/write) 以 Ctrl+D 保存结束     write【用户名】

   给所有用户发送广播消息(wall-> 命令所在路径:/usr/bin/wall)                wall【信息内容】

   测试网络连通性  (ping-> 命令所在路径:/bin/ping)  -c  n 是指定发送次数 (不指定,一直发送)

                                             ping 【-c n】【IP 地址】

   查看和设置网卡信息(ifconfig 命令所在路径:/sbin/ifconfig)                 ifconfig 【网卡名称】【IP 地址】

      查看发送电子邮件  (mail-> 命令所在路径:/bin/mail)                mail【用户名】

     列出所有登录系统的用户信息(last-> 命令所在路径:/usr/bin/last)           last

   显示数据包到主机之间的路径(traceroute 命令所在路径:/usr/bin/traceroute)      traceroute 【IP 地址】

   显示网络相关信息  (netstat-> 命令所在路径:/bin/netstat)              netstat【选项】

   -t:TCP 协议  -u:UDP 协议   -l: 监听  -r: 路由  -n: 显示 IP 地址和端口号

   配置网络      (setup-> 命令所在路径:/usr/bin/setup)             setup

   关机 / 重启     (shutdown-> 命令所在路径:/sbin/shutdown) -c:取消前一个关机命令  -h:关机  -r:重启 

    shutdown 【选项】 【时间】

   其他关机命令  halt  poweroff  init0

   其他重启命令  reboot  init6

   退出登录命令  logout

4. vim 文本编辑器

  1. 插入命令

    a:光标所在字符后插入  A:光标所在行后插入  i:光标所在字符前插入  I:光标所在行前插入  o:光标所在行下行插入  O:光标所在行上行插入

  2. 定位命令

    :set nu:设置行号     :set nonu:取消行号    gg:到第一行      G:到最后一行     nG:到第 n 行        :n:到第 n 行

    $:移至行尾        0:移至行首  

  3. 删除命令

    x:删除光标所在的字符  nx:删除光标所在字符出后 n 个字符        dd:删除光标所在行   dG:删除光标所在行到末尾

    D:删除光标所在行到行尾   :n1,n2d:删除指定范围的行

  4. 复制和剪切命令

    yy:复制当前行      nyy:复制当前行下 n 行  dd:剪切当前行      ndd:剪切当前行下 n 行  p、P:粘贴在光标所在行下或行上

  5. 替换和取消命令

    r:取代光标所在处字符  R:从光标所在出取代字符,知道 ESC 结束     u:取下上一步操作

  6. 搜索和搜索替换命令

    /string:搜索指定字符串(:set ic:搜索忽略大小写)  n:搜索字符串下一个出现位置          :%s/old/new/g:全文替换指定字符串

    :n1,n2s/old/new/g:在一定范围内替换指定字符串

  7. 保存和退出

    :w:保存修改      :w new_filename:另存为            :wq:保存并退出    ZZ:保存并退出

    :q!:不保存但退出    :wq!:保存并退出(root/ 文件所有者)

5. 软件包管理 rpm

  rpm 包安装:  -i:安装  -v:娴显示详细信息  -h:显示进度  --nodeps:不检查依赖性  rpm  -ivh  包全名

  rpm 包升级:  -U:升级                                  rpm  -Uvh  包全名

  rpm 包卸载:  -e:卸载                                   rpm  -e      包名

  rpm 包查询:  -q:查询  -a:所有                              rpm  -q   包名

  rpm 包详细信息:-i:查询软件信息         -p:查询未安装包信息            rpm  -qi   包名

  rpm 包安装位置:-l:列表                                   rpm  -ql   包名

  系统文件属于那个 rpm 包:  -f:查询系统文件属于那个软件包                  rpm  -qf   系统文件名

  rpm 包依赖性: -R:检查软件包的依赖性                           rpm  -qR   包名

  rpm 软件安装目录

    /etc/:配置文件安装目录

    /usr/bin/:可执行命令安装目录

    /usr/lib/:程序所需函数库安装位置

    /usr/share/doc/:软件基本使用手册保存位置

    /usr/share/man/:帮助文件保存位置

      /etc/rc.d/init.d/: 所有 rpm 包安装的服务执行文件存放目录(可以通过 service  软件名 start 启动管理)

  源码包安装位置

    /usr/local/ 软件名 /

    源码包安装:

      准备编译工具:yum install -y gcc

      下载源码包:wget  http://nginx.org/download/nginx-1.11.2.tar.gz

      解压源码包:tar -zvxf  nginx-1.11.2.tar.gz      (INSTALL:安装说明  README:使用说明)

      定义好的功能选项和检测系统环境的信息都写入 Makefile 文件:./configure --prefix=/usr/local/nginx

      编译,生成 Makefile 文件:make

      安装:make install

      启动:/usr/local/nginx/nginx start

      卸载:rm -rf /usr/local/nginx/

    制作脚本安装源码包

      在同目录下创建文件:touch setup.sh

      修改内容:vim setup.sh  -->  ./configure --prefix=/usr/local/nginx

                      make

                      make install

                      /usr/local/nginx/nginx start

      将文件改为可执行文件:chmod 777 setup.sh

      执行脚本:./setup.sh

6.yum 在线管理

  查看可用包列表:yum list

  查询相关关键字软件包:yum search 关键词

  安装软件包:yum -y install 包名       -y   表示自动回答 yes

  软件包升级:yum -y update 包名      

  卸载软件包:yum -y remove 包名    

 

  列出可用软件包组:yum grouplist

  安装指定软件包组:yum groupinstall 包组名

  卸载指定软件包组:yun groupremove 包组名

6.ACL 权限

  在 Linux 系统中,我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。

   1. 查看当前系统有那些分区:  df -h

  2. 查看指定分区详细信息:   dumpe2fs -h 【分区文件系统】

  3. 临时开启分区 ACL 权限:   mount -o remount,acl 【文件系统挂载点】

     永久开启分区 ACL 权限:   修改配置文件 /etc/fstab   -->    UUID=490ed737-f8cf-46a6-ac4b-b7735b79fc63 / ext4 defaults,acl

                 (注释:需要在 defaults 后面加,acl)

                  重新加载加载系统文件:mount -o remount /

 

--------------------------------------------------------------------------------------------------------------- 未完 ---------------------------------------------------------------------------------------------------------------------------