第十一天(双更)

                按照惯例,来张图片,其实这图片和我们要写的完全没有关系,仅仅是个装饰品,放上去纯粹是以为以前也放了,强迫症。

 

                                     今天是老刘的周年庆没课,所以没事干就总结一下过去的基础(感觉好严肃,实际上纯粹是闲的单疼)

                                              以我的风格这么正常的讲话肯定不行啊~太没格调了~(话说格调一词来的就没有格调感)

所以,你看连这格式都那么随便飘逸,东写一下西写一下,完全不管界面的感受,连断句标点符号都只使用 “,”。

 

                                                    好,废话不多说开始行动...................................。

                                                         

                        哈哈,你觉得马上要开始了?怎么可能,连奥观海同志都知道先酝酿一下气氛(话说这得底下有人才行,我这是给谁看???)

 

                              以下是他的原话:

                                                       好吧,让我用更严肃的内容来给今晚收尾。 我想感谢华盛顿媒体团,我要感谢卡罗尔所做的一切。

                                   大家都知道,新闻自由是我们民主的核心,并且.............................

 

                                                                           奈~~么有啦,我是逗你们玩的,你们知道我肯定要提川普的!!

                                      拜托~~ 怎么可能就这样结束???拜托!! !

                                                                                虽然他今晚的缺席让我有些受伤(好萌^-^)

                                                                               我们上次玩的那么开心

                                   而且这事令人惊讶,你有一屋子的记者,明星,摄像机,他竟然会拒绝??是不是他觉得这晚宴太低档了??

                                    他不来的话能去干什么呢???

                                                                             他会不会正在家吃着川普牛排??然后在推特上喷默克尔呢?他究竟在干嘛??

          共和党建制派不敢相信川普使他们最有希望的党内提名,难以置信 令人震惊。

                                                               他们说川普缺少当总统的外交经验,不过老实说,这些年来他一直同各国领导人有接触..............

                                                                    

                                                                       比如瑞典小姐啊

                                                                       阿根廷小姐啊

                                                                       阿塞拜疆小姐啊
                                                                   (举办世界小姐大赛,比海天盛宴还要牛)

 

 

                        ok,好,不写了,怕过不了毕竟敏感词有点多哈~~。

                                                    总之你看,观海同志都那么跳,我...............

                                                                                                     我就是普通人,还是别跳了,剑圣死于太跳是教训啊~~。

 

 

                好,网络稳定了(稳不稳定看我心情),那我们就继续吧。    

 

 

在Llinux里的命令,有它自己的规则,这里就例句书中有的。

  

1.命令区分大小写

2.命令 参数 对象 之间有空格

3.短格式和长格式 用- 、-- 用来间隔,但是不是所有的

4.目录是蓝色的,文件是用来看的,目录是用来切换和保存文件的。

5.什么是对象,对象是命令的承受者, wc -l < 0  命令 参数 但0不是对象,他不是命令的承受者。是 操作对象。

6.“”双引号意思是一个整体。如果某个参数里面有空格就可以用。
 

 

常用系统工作命令


echo :echo【字符串 | $变量】
      把echo后面的内容输出到屏幕上,可以灵活运用。用$提取变量

date :【选项】【+指定的格式】  不需要-、--,用“+ ”  
       显示系统时间,单敲显示 年 月 星期  { Sun     Mar    10   19:11:54  CST  2019} 。
                                           星期天   三月   10号           时区  年
         
       “+%Y”年(y)                    “+%m”月            “+%d”日            “+%Y-%m-%d”全写在一起。
       “+%H”小时 (h显示英文版几月)   “+%M”分钟          “+%S”秒 (s全年秒)“+%H:%M:%S”全写在一起。
       
 

wget :wget【参数】 下载地址
      下载网络文件用的 格式为 wget http://www.baidu.com
      
      wget -d 后台下载,下载到当前所在目录。
      wget -p 下载到指定目录
      wget -t 最大尝试次数
      wget -c 一旦下载中断可以断点续传
      wget -P 下载页面所有资源,包括图片、视频等
      wget -r 递归下载(?)

ps :ps【参数】
    用来显示所有系统进程(静态的)

    ps -a显示所有进程,包括其他用户的进程)
    ps -u用户以及详细信息
    ps -x没有控制终端的进程,系统发起的进程
    ps -aux一般这么用
    
    USER进程的所有者   PID进程pid号   %CPU运算器占用率    %MEM内存占用率   VSZ虚拟内存使用量(kb)   RSS占用的固定内存量(kb)  
    
    TTY所在终端        STAT进程状态   START被启动的时间   TIME实际使用cpu的时间      COMMAND命令名称与参数

 

 

top:
    动态的显示系统所有进程(动态的)

你觉得下面改写一些东西?你觉得可能吗?那么一大啪啦东西~~自己看书吧。 下一个...

 


pidof:pidof【参数】【服务进程名称,就是pid号】
      用来查看某一个、具体的服务名称

      pidof sshd(参数)(不需要-)
      


kill:kill【参数】【进程pid号】
     终止某个指定的pid服务进程
     


killall:killall【参数】【进程名称】
        用来终止一个服务以及对应这个服务的所有进程pid号

        killsll sshd

 

ifconfig:ifconfig【网络设备】【参数】

网卡都没配置些什么???????

 

uname:uname -a
      用来看系统信息、版本等等

      Linux      localhost    3.10.0-123.el7.x86_64    #1 SMP Mon May 5 11:16:57 EDT 2014    x86_64 x86_64 x86_64    GNU/Linux
     平台名称    主机名称     系统内核版本号           系统打包的时间制作系统镜像的时间      架构,x86 64位          协议gun/Linux


uptime:
       用来查看系统负载情况,类似top

free:free -h ;free -m(查看内存使用量)     
     查看内存使用情况 
    
              total       used            free       shared    buffers     cached
Mem:          1.9G        964M            1.0G        9.8M       928K       301M
             实际大小    已经使用大小    空余大小     CPU和内存的交互值

who:who【参数】
    用来看谁在线,有哪些登录的用户

last:last【参数】
     用来查看所有用户的 登录记录,看曾经都谁在线上


history:history -c
        用来查看以前执行过的命令,懒人必备

        “!数字”就可以执行第 数字号 的命令

sosreport:
          收集系统信息,输出诊断文档,给红帽工程师看


pwd:pwd【选项】
     用来显示用户当前工作目录,查看你现在在哪,走丢必备技能


cd:cd【目录名称】  “cd / ”
   用来切换目录,是切换 目录 不能切换文件!
  
   cd - 返回上一次所在目录。       cd .. 返回上级目录。     cd ~ 回到当前目录的,家目录。   cd ~username 切换到其他用户的,家目录。


ls:ls【选项】【文件】
   用来显示当前目录中的文件信息
    ls -a参数 查看全部文件。    ls -l参数 查看文件属性、大小等等
      
   “·”号是隐藏文件。  -a 和 -l 都是短格式,所以可以合并:-al

 

 

 

文本文件编辑命令,看文件命令:


cat:cat【选项】【文件】
    查看 内容少的 文件

    cat -n 可以显示行号


more:more【选项】【文件】
     查看 内容多的 文件


head:head【选项】【文件】
     看文件前几行
     
      head -n 5(几行) 文件  


tail:tail【选项】【文件】
     看文件后几行,同时还能实时的刷新文件
  
      tail -n 5 文件 看文件    tail -f 刷新文件


tr:tr【原始字符】【目标字符】
   用来替换文本文件中的字符,就像word里的替换功能。但一般和 | 管道符一起用
   
    例子: 
           cat anaconda-ks.cfg | tr [a-z] [A-Z]
                 文本文件
    翻译: 查看一个 ana文件 通过管道符交给 tr 处理,把a-z替换成A-Z,变大写。


wc:wc【参数】               
   用来统计文本的行数、字数、字节数
   
   wc -l 只显示行数。   wc -w 只显示单词数。  wc -c 只显示字节数


stat:
     用来看 文件的 时间
    
    Access: 2019-03-26 21:22:28.888595843 +0800 最后一次访问的时间
    Modify: 2019-03-26 21:22:28.888595843 +0800 最后一次修改 文件内容 的时间
    Change: 2019-03-26 21:22:28.888595843 +0800 最后一次变更所有者、文件名称、属性、权限的时间

    A time。   M time。   C time。
    

cut:cut【参数】
     用于提取文件里 按列 的文本字符
  
     例子:
            提取出passwd文件中以冒号(:)为间隔符号的第1列内容
                
               cut         -d:            -f1           /etc/passwd
              命令     冒号的参数    第几列的参数       目标文件
                 
           格式:  cut -d: -f1 /etc/passwd 


diff:【参数】
     比较几个文件一不一样,就是找不同
   
      命令 diff --brief
   
     格式: diff -brief a.txt b.txt 是否一样(也可以不加txt)       diff -c a.txt b.txt  具体哪不一样

 

 

 

文件目录管理命令:


touch:touch【选项】【文件】
      用来创建文件,和修改文件时间

      tuoch -a 仅修改读取时间  就是A time。   touch -m 仅修改修改时间 就是 M time。  touch -d 读取修改一起修改。
 

mkdir:mkdir【选项】目录
      用来创建单个,空白的目录

      mkdir -p 创建递归的具有嵌套式的目录


cp:cp【选项】源文件 目标文件
    用来复制文件或目录,就是copy

    cp -p 保留原始文件的属性。  cp -d若对象为“链接文件”,则保留该“链接文件”的属性。    cp -r 递归持续复制,用于复制目录。   cp -i若目标文件存在则询问是否覆盖。 cp -a 相当于(p、d、r)


mv:mv【选项】源文件 【目标路径|目标文件名】
    用来剪切文件,如果是同一个目录那就相当于重命名
    
    如果剪切目录需要加 -r。  mv -r


rm:rm【选项】文件
   用来删除文件或目录

   rm -f 强制删除不用询问。  如果删除目录需要加 -r 。      rm -r -f


dd:dd【参数】
   也是复制,用来复制文本文件一部分,可选择复制

    dd的几个参数要一起用,很特殊。
 
   例子:  
          dd          if=00000             of=99999           bs=1          count=1
         命令       输入if=文件名字     输出of=文件名字     快的大小     次数,几块

               dd if=00000 of=99999 bs=1 count=1


file:
     看文件类型,看是什么文件,不用看颜色猜文件

      file 文件 目录 

 

 

 

打压缩包和搜索命令牌

tar:tar【选项】【文件】
    用来压缩文件 或者 解压文件
   
     -c 打包的意思,多个文件打包到一起。   -x 解压缩包。  -z 用Gzip格式压缩或解压。  -j 用bzip2格式压缩或解压。  -v显示压缩解压过程。  -f 压缩过后的文件名称。 

     -c 指定解压到的目录。   -t 查看压缩包有哪些内容。  -P 保留原始文件的权限与属性。   -p使用绝对路径来压缩。 

   例子:
          tar     -czvf     000.tar.gz            /home
          命令    参数     压缩后的名字      要打包压缩的目录。     tar是用来压缩目录的,压缩不了文件。
  
            tar -czvf 000.tar.gz /home


            tar -xzvf 000.tar.gz 解压文件。
          

grep: grep【选项】【文件】
     用来在文本中执行 关键词搜索 
     
     grep -b 将可执行的文件(binary)当作文本文件(text)来搜索。   grep -c仅显示找到的行数。   grep -i忽略大小写。   gerp -n显示行号。   grep -v反向选择(仅列出没有关键词的行)。

      
       格式: grep bash(要搜索的关键词) /etc/passwd(所在目录)
    
      因为是短格式所以可以 : grep -vn bash /etc/passed

 

 

 

 

 

 

 

输入输出重定向


重定向:将我们原先要输出到屏幕上的内容,写到文件里面,这个操作服务,叫重定向服务。


1.输出重定向:
             把命令的输出信息(就是输出到屏幕上的字,例如echo就是输出命令)写到文件中去,就叫做  输出重定向。“>”(大于号)

             “>”是清空写入,意思就是覆盖,你写一些东西放到文件里会覆盖曾经的内容。
             “>>”追加,这个就不会,会连着文件内容接着写。
             “2>”报错的清空写入
             “2>>”报错的追加写入
             “&>”全部输出重定向,无论正确或者错误内容,全部写入文件。
              

2.输入重定向:
             把文件的内容,导入到命令里面,叫做输入重定向。“<”(小于号)
             
             “<”把文件内容,输入到命令里面。
             
             


管道符(任意门,消失柜):
                         把前一个命令,原本要输出到屏幕上的内容,交给后一个命令进行处理,变成后一个命令的头。
  
                        例子:
                               ls | wc -l  
                        解释:查看当前目录,然后把看到的东西 通过管道符 给 wc -l 来查看有多少行。
       

通配符:
       通俗的说就是代替,该通配符符号,后面的一切内容,不管是什么都显示

        通配符:*  ?  [ ]

          例子: * 
              /dev/sda
             /dev/sda*  那么不管 * 后面是什么都显示出来 像/dev/sda1  /dev/sda2  /dev/sda3  。
     

          例子:  ?
               /dev/sda
              /dev/sda?  那么不管 ? 后面是什么、有没有字符,都要显示出来,至少显示出来一个,像/dev/sda1  /dev/sda2  /dev/sda3  。
     

          例子:  [ ]
               /dev/sda
              /dev/sda[1,3,5]  意思是我只想看有没有 1、3、5 如果有就显示,没有就不显示,像/dev/sda1  /dev/sda3  /dev/sda5  。 
              
              /dev/sda[1-9]

转义符: “\”  是一个反斜杠
       
       转义符的作用是把操作符 转化成一个 纯粹的一个字符而没有更多的功能,一次只能变一个。
        \ 是把他后面的符号变成废物。
 

        ‘’单引号,是全局转义。把里面的内容全体转义。

         `` 反引号,是执行反引号里面的命令,强制执行。 


          $(命令):执行括号里面的命令 和``类似

环境变量:
         就是系统底层怎么运行,这个需要我们进行设置的,怎么设置怎么运行。
 
         
         1.按照绝对路径来运行: /bin/uprime 例如这个命令,路径 /  加 命令名称,就会直接运行。 
  
         2.命令的别名:如果给命令设置了别名,alias a=echo 那么系统会判断是否是别名,如果是就从系统中搜索别名对应的是什么命令,像这个a 就是echo。

         3.内部命令:系统自带的命令,不归我们管就占 1%。
  
         4.外部命令:归我们管,占99%,

         变量PATH :用来找命令文件位置,以 : 为间隔。   $ 是变量符号

         export 可以将后面的变量变成全局变量。

命令也是文件,当我们敲一个命令时是系统从里面找对应的文件,就像厚黑学里讲的,我们脑子里本来就有,而学习就是把本来就有的提取出来。
 

 

 

 

 

 

 

VIM:
    命令模式。   输入模式。    末行模式。
    
    1.默认模式是命令模式

    2.进入编辑模式按 a、i、o ; a后一个,  i当前, o下一行。

    3.进入末行模式按 :

    4.退出任意模式按 ESC 


VIM命令: 
        dd:删除(剪切)光标所在整行。

       5dd:删除(剪切)光标所处开始第5行。(5是量词,别误会)

        yy:复制光标所在整行。

       5yy:复制从光标处开始的5行          (5是量词,别误会)

         n: 显示搜索命令定位到的下一个字符串
         N:显示搜索命令定位到的上一个字符串
      
         u:撤销上一步的操作   (这个类似word的撤销,超好用,我特乐意用)

         p:将之前删除(dd)或复制(yy)过的行粘贴到光标后面。(p 是和 dd yy 一起用的,类似Ctrl+C和Ctrl+V)


末行模式命令:
             :w        保存
 
             :q        退出

             :q!       强制退出

             :wq!      强制保存退出

             :set nu   显示行号

             :set nonu 不显示行号

             :命令

             :整行

             :s 替换:   替换当前光标所在的行的第一个字母或单词(你想写什么都行)替换成别的。例如: s/0/1 把0换成1但只对第一个0有用。
             :s加上 /g :替换当前光标所在的行的所有字母或单词。  例如:s/0/1/g 把这一行所有的0变成1,所有的。  
             :%s加上 /g:这个牛,将全文中所有的字母或单词全替换。 例如: %s/0/1/g 把所有的0变成1 (好厉害)。

             ? 加 字符串:在文本中 从下至上 搜索该字符串。 例如:?1
             / 加 字符串:在文本中 从上至下 搜索该字符串。 例如: /1

编写Shell脚本:
             
             1.shell脚本用vim编辑器编写,格式:vim 123.sh 。  vim是编辑器、123是文件名字随便、 .sh 是shell格式,后缀必须是.sh。

             2.shell脚本内容格式:(1)脚本声明,一般是 #!/bin/bash 。这是开头。     
                                  (2)脚本的注释,#开始。
                                  (3)就是代码了,由纯命令构成。


接收用户的参数:   shell脚本里内置的命令:
                                       echo :别忘了变量用echo
                                       $0 :文件名称
                                       $# :参数的个数;$*参数分别是什么。
                                       $1  $2   $3   $4   $5   则是对应位置的参数的值。


判断接受用户的参数:命令,用[ ] 中括号扩起来(这是格式,测试语句的格式),里面每个字符都有  空格。用来测试文件的 0为成功 1或别的为失败
                   
                   [ -d ] :测试文件是否为目录型号 (看,里面是有空格的)。
                   [ -e ] :测试文件是否存在。
                   [ -f ] :判断是否为一般文件。
                   [ -r ] :测试当前用户是否有权限读取。
                   [ -w ] :测试当前用户是否有权限写入。
                   [ -x ] :测试当前用户是否有权限执行。    

                   “&&”这是逻辑的语,意思是:只有前面的语句执行成功了才会执行下一个语句。
                   “||”这是逻辑的语,意思是:或
                    也可以理解成 :&&成功了会怎么怎么样。 ||失败了怎么怎么样。

               例子:[ -f /etc/fstab ] && echo "ok" || echo "error"
                                      成功则输出ok  失败则输出error

    
                     比对时候用这个 “echo $?” 相当于等号,意思是:是吗?是不是?......

                     变量可以拿来直接用,例如:[ $USER = root ] 意思是:变量USER 是 root 吗? echo $? 一下 结果是0。所以答:是。
                                               
                                  
                                                        以上是测试字母。

                                                        一下是测试数字

测试数字用的命令:
                  [ -eq ] :测试是否等于
                  
                  [ -ne ] :测试是否不等于
                  
                  [ -gt ] :测试是否大于
                  
                  [ -lt ] :测试是否小于
                  
                  [ -le ] :测试是否小于或等于
                  
                  [ -ge ] :测试是否大于或等于

           例子:
                  [ 5 -gt 10 ]   echo $?  1  。 翻译 5是否大于10啊  测一下 1  答:不大于10

           好,做一个能监控内存使用情况的脚本:
                           
                                             free -m | grep Mem | awk '{print $4}'
        
           翻译:首先进入查看内存使用命令,然后通过管道符交给搜索命令,最后通过awk ''大括号print 变量4,变量4是第四列的信息。

                                                                   完全的脚本:

                                     [ `free -m | grep Mem | awk '{print $4}'` -lt 1024 ] && echo "ok" || echo "stpo" 


                                                        字符串的比较:


字符串的比较:
             [ -z ] :测试判断字符串内容是否被占用。

             [ != ] :测试比较字符串内容是否不同。(是不同,不同)

             [ = ]  :测试字符串内容是否相同。

                                              没什么可说的。

流程控制语句:
             1.条件测试语句:就是一条一条,逐一测试,直到失败。

             2.循环语句:    需要某个脚本重复完成某个工作。

 
if: 相当于:如果.....那么......。他有自己相应的格式
  
            then: 可以放后面,但必须加 ;  举例:if [ !-e /media/haha ]  ;then

    单分支: if  
            then
            fi
              
    举例:if [ !-e /media/haha ]       翻译:如果没有 media/haha 目录    if 开始  fi 结束
         
          then                                 那么

          mkdir -p /media/haha                 就创建一个

          fi                                   结束。

     双分支:

      举例: ping  -c 3    -i 0.2         -w 3        $1        &>   /dev/null
             P3次   间隔0.2秒    每次响应3秒  1号参数     全不进入黑洞
 
             if [ $? -ep 0 ]       如果我们上一条语句结果为0 的话(废话,都进黑洞了) 
 
             then                  那么

             echo "$1 is on-line"  主机在线

             else "$1 is off-line" 主机不再线
           另外情况
           
             fi                    结束


      多分支:可以有一万个
 
         举例:
               read        -p        "Enter:"      GRADE                                                     
              用这个命令           读取这个值     给这个变量
             
              if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]

               如果大等于85    和,两边都满足条件  如果小等100

              then
              那么

              echo "Excellent"
              输出  

              elif  [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
            进行多次判断语句

              then
              那么

              echo "pass"
              输出  pass

              else
              另外,不在以上两种情况。

              echo "Fail"
              输出
            
              fi
              结束

              实验时候 输入Enter ,$GRADR是变量它一直在和数字打交道所以不能输入它,read命令的对象是 Enter,读的是这个值。

for条件循环语句:
               给一个范围,让它循环,不能给一个或多个,必须是范围不然就失去意义了。
              


           举例:
  
                 vim users.txt
                 文件内容
                 文件内容
                 文件内容
                  
                 read       -p    "Enter:"      PASSWD
               用这个命令         读取这个值    给这个变量
                 
                 for  UNAME  in  `cat users.txt` 
                 开始  用它  来   读取这个值

                 do
                 然后

                 id              $UNME     &> /dev/null
          测试用户是否存在       测试它
                 
                 if  [ $? -ep 0 ]
                 如果

                 then
                 那么

                 echo "$UNAME is exist"
                 输出

                 else
                 如果不存在

                 useradd   $UNAME       &> /dev/null
               则创建用户  用户的信息    进入黑洞

                 
                 
           echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null

                   
                fi
                done
                结束。(for循环语句结尾是两个)

  


例子2:
  
         vim ip.txt

         192.168.10.10
         192.168.10.20
         192.168.10.30


         for IP in `cat ip.txt`               (这个命令
          
         do                                    和这个命令的下面必须是范围)

         ping -c3 -i0.2 -w3 $IP &> /dev/null
 
         if [ $? -eq 0 ]

         echo "$IP is on-line"

         else
          
         echo "$IP is off-line"
 
         fi
         done

while:条件循环语句:
                     只要条件允许就会一直循环

          例子:                                     解释:
                PRICE=$(expr $RANDOM % 1000)         定义一个变量:PRICE,价格。   expr命令,计算后面数字的意思。 %RANDOM变量它会取随机的一个数字。    %        1000 取1000。
                 
                TIMES=0                              统计我们猜了多少次
                                                                                                                                                 取余数的符号
                while true                           循环;不会终止

                do                                   然后

                read -p "Enter:" INT                 读取一个变量,然后复制到 INT变量中

                let TIMES++                          猜的次数每次加1

                if [ $INT -ep $PRICE ]               如果用户输入的$INT值 等于 我们定义的$RANDOM

                then                                 那么 

                echo "OKOKOKOKOKOK,$TIMES"           输出 okokokok,猜了多少次

                exit 0                               强制退出

                elif [ $INT -gt $PRICE ]             如果用户输入的$INT值 高于 我们定义的$RANDO 

                then                                 那么

                echo "big"                           输出 big
                
                else                                 两个都不是
                
                echo "low"                           输出低

                fi
                done

                       如果输入的不是数字,而是字母,空格,回车的话脚本会崩溃,那如何在输入错误之后不崩溃?
                   那就用到 case 条件测试语句。
                

case :条件测试语句:

             
       例子:     read -p "Enter:" KEY                读取一个变量,然后复制到 KEY 变量中
             
                  case $KEY in                        判断用户输入的内容 
 
                  [ a-z ] | [ A-Z ])                   a-z 或 A-Z

                  echo "Zimu"                         用户输入是字母,就输出字母                         
  
                  ;;                                  恩......规矩不用管
                  
                  [0-9])             

                  echo "Shuzi"                        用户输入是数字,就输出数字

                  ;;

                  *)                                 用来匹配用户写的数字或字母

                  echo “ERROR”                      用户很贱,瞎写错了就提示这个(这也是为什么for崩溃的原因)

                  esac                                结束

计划任务服务程序:
                什么是计划任务,说白了就是自动化,设置好时间到点自动运行。
               
          
                 at   :只执行一次任务

                 at -l:查看只执行一次任务的内容

                 at -c 1 查看具体内容 1 是编号
                
                 atrm 1  删除计划任务
         
         例子: at 20:48
                at> reboot       
                at> <EOT>  Ctrl D。

长期计划任务: 


         crond服务名称   crontab工具名称
  
 格式 : 分  时  日  月  星期  命令

 
 例子:                                                         解释:
       crontab -e                                                    进入编辑界面                                                  

       * * * * * *  /bin/tar czvf backup.tar.gz /homge/wwwroot       分  时  日  月  星期  命令(命令必须以路径的形式写)

       20 3 15 5                                                       每年的5月 15日 3时 20分 执行任务

       20 3  * 5 3                                                     每年的5月 星期3 3时 20分 执行任务

       20 1  * * 3                                                      每年的每个星期3 1时 20分 执行任务

       20 1  * * 1,3,5                                                 每年的每个星期1,3,5,  1时 20分 执行任务

       20 1 1-10 * *                                                  每年的每个月1-10日  1时 20分 执行任务

       20 1 1-20 1-3 *                                              每年1-3月的1-20日   1时 20分 执行任务

       20 1  */2  * *                                                  每年每隔两天的   1时 20分 执行任务

       20  */2  * * *                                                  每隔两个小时 20分 执行任务

       0   */2  * * *                                                   每隔两个小时 整 执行任务

       *   */2  * * *                                                   每隔两分钟 整 执行任务
 

 

 

 

 

 

 

用户身份与文件权限:
 
                  1.老大 国王 root :管理员  UID号码:0   (rm -rf /*)

                  2.系统用户       :管理一个个的服务,类似国家里的大臣  UID:1-999 (老系统5/6 1-499)

                  3.普通用户       :老百姓,总有刁民想害朕  UID:1000---......


useradd :useradd【选项】用户名
         用来创建普通用户,就是老百姓

             useradd   000                    创建用户名000
             
             useradd -u 88888 boss            创建一个UID88888 名字 boss
             可以指定UID号码


             useradd -g 88888 boss            创建一个用户组88888 名字boss      
             可以指定用户组 必须存在

             useradd -d /home/haha hoho       目录名字叫 haha 用户名叫hoho
             可以给一个用户设置自己的家目录


groupadd :groupadd【选项】群组名
          划分一定的范围来管理用户,就像硬盘分CDEF盘
           
           groupadd 000             添加创建用户组 000
          

usermod : usermod【选项】用户名
         用来修改用户的属性

          用户 组 的信息:基本组: 当你创建用户的时候,会自动创建一个同名组叫: 基本组。(只能有一个)
                          扩展组: 工作需要会有 很多的  扩展组来完成工作。 

              usermod -u 66666 000           修改000用户的UID号为66666

              usermod -G 000 linuxprobe      把用户linuxprobe添加到000用户组里面
                      -g  基本组
              

passwd : passwd 【信息】【用户名】
         修改用户密码的、过期时间、认证信息等。
 

         passwd 000                 修改密码
         New password:             提示你输入新密码:...


         echo 123456789 | passwd --stdin linuxprobe   
    解释:用echo输出一串符 通过管道符 交给后面命令,后面命令是用来重置密码的,linuxprobe是用户名 --stdin是专门用来接收新密码的

         *{{ 这种方式虽然简单,但是通过history命令可以查到用户的密码,所以不安全 }}* 


userdel : 【信息】用户名
         用来删除用户

         userdel 000                删除用户000(但是不能删干净)
 
         userdel -r 000             删除用户资料加上个人信息,这个彻底。


文件权限与归属:
        
  -:普通文件,能读懂的文本。  d:目录文件。  l:链接文件。  b:块设备文件。  c:字符设备文件。  p:管道文件。                                     

         
  -     rw -         - - -       - - -     .   1       root          root      1218     Oct     1      2017      anaconda-ka.cfg
     所有者信息    所有组信息   其他用户           所有者信息    所有组信息
               
                   文件权限

  d     r w x        r - x       r - x     .   2      root          root       6     Oct     1      2017      Desktop(蓝色字)
     所有者信息    所有组信息   其他用户           所有者信息    所有组信息
               
                  文件权限

            文件所有者                  文件所有组                 其他用户
         
          读     写    执行          读     写    执行         读     写    执行       所有者 - 所有组 = 其他用户(很简单)
            
字符      r      w      x             r      w      x           r      w      x         000禁止任何访问

数字      4      2      1             4      2      1           4      2      1          777所有人都可以访问


             在目录上的权限:r,读取目录内文件列表的权限。  w,在一个目录内新建删除重命名文件的权限。  x,进入切换目录的权限。

             在文件上的权限:r,读取文件内容的权限。        w,写入修改文件内容的权限。                x,执行文件的权限,例如脚本。
            


chmod: chmod 【参数】权限 文件或目录名称
      用来设置文件或目录的权限

chown:修改用户所有者或组的命令
    
      格式:chown 所有者 : 所有者 文件名称  


chmod:修改权限的

      格式:chmod 权限  文件名称


例子:chmod 654 anaconda-ks.cfg

特殊权限(一般权限的扩展):


 SUID:
       将我们文件的执行者,临时 获取所有者的身份。普通用户临时获得管理员权限。

       SUID : chmod  u+s  文件

 SGID:
      让我们的用户临时拥有用户组的权限
  
       SGID :chmod  g+s 文件

      1:先进入普通用户
         cd /home 

         mkdir hahaha
        
   
      2:给普通用户一个高级权限,好让它进行写入操作 
  
          chmod -RF 777 hahaha/
          chmod -R g+s  hahaha/
      
      3. 这样之后,在这个home组里新建的任何文件的所属组都会变成上一级目录。


           


SBIT:
     保护位(粘滞位)
     用来确保只能用户自己删除自己的文件,不让别人删除
   
                                                               suid=4      sgid=2    sbit=1
  
     SBIT: chmod o+t  文件
        
             s   小写                            s                                   t 
         rwx:代表它有suid权限       rwx:代表它有sgid权限     rwx:代表它有sbit权限 
                              4                                     2                                   1
 

             S  大写                                      S                                            T 
         rwx:代表它之前没有suid权限       rwx:代表它之前没有sgid权限     rwx:代表它之前没有sbit权限

特殊权限是写到 权限前面的 :
           
        例子: 第一步.  5 432         第二步    5 432        为什么是大写,因为第一步里面是-是没有的意思所以第二步是大写      
               
                      r---wx-w-               r-S-wx-wT

        例子2:第一步.  5 777         第二步    5 777         因为原先位置有字母,所以是小写。
    
                      rwx rwx  rwx           rws rwx  rwt


文件的隐藏权限:  
    
          命令: chattr   和   lsattr


chattr   +  权限   文件   (增加隐藏权限)
         -  权限   文件   (删除隐藏权限)

例子:chattr +a haha   给haha文件加一个隐藏权限
   
      chattr +i haha   给haha文件加一个隐藏权限


 
lsattr             文件    (查看文件隐藏权限)  

例子:lsattr  haha   查看haha文件隐藏权限    


文件访问控制:facl (file access contorl list)
            可以精准的控制谁谁能进不能进

setfacl: setfacl【参数】文件名称
 
         setfacl -Rm  文件       -R对目录操作 -m修改意思

   例子:mkdir 111
   
         chmod -R 000 111
         
         setfacl -Rm u:          u:对于某个人
         好铺垫完了,下一步

         useradd  zhangsan
         useradd  lisi
         exit
         好创建完用户了,下一步

         setfacl -Rm u:zhangsan:rwx /111
         这样就单独为张三开通绿色通道了而李四就滚蛋了。


getfacl: 
         如果忘了某个目录内哪些文件有哪些权限就用它查看。

   例子:getfacl 111           查看111目录内的文件权限
         
         user:zhangsan:rwx     张三 rwx

还有一个小细节,如果用setfacl精准设置文件权限的话,用ls -ld 111看目录时,权限位置最后面的 . 会变 + 。


su命令和sudo服务
               
            su : 用来切换用户的 退出回到原先位置用 exit

        su      用户名  (切换用户但保留当前用户环境变量信息)
        su -    用户名  (完全变更身份的作用,包括环境变量信息)

切换到普通用户身份后 #变$ 号

         
        sudo:   把特定命令的执行权限给指定用户

                 不想给密码,又想让小弟干活,但小弟权限又不足,这个情况就用sudu服务


         例子:
         
首先新建用户
         :useradd zhangsan
          useradd lisi
          exit
                
          visudu                               先编辑sudu

          :set un                              显示行号(这一步没用,但不用不行啊)

98行是:root     ALL=(ALL)    ALL    root是名字;ALL是谁的意思,是指谁过来运行命令还可以写IP地址,ALL的话意思就是所有人都可以;(ALL)                                                                     是指以什么身份,可以使root或者普通用户ALL的话意思是所有身份都行;
                                                                    第三个ALL是可以使用的命令,这个必须限制要不然就凉凉了。
                                               
                                               第99行 (第150行是个高危BUG不知道为什么)

   zhagnsan ALL=(ALL)   /usr/bin/cat ,  /usr/sbin/reboot       zhagnsan 可以是任何人=(以任何的身份)   使用:cat , 使用:reboot                  

                                            好,设置结束,试验一下。  /etc/shadow : 是放密码的文件

          su - zhangsan                  

          ls -l /etc/shadow
          
          cat /etc/shadow
          你是看不了 沙豆 文件的,你不是管理员

          sudu cat /etc/shadow  
          你只需要输入 张三 的密码就行了,不用输入管理员密码了

          
          这样  sudu 服务就比较牛X了。让老百姓变国王。

 查找命令的路径:对,命令还有路径, 本·拉登还有家呐.....
         
         whereis 命令:查找命令
         
   例子:whereis cat                       whereis reboot
         cat: /usr/bin/cat                 reboot: /usr/sbin/reboot

 

 

 

 

 

 

 

 

 

以后还会继续更,虽然在这里我只是普通用户不是root,但毕竟作为博主我还是有在编辑的权限的,好,( ^_^ )/~~拜拜祝老刘生意越来越红火!~。

转载于:https://my.oschina.net/u/4093513/blog/3030508

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值