zoukankan      html  css  js  c++  java
  • linux 笔记达内02

    复习主要内容:
    1、安装Linux系统
     安装方式 VMware  
     硬件配置 CPU中央处理器 Memory内存 Disk磁盘 
           Network网络
     分区  超级用户root账号  选装软件vi等
    2、配置网络环境   让Linux系统 和 其它主机通信
            C                              S
      本机 SSH  客户端 <-网络->  Linux系统 服务器
           命令   远程登录
    3、常用的Linux命令  分类整理、记忆
    1)查看ip地址:ifconfig
    2)配置ip和网络:netconfig
    3)重启网络服务:service network restart
    4)查看网络是否可达:ping 对方IP
    5)结束控制台当前进程:ctrl+c
    6)关闭防火墙:iptables -F
    7)退出登录:exit
    8)查看日期:date
    9)查看日历:cal
     cal  本月日历    cal  2022   全年日历  
     cal 9 2022  某年某月
    10)查看用户身份  id     我是谁?
     最初登录用户身份:who am i
     当前用户详细身份:id
     当前用户名:whoami
    11)查看当前在线用户情况:who
    12)查看当前工作目录:pwd    我在哪里?
    13)查看目录下内容:ls         我有什么?文件/目录
    14)查看目录下内容详细属性:ls -l
    15)改变工作目录:cd  目录路径名   想去哪里?
     绝对路径、当前路径、相对路径
     特殊目录名: . 当前目录   .. 上一层目录
    
    一、软硬件的体系结构:
    1、硬件体系: IPO
         Input          Process 处理     Output
        输入设备 -----   主机  ----- 输出设备
    (键盘、鼠标等)                 (显示器、打印机等)
                       (CPU、内存)   硬盘 I/O设备
    
    2、软件体系:主流的B/S、C/S架构为例 三层架构
    面试题:如何搭建一个测试环境? 
             根据需求,具体问题具体分析
                             被测系统 SUT
              ___________________________________
       Client -网络- Application Server -网络- DB Server
      客户端           应用服务器               数据库服务器
    1)硬件
    PC、移动设备   服务器、工作站、       服务器、工作站、
                      小型机                   小型机
    2)操作系统(系统软件)
    PC:Windows/Linux/Mac   Linux/Unix       Linux/Unix
    移动:Android/IOS/WP 
    3)中间件(提供特殊的公共服务的软件)
        无        Web/应用服务器软件  DBMS数据库管理系统
                   Tomcat/Weblogic容器    Mysql/Oracle/DB2
    4)应用程序
    B/S: 浏览器      部署Web App        搭建数据库
    C/S: 各种App       企业级应用          维护表、数据等
                           web01.war包       执行sql脚本
    
    提示:多和开发方沟通,共同搭建整个测试环境;
           包括系统架构、需求方、产品经理、项目经理、测试经理、系统管理员SA、数据库管理员DBA等,搭建环境是整个团队的任务。
     
    软件 = 程序 + 文档
    程序 = 数据结构 + 算法
            列表 字典   遍历
       以什么方式存储数据  以什么方式使用数据
    程序:比如一个可执行的文件:calc.exe  计算器
    进程:Process 正在运行的程序
            pid  系统为新创建的进程分配唯一的编号 进程号
    
    二、Linux/Unix系统基本层次结构
    从外到内:
     应用程序(用户)<-> Linux操作系统 <-> 硬件
                       (Shell <-> Kernel 内核)
    1、shell (直译:外壳)  命令解释器(翻译、解释命令)
    介于用户和内核之间,提供与系统的命令交互;
    shell本身也是一个进程,具有启动的命令
    表现形式:终端、命令行窗口
    常见的shell: bash  csh  sh  ksh ... (都是命令 可执行文件)
    类似于Windows: cmd 命令行窗口
        C:windowssystem32cmd.exe  可执行文件
    查看当前是什么shell,使用查看进程的命令:ps
      不加选项 -ef 只能查看部分进程:
    进程id 伪终端号         启动该进程的命令名
      PID TTY          TIME CMD
     2487 pts/0    00:00:00 bash   当前默认shell进程
     2523 pts/0    00:00:00 ps
    可以切换shell: 
      csh
      sh
      bash
    
      PID TTY          TIME CMD
     3437 pts/0    00:00:00 bash
     3476 pts/0    00:00:00 csh
     3497 pts/0    00:00:00 sh
     3499 pts/0    00:00:00 bash
     3520 pts/0    00:00:00 ps
    
    不同shell,区别在于使用方式有差别,支持的命令基本一致
    shell的切换的本质就是在当前shell进程中启动子进程;
    exit可以结束当前进程,返回父进程;
    最后一次exit表示退出登录;
    刚登录成功后,系统会默认启动一个shell进程,当前是bash(Login shell 登录shell)
    bash是目前常用的shell,符合大众习惯。
    shell环境下可以写脚本:shell编程 -- shell脚本
        目的:对系统进行自动化管理、对测试进行辅助管理
        将一些命令联合编写为代码,有逻辑的运行。
        对命令的自动化的编程。
    
    2、Kernel 内核:和硬件交互,比较底层,将硬件管理起来,将硬件屏蔽掉。比如:swap space 交换区(虚拟内存)、文件系统File System等。
    Linux内核的五大功能:
    1)进程/处理器管理
    2)内存管理
    3)接口管理
    4)文件管理
    5)设备管理
    查看当前内核版本号:uname -r     2.4.20-8
          格式:主版本号.次版本号.修订次数
             2.4
             2.5
             2.6  偶数相对稳定    追求比较新,但一定要稳定的版本
    
    比如:JDK1.6   1.7   1.8
            产品 一般推荐使用滞后一个版本,相对稳定
    
    3、File System 文件系统:对Linux中的文件进行管理
    文件:包括文件、目录、外部设备等都被系统当做文件来管理。 
              1.txt    dir1     /dev/sda1
          install.log   /root    /dev/sda
     好处:一视同仁,便于管理
          文件具有大量属性:类型、权限、属主、属组、大小、最后一次修改时间
      文件的内容:保存的数据
      目录的内容:管理子文件、子目录的指向关系
                     (关系表)
    
    三、Linux的通用特性
    1、支持多用户
    2、支持多任务    多进程
    3、支持用户界面  命令行、图形界面
    4、硬件的支持
    5、网络连接
    6、可安装网络服务
    7、应用程序的支持
    
    四、Linux/Unix常用命令
    1、执行命令的原理:
     执行命令,就会执行一个可执行文件,会启动一个进程;
     比如:ps   pwd   ls   date  ...      在/bin目录下
            sleep 5    启动sleep进程,等待5秒   单位:秒
           自动化脚本中,经常需要在步骤之间模拟等待间隔;
    结束当前进程:ctrl + c    立刻交回终端
    # sleep 3000
    挂起当前进程:ctrl + z    也会交回终端
    查看后台任务:jobs
    [1]+  Stopped                 sleep 3000
    # sleep 5000
    # ctrl + z 
    # jobs        
    [1]-  Stopped                 sleep 3000
    [2]+  Stopped                 sleep 5000
    将后台任务前置继续运行:fg 任务号
    # fg 1
    # ctrl + c
    # fg 2
    # ctrl + c
    
    2、命令的帮助手册:man  命令名
     Linux/Unix中提供命令的帮助手册 manual
     提示:手册中都是英文、专业术语较多,涉及系统知识
          建议选择的查看,比如关心某选项,重点查看。
          daemon  精灵、精力充沛的人
            系统为精灵进程、守护进程,系统启动后默默一直提供基础服务。
    比如:查看ls命令的用法
    # man  ls
     控制方法: 空格 -- 翻页
                  回车 -- 跳行
                   q -- 退出 quit
    
     ls - list directory contents   显示目录内容
        -l     use a long listing format  使用长格式列表
               显示文件/目录的详细属性列表
     练习:查看man手册,找出如何查看所有进程  ps命令
        ps -ef   以全列表格式显示所有进程信息
        -e    select all processes
        -f    does full listing   全格式
    
    3、查看目录下内容:ls    查看目录下的内容
    1)ls -l  以长格式显示文件/目录的详细属性
          当前Linux中简写为ll,不推荐使用,ls -l 更通用
    文件类型 权限     属主    属组       文件大小 最后一次修改时间
    -rw-r--r--    1  root     root          989  3月 13 05:33 anaconda-ks.cfg
               硬链接数                                              文件/目录名
    
    文件类型:-  文件   d 目录
    权限:rw-r--r--
    属主:该文件属于哪个用户
    属组:该用户属于哪个组
    文件大小:单位 Byte
    
    面试题:查看当前f1文件的权限?
    命令名 选项 参数
    ls      -l      f1      针对当前目录下的f1文件查看详细属性,包括权限   
       
    2)ls -a      a就是all  所有的
         显示目录下所有内容,包括隐藏的文件和目录;
         规律:凡是以 . 开头命名的文件或目录,具有隐藏属性
             比如:.   ..   任何目录下都有的隐藏目录
                    .bash_profile     bash环境下的配置文件
    
    3)ls -al 或 -la   选项可以组合搭配使用(功能的叠加)
             既能查看所有内容,还能查看内容的详细属性
    
    4)ls -R   将目录层次展开,包括目录目录下文件
    5)ls -t   按照时间先后排序(最后一次修改时间)time
                经常关注最近修改过的文件,比如日志文件
    6)ls -lt   组合使用
    7)ls -F   查看文件类型
            普通文件     无后缀显示
            目录          /结尾
            可执行文件   *结尾
    分别到不同目录下,查看文件类型:
      cd  /root
      cd  /
      cd  /bin
    
    8)ls -ld   查看当前目录的属性          directory 目录
    查看/root目录属性,目前就在/root下
    之前做法:先回到上一层目录,再查看  ls -l
      cd  ..
      ls -l
    drwxr-x---    4 root     root        4096  3月 15 10:39  root  目录名
    
    目前做法:在当前目录中直接查看
      ls -ld
    drwxr-x---    4 root     root        4096  3月 15 10:39  .  代表当前目录
    
    面试题:如何查看当前目录的权限?
     ls -ld
    
    4、清屏:clear
     Windows: cls         Oracle的Sqlplus: clear screen
    
    C语言:70后
    
    Linux/Unix的发展和产品介绍:
    Unix:  1969
      厂商:     产品:
      IBM        AIX
      SUN        Solaris
      HP          UX
    
    Linux:   1991  1994    Linux之父:Linus   规范、标准
     (Linux is not Unix)   吉祥物:企鹅  李纳斯·托瓦兹
     内核程序开源的、免费的
     厂商:Red Hat 红帽   将服务捆绑销售
            Red Flag 红旗
            SUSE
            Ubuntu
            CentOS
    
    IOE架构:IBM服务器、AIX + Oracle DB + EMC磁盘阵列
                (主机)(Unix)中间件  数据库  数据存储
        优点:服务好、功能强大、全面   缺点:成本高
    BAT推崇“去IOE”:
      比如LAMP: 普通PC的集群作为服务器主机 + Linux
         + Apache 服务器软件 + Mysql DB + PHP 开发语言  或 Java或Python
        优点:成本低、开源(二次开发)、可定制、灵活
        缺点:技术成本高
    
    5、磁盘分区
    /dev/sda 硬盘分为三个区:
     分区设备名   挂载点    类型      大小
    /dev/sda1      /boot    ext3      100M
    /dev/sda2      无       swap       2G    系统内核管理
    /dev/sda3      /         ext3      6G
    
    分区设备名规律: /dev是设备目录,下面有设备文件
          device
      Linux系统将所有设备,比如硬盘分区当做文件来管理
    /dev/hda1
     1) hd -- IDE硬盘,性能一般
     2) a -- 第一块硬盘
     3) 1 -- 第1个分区
    /dev/sdb3
     1) sd -- SCSI硬盘,性能高
     2) b -- 第二块硬盘
     3) 3 -- 第3个分区
    
    笔试题:请分析以下名称的含义?
    /dev/sda1
    /dev/sda2
    /dev/sda3
    /dev/sdb1
    /dev/sdb2
    分析:Linux系统中设备目录下的设备文件
     表示2块SCSI风格的硬盘,第1块3个分区,第2块2个分区
       a  b    sd                    1 2 3             1  2
    
    6、查看磁盘空间情况:fdisk -l
    应用场合:当系统出现运行突然变慢等性能问题时,可以查看Linux服务器的磁盘空间,确定是否出现空间不足导致的性能瓶颈。比如:日志文件、数据库数据、文件上传不断占据磁盘空间。
    练习:查看磁盘空间的情况
    Disk /dev/sda: 8589 MB, 8589934592 bytes
    255 heads, 63 sectors/track, 1044 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
       Device Boot    Start       End    Blocks   Id  System
    /dev/sda1   *         1        13    104391   83  Linux
    /dev/sda2            14       268   2048287+  82  Linux swap
    /dev/sda3           269      1044   6233220   83  Linux
    
    Blocks:块    数据块 是为了系统更好分配存储范围
    Id:idle  空闲的磁盘空间   83%
    
    补充:df -k       -k表示 以KB为单位
    文件系统        1K-块        已用     可用 已用% 挂载点
    /dev/sda3     6135236   1064864   4758712  19% /
    /dev/sda1    101089      9425     86445  10% /boot
    none          515444         0    515444   0% /dev/shm
    
    补充:mount     挂载、查看挂载情况
           mount  设备名   挂载点
           mount  /dev/sda1   /boot
                将/dev/sda1第1个分区挂载到/boot目录下管理
                安装系统时自动配置好
    执行mount:查看挂载情况
    /dev/sda3 on / type ext3 (rw)
    none on /proc type proc (rw)
    usbdevfs on /proc/bus/usb type usbdevfs (rw)
    /dev/sda1 on /boot type ext3 (rw)
    none on /dev/pts type devpts (rw,gid=5,mode=620)
    none on /dev/shm type tmpfs (rw)
    
    文件包括:名称、属性、内容
      名称:路径名   绝对、相对
      属性:ls -l
      内容:文件中存储的信息
    
    7、查看文件的内容:cat  文件路径名  ...
        适合看小文件,因为不能翻页
    # cd /root          技巧:cd  /r     Tab 自动补全  /root
    # ls
    # cat  install.log          cat  ins     Tab   
    # date
    # cal
    # cal 12 2020
    平时命令执行的结果默认向 终端 输出。(标准输出)
    技巧:>  输出重定向  (Windows/Linux/Unix中通用)
         将命令输出的结果改变输出到文件中,而不是终端
    # date > 1.txt
      自动新建一个文件1.txt,将date的结果写入1.txt文件中
      便于保存执行结果
    # ls -l  1.txt   查看1.txt文件的属性
    -rw-r--r--    1 root     root           29  3月 17 20:24 1.txt
    # cat 1.txt     查看1.txt文件的内容
    二  3月 17 20:24:24 CST 2020
    规律:OS认为,文件有结束符 EOF  占1个Byte
                         End Of File
     文件底层存在文件指针,在读取文件数据时可以偏移位置;
     文件存在开始指针、结束符
    # cal > 1.txt   覆盖
    # cat 1.txt
    
      >   输出重定向,新的会覆盖旧的
      >>  输出追加重定向,向原有文件结尾追加内容
    # date >> 1.txt
    # cal 12 2020 >> 1.txt
    # cat 1.txt
    
    用途:在Windows/Linux系统中,我们可以将某些命令输出的结果写入到文件中保存,作为后续分析的依据,比如日志、测试结果等。
    
    8、目录路径的常见概念
    1)绝对路径:从/开始表示的具体的路径名
       /root        目录名
       /etc
       /root/1.txt      文件名
       /etc/passwd
    
    查看/etc/passwd文件 的详细属性
    # ls -l  /etc/passwd
    -rw-r--r--    1 root     root     1283  7月 10 19:42 /etc/passwd
    
    2)当前路径:当前所在目录的路径名  pwd可查看
       比如目前在 /root
    3)相对路径:相当于当前路径表示的新路径
       1.txt
       ../etc/passwd    ..回到/目录下,进入ect中找到passwd
    
    比如目前在/etc下 (当前路径),需要表示/root/1.txt
     1) 绝对路径:/root/1.txt
     2) 相对路径:../root/1.txt
    
    4)主目录:用户登录系统后,默认所在的目录
     Home Directory(家目录)
     普通用户在其主目录下拥有大量权限,出了此目录,将会处处受挫;
     在创建新用户时,会在/home目录下新建该用户的主目录,其目录名就是用户名;
     root用户的主目录很特殊,就是/root;
    查看用户账户文件:/etc/passwd
     每一行对应每个系统账户的记录信息
     每一列表示每个账户的属性
    # cat  /etc/passwd
    用户名:口令占位符:uid:gid:描述信息:主目录:登录shell
    root:x:0:0:root:/root:/bin/bash
    
    uid: 用户id  用户身份的唯一标识   root都是0
    gid: 组id
    登录shell: bash  用户刚登录后默认使用的是bash
    
    技巧:快速回到主目录
       cd 回车   或   cd ~  回车
    说明:~  代替用户的主目录  /root
    技巧:查看~的值   echo  名称
    # echo  ~       echo 本意:回声
    # ehco  Hello   原样返回
    # echo  $PATH       echo $系统环境变量名
                          查看系统环境变量PATH的值
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/usr/bin/jdk1.6/bin
    PATH的作用:命令的搜索路径
      我们可以将常用的命令所在的路径名添加到PATH的值中(Windows通过分号分隔,Linux/Unix通过冒号分隔),越靠前的越优先找到,就可以在命令行中使用相对路径简化对命令的表达,否则会提示命令找不到。
      比如 ls  在 /bin下    /bin/ls
    
    5)当前目录:  .          
          cd  .   意义不大,还在当前目录
          1.txt    相对路径
          ./1.txt  代替绝对路径  /root/1.txt
    
    6)上一层目录: ..       
          cd  ..   回上一层目录
          cd ../..   连退两层目录
    
    9、创建目录:mkdir  目录路径名
    # cd      回到root的主目录  /root
    # pwd
    # mkdir  test    创建一个test目录
    # ls -l
    drwxr-xr-x    2 root    root  4096  4月 26 15:44 test
    # cd test
    # ls         什么都没有
    # ls  -la    只有 . 和 ..
    
    练习:在test目录中继续创建其它目录层次
    # pwd   在/root/test下
    # mkdir  dir1/dir2
    mkdir: 无法创建目录‘dir1/dir2’: 没有那个文件或目录
    注意:Linux/Unix中,需要加-p选项,才能一气呵成
    # mkdir -p  dir1/dir2
    # ls -R    查看目录下层次
    # ls -aR    包括隐藏资源
    # cd dir1     ls -al
       cd dir2     ls -al
    # pwd     在/root/test/dir1/dir2下
    回到test下:
    # cd ../..
     或 cd ~/test     ~就是/root    /root/test
    # mkdir dir3 dir4 dir5     依次创建多个目录
    在主目录下新建一个game目录:
    # mkdir  ~/game
    # cd
    # ls
    结论:操作的关键在于--如何表达路径名
    
    技巧:通过startx 切换到图形界面
    # startx  
    在服务器中启动图形界面:
      桌面: root主目录
            右键 -> 新建终端   shell 执行命令
              放大:  ctrl shift +
              缩小:  ctrl  -
    返回字符界面:小红帽 -> 注销
    
    10、新建文件:touch  文件路径名
    说明:如果文件不存在,创建一个新的、空的文件;
         如果文件存在,只会修改文件的最后一次修改时间。
    # cd ~/test
    # date > 1.txt    通过重定向生成一个1.txt文件
    # ls -l 1.txt      查看文件属性
    # cat 1.txt       查看文件内容
    # touch 2.txt     创建一个空文件
    # ls -l  *.txt     查看所有.txt文件的属性
    # cat 2.txt
    # touch 1.txt
    # ls -l  *.txt     1.txt最后一次修改时间 更新了
    # cat 1.txt       文件内容不变
    
    11、Linux中命名规则、规范
    1)区分大小写    F1  f1
    2)不能使用特殊字符: /  *  %  "  $  #  空格 ...
    3)以.开头的,具有隐藏属性
    4)如果无特殊要求,后缀没有要求,后缀起到见名知意的作用:
       /etc/passwd 文件
    特殊要求的:
      .java  .c  .py  .cpp   .html   .css  .js   .php   .xml   .json
      .class  .pdf  .doc  .docx  .xls  .zip   .jar  ...
    没有特殊要求的:普通文本
      1.txt   f1   f1.abc
    建议:比如shell脚本,建议使用.sh结尾   见名知意
      Tomcat服务器 bin/startup.sh  启动服务器的命令、shell脚本
                           启动项
    
    12、拷贝文件:cp  源文件路径  新路径
      (copy)目的:备份   文件的内容一样的
    # cp 1.txt  11.txt    将1.txt备份为11.txt
    # ls -l 1*.txt          查看1开头 .txt结尾文件属性
    # cat  1.txt  11.txt    依次显示多个文件内容
    
    13、移动文件:mv  源文件路径  新路径
      (move)本质:改变文件的绝对路径名,就是重命名
    # mv  11.txt  22.txt    重命名
     源文件路径:/root/test/11.txt
     新路径:     /root/test/22.txt
    
    综合练习:在~/test下,新建d1和d2目录;
           d1目录下新建1.txt文件,文本内容Hello;
           对文件进行备份、重命名操作。
    1)在~/test下,新建d1和d2目录
    # cd ~/test
    # mkdir d1
    # mkdir d2    或  mkdir d1  d2
    
    2)d1目录下新建1.txt文件,文本内容Hello
    # cd d1
    # pwd     在/root/test/d1下
    # touch 1.txt
    # ls -l 1.txt
    # echo Hello >> 1.txt
    
    3)将d1下的1.txt备份为11.txt
    # cp 1.txt  11.txt
    
    4)将d1下的1.txt备份到d2下,也叫1.txt
    # cp  1.txt  ../d2/
    # cd  ../d2
    # pwd   在/root/test/d2下
    # ls -l
    # cat 1.txt
    
    5)将d1下的11.txt备份到d2中,还叫11.txt
    # cp  ../d1/11.txt   .
                      等同于:/root/test/d2/
    6)将d1下的1.txt备份到d2中,叫111.txt
    # cp  ../d1/1.txt   ./111.txt
                      等同于:/root/test/d2/111.txt
    
    关键:如何写好路径名
    
    7)将d1下的11.txt移动到d2中,叫22.txt    本质:重命名
    # mv  ../d1/11.txt   ./22.txt
      等价于/root/test/d1/11.txt    /root/test/d2/22.txt
    # ls  -l
    # cd ../d1
    # ls  -l
    
    14、删除文件和目录
    1)删除文件:rm  文件路径名
     (remove)  rm  -f  文件路径名      关闭交互
    # rm  22.txt    有交互  y 删除  n 不删除
    # rm  *.txt     删除所有.txt文件  多次交互
    # rm -f  *.txt   关闭交互,删除所有.txt文件
    
    2)删除空目录:rmdir  目录名
    # cd ~/test
    # rmdir d2   非空,不能删除
    # rmdir d1   为空,可以删除
    
    3)删除非空目录: rm  -r  目录名     存在交互
                          rm  -rf 目录名    关闭交互,删除非空目录
    # rm -r  d2    y  n
    # rm -rf d2
    
    面试题:Linux系统中如何强制删除一个文件、强制删除一个非空目录?
    思路:强制删除,就是关闭交互进行删除  -f
      删除文件:rm -f  文件名
      删除目录:rm -rf  目录名
    
    练习:将命令进行归类,说明含义、命令写法
  • 相关阅读:
    bzoj1230[Usaco2008 Nov]lites 开关灯
    反素数
    POJ2886Who Gets the Most Candies?(线段树之约瑟夫)
    POJ2828 Buy Tickets(线段树之插队问题)
    codeforces 985C Liebig's Barrels(贪心)
    hdu Minimum Inversion Number(逆序数的小知识与线段树)
    hdu2795 Billboard(线段树)
    线段树之各类模板
    静态邻接表模板
    坐标离散化
  • 原文地址:https://www.cnblogs.com/guog1/p/14155308.html
Copyright © 2011-2022 走看看