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

    复习Linux命令:
    1)等待:sleep 秒数     自动化脚本中作为步骤间隔时间
    2)任务管理:
     查看系统所有进程:ps -ef
     结束当前进程:ctrl+c
     挂起当前进程:ctrl+z
     查看后台任务:jobs
     前置:fg 任务号
    3)命令帮助手册:man  命令名    
                 回车-跳行  空格-翻页   q-退出
    4)查看目录下内容:ls
     查看目录下内容的详细属性:ls -l 
      类型、权限、属主、属组、大小、最后一次修改时间
      是否隐藏
     ls -al   ls -F   ls -R   ls -t   ls -ld 查看当前目录属性
    5)清屏:clear
    6)查看磁盘空间分布:fdisk -l    df -k    mount
    7)查看当前shell:  ps     查看进程
         ps -ef  查看所有进程
    8)shell切换:bash  csh  sh  ksh ...   启动子进程
         exit 退出子进程
    9)输出重定向: >   覆盖
                       >>  追加
         将前面命令的结果 输出 到某文件中
         本质:对文件的写操作  写出
    10)查看文件内容:cat  文件名 ...
         本质:对文件的读操作  读入内存
    11)查看系统环境变量值:echo $系统变量名
              echo ~     echo Hello
              echo $PATH     命令的搜索路径    
    12)新建目录:mkdir  目录路径名
    13)新建文件:touch  文件路径名
    14)拷贝文件:cp  源文件路径  新路径
    15)移动/重命名:mv  源文件路径  新路径
    16)删除文件:rm  文件名      存在交互  y   n
                     rm -f  文件名   关闭交互
    17)删除空目录:rmdir  目录名
    18)删除非空目录:rm -r  目录名    存在交互  y   n
                          rm -rf  目录名   关闭交互
                         
    注意:如果是root用户,在/目录下,千万不能:
           rm  *   删除所有内容
    建议:平时少用root登录,root拥有最高权限,为了防止误操作。
    
    用户  使用账户的人          允许很多人 同时使用系统
    账户  root  是账号,是数据  使用相同或不同账号登录系统
           用户名、密码
    
    一、用户和组的管理
    Linux/Unix是多用户系统:
      root是超级用户,拥有最高权限。其它用户及权限由root来管理。对比Windows系统:
     控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组
       -> 右击某用户 -> 属性 -> 隶属于(哪个组)
     用户和组是从属关系
    
    思路:系统区分不同用户、不同组也是为了管理不同权限
        管理员可以授予、回收、修改不同资源的不同权限
    
    1、添加用户:useradd  用户名   (只能由root操作)
    # id     为root
    # useradd  xiaohong 
    规律:不写组,会自动创建一个组,组名同于用户名xiaohong;
       创建用户后,会在/home目录下,自动生成一个目录,就是该用户的主目录,目录名也同于用户名 xiaohong
    # cd /home
    # ls -l
                         属主     属组
    drwx------    2 xiaohong xiaohong     4096 10月 19 11:00 xiaohong  目录名
    
    密码:password
    简写为:passwd
    
    2、设置密码:passwd  用户名
    # passwd  xiaohong    输入密码:123   123
    
    清密码:passwd -d 用户名
    # passwd  xiaohong    输入密码:123   123
    
    3、改变身份: su  用户名
                     su          不写用户名,默认就是root
    目的:获取某用户的权限进行管理
    注意:从root切换到普通用户不需要密码,但从普通用户切换到root或其他用户需要密码。
    练习:从root切换到xiaohong,从xiaohong切换到root
           再返回身份  exit       su也会启动一个子进程
     查看最初登录身份:who am i
     查看当前用户名:whoami
     查看当前用户详细身份:id   (用户id 用户名 组id 组名)
    
    二、案例:
    1、添加boys组: groupadd  组名
    # id    是root
    # groupadd  boys
    
    2、添加girls组:
    # groupadd  girls
    
    3、查看组信息: /etc/group  组管理配置文件
    # cat  /etc/group      重点查看组id和组名
      每一行就是一个组的记录,每一列就是不同的属性
    
    组名   组id(gid)
    root:x:0:root
    ...
    xiaohong:x:500:
    boys:x:501:
    girls:x:502:
    
    4、添加用户tom到boys组:useradd  -g  组名  用户名
    # useradd -g boys  tom
    # passwd  tom      密码:123
    
    5、同理,添加用户alice和rose到girls组:
    # useradd -g girls alice
    # useradd -g girls rose
    # passwd alice      密码:123
    # passwd rose      密码:123
    
    6、查看用户账户信息: /etc/passwd
    # cat /etc/passwd
    每一行就是一条账户的信息,具有多个属性:
    用户名:口令占位符:uid:gid:描述:用户主目录:登录shell
    root:x:0:0:root:/root:/bin/bash
    ...
    xiaohong:x:500:500::/home/xiaohong:/bin/bash
    tom:x:501:501::/home/tom:/bin/bash
    alice:x:502:502::/home/alice:/bin/bash
    rose:x:503:502::/home/rose:/bin/bash
    
    uid: 用户id
    gid: 组id
    
    补充:用户口令文件  /etc/shadow
    分别使用root和xiaohong身份查看
    $ cat /etc/shadow    权限不够
    # cat /etc/shadow   可以查看,但是密码都经过加密MD5
    
    7、用alice的身份,在其主目录下创建1.txt文件
    # id         是root
    # su alice   不用密码
    $ cd         回alice主目录  /home/alice
    $ pwd
    $ ls
    $ touch 1.txt   创建空文件
    $ ls -l
    -rw-r--r--    1 alice    girls     0  7月 12 10:39 1.txt
    
         (编辑纯文本:包括各种源程序、配置文件)
              .py   .java   .c   .json   .sql    .html
    
              : (shift ;)         i
        底行模式 <-- 命令模式 --> 输入模式
         wq回车                  <--Esc
              
    8、使用vi编辑器,编辑1.txt文本 (vi基本使用)
    1)vi  1.txt     启动vi 编辑1.txt   纯字符界面
                      默认处于:命令模式   可敲大量命令
    2)敲i键,切换到:输入模式   (左下角:插入 INSERT)
    3)输入 I am alice!
    4)敲Esc键,由输入模式 -> 命令模式
    5)敲 : 键(Shift ;)-> 底行模式(冒号模式)
    6)在冒号后输入:wq 回车  保存并退出(Write Quit) 写入磁盘 并 退出vi
    7)补充:如果保存时出现问题,可以不存盘强制退出
        Esc    冒号模式 shift ;     q! 回车
       或ctrl+c 结束vi进程
    
    9、尝试让tom进入alice主目录中,查看并修改1.txt文件。
    $ id   是xiaohong 
    $ su tom    密码123
    $ cd /home
    $ cd alice   权限不够
    $ ls -l
    
    drwx------ 2 alice    girls    4096  4月 27 10:50 alice
    drwx------ 2 rose     girls   4096  4月 27 10:23 rose
    drwx------ 2 tom     boys   4096  4月 27 10:22 tom
    
    三、文件/目录的权限:
    1、user   所有者(属主 owner 文件的创建人) u
    2、group  所有者所在的组  g
    比如:root用户 在 root组
           xiaohong用户 在 xiaohong组
           tom用户 在 boys组
           alice和rose 在girls组
    3、other  其他  o    既不是自己的,也不是同组的
    
    ls -l 开始的10个字符: d  rwx --- ---
    
        文件类型        文件/目录的权限
         -              ---     ---     ---
       - 文件         所有者  同组人  其他人
       d 目录
    
    4、三种访问权限:可读r   可写w   可执行x
                         Read    Write    eXcute
       700 
     rwx------   出现的位置固定 rwx 缺失使用-代替
     可读r     r--
     可写w    -w-
     可执行x  --x
    
     - rw- r-- r--   普通文件:权限    644
       自己:可读、可写   同组:只读   其他:只读
    
     d rwx r-x r-x   目录:权限     755
       自己:可读、可写、可执行
       同组:可读、可执行     其他:可读、可执行
    
     - rwx rwx rwx   可执行文件:  777
       对所有人:可读、可写、可执行
    
     - rwx rw- r--     764
    
    二进制之父:莱布尼茨    伏羲
    0
    1
    
    00
    01
    10
    11
    
    二进制 八进制数
    权
    421  权限的数字表达法:用1位八进制数表示一种身份的三种权限
    000    0    ---
    001    1    --x
    010    2    -w-
    011    3    -wx
    100    4    r--
    101    5    r-x
    110    6    rw-
    111    7    rwx
    
    
    128 64 32 16 8 4 2 1
    01100001
    
    97=64+32+1
    将十进制数97 -> 二进制数:01100001
                    -> 十六进制:0~9 A~F    61    让程序员更方便表示二进制
                                 0110 0001
                                   6   1
                    -> 八进制:0~7            141
                                01 100 001
                                 1   4   1
    
    128 64 32 16 8 4 2 1
    11101001
    
    233 = 128+64+32+8+1
    将十进制数233 -> 二进制数:11101001
                         十六进制:1110 1001      E9
                                       E     9
                         八进制:11 101 001        351
                                    3   5   1
    
    笔试题:Linux系统中某文件具有如下权限,对于用户自己拥有可读、可写、可执行,对于同组人可读、可执行,对于其他人可读,请写出该权限的八进制数形式____. 754
          7    5   4
      - rwx r-x r--
          u    g    o
    
    5、归纳文件和目录的各种权限的规律:
    1)文件的权限:
     r 可读:可以使用vi、cat等查看文件的内容   Disk I 输入   读取磁盘数据
     w 可写:可以修改后保存磁盘    Disk O 输出   将数据写入到磁盘中
     x 可执行:可以直接运行  命令就是可执行文件
    
    2)目录的权限:
     r 可读:通过ls  查看目录下的内容
     w 可写:可以改变目录下的内容,比如新建、删除资源
     x 可执行:可以cd进去
    
    为何tom无法进入alice的主目录?
    $ ls -ld
    drwx------  2 alice    girls       4096  4月 27 10:50 .
       700
    修改为:
    drwx-----x
       701
    
    6、修改文件/目录的权限:chmod  规则  文件/目录名
    规则:
      角色:u  自己人  user
             g   同组人 group
             o   其他人 other
             a   所有人 all
      操作:+  -      权限:r w x
      数字:644  755  ...
               u    g    o
    举例:  rw- r-- r--
    # chmod u+x 1.txt  针对自己增加可执行权限
    # chmod u-x 1.txt  针对自己去除可执行权限
    # chmod g+w 1.txt  针对同组人增加可写权限
    # chmod a+rx, g+w 1.txt  
               所有人都可读,可执行;同组的可写
    # chmod 777 1.txt    数字表达法
    # chmod 644 1.txt     
    前提:只有文件的拥有者、root用户可以修改权限
    
    案例:由root或alice修改alice主目录的权限,让tom能进入其中,并且查看目录下内容,查看1.txt的内容,修改1.txt内容。
    由alice修改:让tom能cd进入
    $ id   是alice
    $ cd   在主目录中
    $ ls -ld          权限 700  rwx --- ---
    $ chmod o+x  ~       701  rwx --- --x
    或 chmod 701 ~
    
    由alice修改:让tom能查看其主目录下内容
    $ chmod o+r  ~       705  rwx --- r-x
    或 chmod 705 ~
    
    $ ls -l
    -rw-r--r--  1 alice    girls     12  4月 27 10:50 1.txt
     644
     目前tom可读,但不可写
    -rw-r--rw-
     646 
    由alice修改:让tom可以改写1.txt
    $ chmod o+w 1.txt
     chmod 646 1.txt
    
    练习:让alice或root改变权限,让tom和rose都能进入alice主目录,查看目录下内容,查看1.txt内容,修改1.txt
    $ id        是alice
    $ cd       在主目录 /root/alice
    $ ls -ld   drwx---r-x   705
                drwxr-xr-x   755
    $ chmod 755 ~
     或 chmod a+rx ~
    $ ls -l    -rw-r--rw-    646
                -rw-rw-rw-   666
    $ chmod 666 1.txt
      或 chmod a+rw  1.txt
    
    说明:如果alice不小心将自己主目录权限改为666或644,会让自己缺少目录的x权限
     755  rwx r-x r-x
     644  rw- r-- r--    自己是无法进入自己主目录中   cd回车 会失败
    如何解决?
     使用root身份将alice主目录的权限改为755
     $ su       输入密码 
     # chmod  755  /home/alice
    
    准备一个可执行文件:f1  改为可执行,可直接运行
    由alice操作:
    $ id      是alice
    $ pwd   在/home/alice
    $ vi f1
    编辑:date
           sleep 10
           cal
    保存退出
    $ f1   命令找不到   和PATH有关   没有改命令所在路径
    $ /home/alice/f1
    $ ./f1         权限不够
    -rw-r--r--   644
    -rwxr--r--   744
    -rwxr-xr-x   755
    $ chmod u+x f1
    $ chmod a+x f1
    
    举例:写一个shell脚本,求出1~100的累加和   (笔试题)
    $ id   是alice
    $ vi   sum.sh
    
    #!/bin/bash
    sum=0
    i=1
    while (($i<=100))
    do
      sum=$(($sum+$i))
      i=$(($i+1))
    done
    echo "Sum=$sum"
    
    保存退出后
    $ chmod  a+x  *.sh    针对所有.sh文件,针对所有用户都可执行
    
    比如:tomcat的bin目录下,有大量.sh文件,
        包括启动服务器startup.sh   关闭服务器shutdown.sh
        希望将所有.sh文件都改为针对所有用户可执行
    
    四、查看文件内容的方式:cat  more  vi   head  tail
    1、cat   适合看小文件,不可翻页,不可编辑
          可以将多个文件合并成一个文件
    $ date > t1
    $ echo Hello > t2
    $ cal > t3
    $ cat t1 t2 t3 > newfile
    
    2、more 适合看大文件,可以翻页,不可编辑
    控制命令: 空格 -- 翻页
                 回车 -- 跳行
                  b  -- 向前一屏
                  f  -- 向后
                  h  -- 求助
                  q  -- 退出
                  /  -- 查找
                  n  -- 继续查找
    
    将/etc/passwd文件拷贝到alice的主目录下:
    $ id   是alice
    $ cp  /etc/passwd   ~
    
    $ cat passwd
    $ more passwd
    
              纯文本编辑器:编辑任何的源代码、脚本、配置文件
    3、vi  功能强大文本编辑器(Unix/Linux)  vim等都是对vi的加强版
    关注三种模式:如何切换
    
                    回车                 i a o O
        底行模式  ---->   命令模式   ---->  输入模式
                   <----   (初始模式) <----
                  :  /  ?                  Esc 
    
    常用的操作命令:
              O
          i  光标 a
              o          变为输入模式,光标停留位置不同
      向上  k
      向下  j
      向左  h
      向右  l    用小键盘方向键也可
      到行首  ^
      到行尾  $
      到第5行   5G
      屏首       H
      屏尾       L
      屏中央     M
      前翻页    ctrl + b    backward
      后翻页    ctrl + f    forward
    
      x     删除一个字符
      dw    删除当前词
      3dw   删除3个单词
      dd    删除当前行
      5dd   删除5行 (当前行开始)
      :5, 10d   冒号模式,删除5~10行
    
      r    替换一个字符
      cw   替换一个单词
      cc    替换一行
      C     替换从光标到行尾
    
      yw    拷贝词
      yy    拷贝行 (Y)   5yy    拷贝5行
      p      粘贴
      :1,2co3  拷贝行1,行2到行3之后
      :4,5m6   移动行4,行5到行6之后   剪切
    
      :w               存盘 write  (类似Windows中 ctrl + s)
      :w  新文件名    另存为新文件
      :wq              存盘退出 或  ZZ  (shift + z + z) 或:x
      :q!               强制退出不存盘
    
    其它命令:
      ~    大小写转换
      J    把当前行和下一行连起来
      u    撤销上一步  undo
      :set number   显示行号   :set nu
      :set nonumber 取消行号   :set nonu
      :21    光标跳到指定行
      21G   到21行      G表示文件为   1G第一行
      /字符串    从当前行往下查找
      ?字符串    从当前行往上查找
      n          继续向下查找
      N         反方向继续查找
      :r  file2   在光标所在位置插入另一个文件 (合并)
      :1,$s/旧串/新串/g     替换全文
       说明:s表示替换  g表示全部替换 global
      将所有: 换成@
      :1,$s/:/@/g
    
    练习:将文本中所有home都替换成 192.168.0.2
      :1,$s/home/192.168.0.2/g
    
    4、head 和 tail
    查看文件的头几行: head -3  文件名       头3行
    查看文件的后几行: tail -5  文件名     后5行
    技巧:使用tail -f 文件名   动态刷新实时监控文件
         用途:常用于查看系统的日志文件;
             日志文件经常被更新,追加新的内容,需要监控。
    $ tail -f  1.txt
    $ ctrl + c 结束监控进程
    
    面试题:需要跟踪、监控Linux某日志文件xxx.log
      tail -f xxx.log
    
    select  列名, 表达式, 函数, ...    列的投影
    from  表名, ...
    where 记录的匹配条件      行的选择  
    
    五、常用技巧
    1、过滤:grep   过滤出n行
    2、统计:wc     统计:行、单词、字符  的数量
    3、排序:sort
    4、管道: |     
    管道符:用于连接两个命令,前一个命令的输出,作为后一个命令的输入。(前一个命令的输出,作为后一个命令传入的参数)   
    例子1:将/etc/passwd的头10行,写入文件f2中
    $ head -10  /etc/passwd > f2
    
    例子2:将/etc/passwd的头10行排序后,写入文件f3中
    $ head -10  /etc/passwd | sort > f3
    
    例子3:将/etc/passwd排序后的头10行,写入文件f4中
    $ sort  /etc/passwd | head -10 > f4
    
    5、常见用法
    1)管道more:  分屏显示
    对比:ls -l  /etc
           ls -l  /etc | more          空格  回车  q
    
    2)管道grep:  过滤
    对比:ls -l /etc
           ls -l /etc | grep ssh     找到含有ssh的行
    drwxr-xr-x    2 root     root   4096  4月 25 11:20 ssh
    
    练习:查找出tom的账户信息
     cat /etc/passwd | grep tom
    tom:x:501:501::/home/tom:/bin/bash
    
    练习:找出girls组的所有用户的账户信息,按照用户名排序
    /etc/group   组        girls:x:502:
    /etc/passwd  用户
    
    先根据组名找到gid:
     cat /etc/group | grep girls
    
    再根据gid找到与之有关的用户信息:
     cat /etc/passwd | grep 502 | sort
    
    3)管道wc:统计
     cat f1 | wc
      3  行     4 单词      18 字符
    
    练习:统计出girls组有多少账户
      cat /etc/passwd | grep 502 | wc     行数就是账户数
    
    小结:|常用法
     |more  分页
     |grep  过滤
     |sort  排序
     |wc   统计
    
    六、进程管理
    1、查看当前所有进程   ps -ef
        以全格式显示当前系统所有进程
        每一行就是一个进程的信息
          -e   所有进程
          -f   全格式
    
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0    0  19:41   ?        00:00:03  init
    root         2     1    0  19:41   ?        00:00:00  [keventd]
    root         3     1    0  19:41   ?        00:00:00  [kapmd]
    
    Uid:   用户名   该进程由哪个用户发起的  (重要)
    Pid:   进程id    进程的唯一标识   (重要)
    PPid:  父进程id
    C:     cpu占有率
    Stime: 开始的时间   (重要)
    TTY:   开始该进程的终端号
    Time:  运行时间
    CMD:  启动该进程的命令名  (重要)
    
    uid       Stime      CMD                                                Pid
     __用户在__时刻使用__命令启动了一个进程,被系统分配进程号pid为__
    
    补充:top   查看系统资源使用情况,包括CPU、进程、内存Memory等
         特点:动态实时刷新   ctrl + c结束进程
    
    启动sleep进程:  sleep 3000
    其它窗口:ps -ef | grep sleep
    alice  3421  3212  0 17:49 pts/0  00:00:00 sleep 3000
    进程id: 3421
    
    2、根据pid杀进程:kill  进程id
    前提:只有进程的发起者、root才可杀进程
           和权限有关
    $ kill 3421   没有权限
    $ su     密码:123456
    # kill 3421
    
    说明:某些时候kill 进程id 无法直接关闭进程,可能是信号丢失引起;
          可以使用kill -9 进程id    -9选项   百分百杀进程
    
    3、根据进程命令名批量杀进程:pkill  命令名
    # pkill  sleep
    
    关机:halt        halt: must be superuser.
    重启:reboot     reboot: must be superuser.
    必须是root才有权限操作!
    
    作业:盘点重要的、常用的十类命令。
      最实用的命令 id  pwd  ls -l、 任务管理、进程管理、磁盘文件管理、网络管理、特殊技巧;
      建议分类记忆,后续需要时查阅相关文档、手册,进行适当的扩展。
  • 相关阅读:
    【myEcplise2015】导入喜欢的主题
    【SVN】删除SVN上的历史资源路径和SVN上的历史用户信息
    【Linux】linux命令大全
    【Linux】在虚拟机上安装CentOS7
    Spring MVC+Mybatis 多数据源配置
    Spring 加载类路径外的资源文件
    OkHttp使用详解
    在虚拟机搭建JStrom
    在Windows下搭建RocketMQ
    解决confluence的乱码问题
  • 原文地址:https://www.cnblogs.com/guog1/p/14155311.html
Copyright © 2011-2022 走看看