Linux的一些常用命令

重启
reboot
关机
poweroff
shutdown -h now
查看本机ip信息的名称
ifconfig
查看默认网卡信息的文件
cat /etc/sysconfig/network-scripts/ifcfg-eth0
手动配置IP
配置完成后,重启网络,让配置生效
 service  network  restart
查看结果
ifconfig
使cat再次查看,发现配置文件发生了变化
cat /etc/sysconfig/network-scripts/ifcfg-eth0
如果说xshell链接不了虚拟机中的centos系统最大的可能
windows键+r ( 相当于直接点运行)敲入命令
services.msc
确保 VMware NAT Service和VMware DHCP Service 开启的
防火墙
 centos6.9的防火墙服务 iptables
 查看防火墙是否关闭
    service  iptables  status
 关闭防火墙
     service iptables stop
 开启防火墙
    service iptables start
 查看防火墙开机是否启动
     chkconfig iptable --list
 让防火墙服务开机不启动
    chkconfig iptables off
 让防火墙服务开机启动
    chkconfig iptables on

系统登录之后  root@localhost ~

    root 代表当前登录用户的名称
    localhost 主机名称
    ~ 代表当前登录用户的根目录

pwd = print 打印 working  工作 directory 目录

vi和vim编辑器
   一般模式,插入模式,底行模式

   一般模式(通过按iaoIAO键)-->插入模式     插入模式(按Esc键)--> 一般模式
   一般模式(通过按:键)-->底行模式     底行模式(按Esc键)--> 一般模式
   底行模式中,wq =  write quit  写入并退出
               wq!  如果有不能保存退出的情况可以使用wq!  ! 强制退出
                q! = quit !强制  不写入强制退出

   vim  qy97.txt  如果qy97.txt不存在,编辑后退出,等同于新建该文件,写入内容并退出
   vim  qy97.txt  如果qy97.txt存在,"qy97.txt" 5L, 17C   该文件名称  5L=5line 5行   16C=16Character  16字符(换行算一个字符)
    
   一般模式(通过按iaoIAO键)-->插入模式  
         i 在光标位置的前面插入
         a 在光标位置的后面插入
         o 在光标位置的下一行插入
         I 在光标位置的行首插入
         A 在光标位置的行尾插入
         O 在光标位置的上一行插入

   在底行模式下:set nu 回车 显示文件行号
   在底行模式下:set nonu  回车  不显示文件行号
   一般模式 大写字母G 到文件末尾
   一般模式 小写字符gg 到文件首行
   一般模式 ctrl+f 文件太长时显示下一页
   一般模式 ctrl+b 文件太长时显示上一页
   在底行模式下:100  回车 光标直接定位到100行
   一般模式 使用/cpp 回车  找到了cpp
   一般模式下  在光标所在行,直接点yy  复制当前行内容到缓存中  nyy 复制光标所在行开始的n行  yy和p结合使用p 相当于粘贴功能
   一般模式下  小写字母u  撤销(支持多次)
   一般模式下  crrl+r 反撤销(支持多次)
   一般模式下  点小写字母dd  删除光标所在行内容
   一般模式下  点小写字母ndd  删除光标所在行后的n行
   底行模式下 :3,6d 回车 从第三行删除到第六行内容
   
   底行模式下 整个文件字符2替换字符1   %s/字符1/字符2/g
              光标所在行字符2替换字符1   s/字符1/字符2/g  
   
用户管理
   centos系统是一个多用户系统
   用户分为三类:
      超级用户(root) 用户id为 0
      伪用户     用户id为1-499,虽然存在,但是不能用户登录
      普通用户   用户id为500-60000
   用户信息存放位置: /etc/passwd
      查看该文件  cat  /etc/passwd
      文件内容解释(linux系统下,一般的配置文件分隔符使用:):
      root:x:0:0:root:/root:/bin/bash
      ...
      admin:x:500:500:admin:/home/admin:/bin/bash
     详解:
      用户名 x密码占位符  用户ID  用户所属主组ID  用户描述(用户别名)  宿主目录   命令解析器
   创建用户
      语法:
      useradd  -u 用户ID  -g 主组名称  -G 用户其他组名称(可以使用,隔开) -c  用户描述(别名) 用户名
      实例(只能是root用户操作):
      useradd -u 666 -g root -G sys,users,admin -c 'newUser' uqy97a
      查看用户所属组
       groups uqy97a
      查看用户信息文件:
       cat  /etc/passwd
      最简单的方式创建用户
     useradd uqy97b
     useradd uqy97c
     useradd uqy97d
     useradd uqy97e
     useradd uqy97f
     为了后面切换用户,要给用户设置密码:
      语法:
      passwd 用户名称
      实例:
      passwd uqy97a
      passwd uqy97c

   修改用户
      修改用户登录名字
         usermod =user modify
      语法:
         usermod  -l 修改后的用户名称   修改前的用户名称  (只是修改登录名称,宿主目录不会改变)
      实例:
         usermod  -l uqy97b1  uqy97b
      修改用户的锁定状态
         usermod  -L  uqy97c   -L(lock)
         usermod  -U  uqy97c   -U(unlock)
   
   删除用户(已经登录的用户无法删除)
       语法:
       userdel -r 用户名称  (-r如果不加,从passwd中删除用户信息,但/home下该用户的目录依然存在,-r 连同/home目录一起删除)
       实例:
       userdel  uqy97f
       查看结果:
         cat /etc/passwd
         ls /home
       userdel -r uqy97e
       查看结果:
         cat /etc/passwd
         ls /home
       
   切换用户
      su 用户名(root用户向普通用户切换,不需要密码,但普通用户切换到root或者向其他普通切换,都需要密码)
      设置密码语法:
      passwd 用户名称
      实例:
      passwd uqy97a
      passwd uqy97c
      切换用户实例:
      su uqy97a  不需要密码
      su root    需要密码
      su uqy97a
      su uqy97c  需要密码
组管理
   centos系统存在多个组
   组信息存放位置:/etc/group
   查看该文件 cat /etc/group
   文件内容:
      root:x:0:
      admin:x:500:
   详解:
      组名称  组密码占位符  组id   组内用户列表
   组的添加
      语法:
      groupadd  gqy97a
      实例:
      groupadd gqy97a
      groupadd gqy97b
      查看结果
      cat /etc/group
   组的删除
      groupdel gqy97b
      查看结果
      cat /etc/group
   
时间(修改时区,修改时间,同步网络时间)
   查看当前系统时间
    date  
   修改时区
   cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
   修改当前系统时间
    date MMDDhhmmYYYY
    实例:
    date 052510552018
        查看
        date
    date -s 'yyyy-MM-dd HH:mi:ss'
       实例:
    date -s '2019-06-25 11:56:00'
        查看
        date
   使用网络同步当前时间
        查看当前系统中ntpd 服务是否开启
        service  ntpd status
        没有开启
      使用网站同步网络时间
       ntpdate pool.ntp.org
     系统自动同步时间
       service  ntpd start
     设置开机启动
       chkconfig ntpd on
1,使用root用户,复制/etc/sudoers 文件的第91行修改为,想提升的用户名称
      root ALL=(ALL) ALL
      admin ALL=(ALL) ALL
    2,切换到admin用户
       sudo poweroff(关机)

问题
vi/vim a.txt
vi或者是vim   进入a.txt文件时,出现.swp文件提示,原因是有和文件名称一样的  .a.txt.swp文件
解决:
   ls -a  查看所有文件
   rm -rf  .a.txt.swp  


查看磁盘信息命令
  fdisk -l

  磁盘容量=柱面大小*柱面数量
  柱面大小=扇面的最小单位*扇面数量*刺头数量

  磁盘容量=扇面的最小单位*扇面数量*刺头数量*柱面数量
           512            63        255     1305

   当前系统磁盘容量:  10733990400    
   
centos目录结构
   ls /   查看根目录下有哪些文件或者目录
        bin   可执行文件的目录
        sbin  存放root用户可执行文件目录
        etc   配置文件
        boot  引导文件
        home  普通用户宿主目录
        lib   系统的核心文件
        lib64  系统的核心文件
        dev    设备目录
        mnt    临时目录挂载点  
        root   root用户的宿主目录
        tmp    临时目录(比较重要文件不要往这里面方法)
        var    经常发生变化的文件或者目录存放处  variable   var a=1
        usr    共享资源目录(一般软件安装,默认此目录)
文件管理
   linux命令分类
      内部命令 cd  pwd...     外部命令  ls mkdir...
   帮助命令
      内部命令:help 命令名称
      外部命令:man  命令名称
                man mkdir
        进入帮助文档后,点q键退出
   创建目录
      mkdir = make directories
      语法:
      mkdir [选项] 目录名称
      实例:
      mkdir  qy97
      创建多级目录实例:
      mkdir -p  spring/springmvc/config  
      mkdir -p  aaa/bbb/ccc  

          学会看帮助文档
          -p的解释:
          -p, --parents
              no error if existing, make parent directories as needed
   删除目录
      rmdir= remove  directory
      语法(只能删除空目录)
      rmdir 目录名称
      实例:
      rmdir aaa/bbb/ccc
      rmdir aaa/bbb
      rmdir aaa
   修改目录名称
      mv = move
      语法:
      mv 要修改名称的目录   修改后的目录名称(不能存在)
      实例:
      mv qy97 qy971
   复制目录
      cp = copy
      语法:
      cp -r  目录名称
      实例:
      cp -r qy971  spring

      ls /tmp
      ls /var
      cp -r /var/db/  /tmp
      ls /tmp
      ls /var
   查看目录下的内容
       ls = list
       语法:
       ls  [目录名称]
       实例:
       ls  查看当前目录下的所有内容
       ls  /etc  查看etc目录下的所有内容(绝对路径)
       ls  /etc/sysconfig/network-scripts    查看/etc/sysconfig/network-scripts目录下的所有文件
       ls spring/ 当前目录下存在spring可以使用相对路径查看
       ls spring/springmvc  
         -a  查看目录下所有的文件,包括隐藏文件
         -a, --all
              do not ignore entries starting with .
     -l  以长格式显示目录下的所有文件(显示文件或者目录的详细信息)
     ls -l 可以简化为 ll
     -t  按更新时间倒叙排序显示目录下的内容
      ls -a  /etc
      ls -l  /etc
      ls -l -t  /etc   等同于  ls -lt /etc
     
   切换目录
      cd = change directory
      语法:
      cd 目录名称
      实例:
      cd    什么参数都要,切换到当前用户的主目录

      su admin  切换普通用户
      cd     进入普通用户主目录
      pwd  输出结果为/home/admin

      cd ..  切换到上级目录
      cd ../../   切换到上级的上级目录
      cd  spring   切换相对路径
      cd  spring/springmvc
      cd /etc/     切换绝对路径
      cd /etc/sysconfig

   创建文件
     touch  文件名称
     实例:
     touch spring.xml
     touch spring/springmvc/config/springmvc.xml
     touch /tmp/spring.xml
   复制文件
     cp 文件名称  目标位置(目标位置不存在,相当于复制后重命名)
     实例:
     cp spring.xml spring
     cp spring.xml springmvc.xml
     cp springmvc.xml  spring/springmvc/
     cp /root/spring.xml /var/log/  
     ls /var/log
     cp 如果是目录的话,需要加上 -r
   剪切文件(移动文件)
     mv 文件名称  目标位置
     实例:
     mv spring.xml qy971/  移动spring.xml到qy971目录下
     mkdir  /tmp/mydir
     mv /root/qy971/spring.xml  /tmp/mydir/
     ls /tmp/mydir/
   删除文件
      rm =remove
      实例:
      touch  a.txt b.txt c.txt  创建多个文件
      rm a.txt 带提示的删除
      rm -f  b.txt   -f =force 强制删除不带提示
      rm -rf  qy971  -r =resursive 递归强制删除
        总结:
          无论是文件或者是目录,都可以使用
          rm -rf 文件/目录  
     
   修改文件名称
       mv qy97.txt  qy97.log   qy97.log一定不是一个目录
   查看文件内容
     查看整个文件内容
       语法:
       cat  文件名称
       实例:
       cat install.log
       cat /etc/hosts
     分页查看文件内容
       less 文件名称
       more 文件名称
       实例:
       less install.log
       more install.log
         enter键一行一行查看
     空格键一页一页查看内容
     ctrl+f 下一页
     ctrl+b 上一页
         less和more一点区别,less 可以使用/ 查看具体内容  more不可以
         q 退出
      查看文件的前n行
        语法:
    head [-n] 文件名称
    实例:
    head HelloWorld.java 默认查看HelloWorld.java的前10行
    head -1 HelloWorld.java
    head -11 HelloWorld.java
      查看文件的后n行
        语法:
    tail [-n] 文件名称
    实例:
    tail HelloWorld.java
    tail -1 HelloWorld.java
    tail -5 HelloWorld.java
    重要用法 -f 实时监控HelloWorld.java的尾部:
        在一个窗口使用下面命令,产生阻塞,一直监控 HelloWorld.java的尾部:
          tail -f HelloWorld.java
         在链接一个新窗口,执行下面命令,观察第一个窗口的变化:
         date >> HelloWord.java
           
       
   向文件中写入或者追加内容
        echo 'hello world'   linux向控制台打印  相当于java中的System.out.println("hello world");
                         js 中打印   alert 'hello world'   oracle 中打印  dbms_output.putline('hello world');
     >> 代表追加 在原有内容后面继续添加   > 代表写入  覆盖原有内容
        echo 'hello world' >> HelloWord.java    把hello world 追加到HelloWord.java 的尾部
    date >> HelloWord.java   把当前时间追加到HelloWord.java 的尾部

软硬链接
     ln = link  make links between files
     语法:
      软链接
      ln -s   源文件    链接名称
    
     实例:
      ln -s   HelloWord.java  hw.lnk   给HelloWord.java创建了一个快捷方式,名字为hw.lnk
      cat hw.lnk  软链接可用
      rm -rf HelloWorld.java
      cat hw.lnk   软链接不可用

      硬链接
      ln -d  源文件     链接名称
      实例:
      ln -d HW.java  hwa.lnk   给HW.java创建了一个硬链接,名字为hwa.lnk
      rm -rf  HW.java
      cat hwa.lnk  硬链接正常使用
打包压缩(解压缩)
    压缩和解压的,有两个命令,只能对文件操作,不能操作目录
      gzip
      bzip2
   tar 打包(目录) 压/解缩 选择上面两种方式
     tar的option:
     -c create  创建压缩
     -t list    查看压缩
     -x extract 解压缩

     -z  gzip  使用gzip方式进行压/解缩
     -j  bzip2 使用bzip2方式进行压/解缩

     -v  verbose  压/解缩 显示压缩/解压的目录和文件
     -f  file  文档名称
     
     -C  directory  指定解压的目录路径

    打包压缩
      语法:
        tar -c -z/j -v  -f 压缩后的名称  要压缩的文件或者目录
      实例:
       tar -czvf  spring.tar.gz  spring
       tar -czf   springa.tar.gz  spring
       tar -cjvf  spring.tar.bz2  spring
    查看压缩包
      语法:
        tar -t -z/j -v  -f 压缩后的名称
      实例:
    tar -tzvf  spring.tar.gz
    tar -tjvf  spring.tar.bz2
    解压缩
       语法:
        tar -x -z/j -v  -f 压缩后的名称   -C  解压后的目录  -C(如果省略,默认当前目录)
    实例:
       tar -xzvf springa.tar.gz -C /var
       ls /var
       tar -xjvf spring.tar.bz2 -C /var/spring
       ls /var/spring

文件管理
   统计文件内容
       wc=word count
       语法:
       wc [option] 文件名称
       实例:
       wc  a.log  统计a.log中有几行,几个单词(用空格分割),几个字符(包括换行和空格)
       wc -l  a.log  统计行数
       wc -w  a.log  统计单词
       wc -c  a.log  统计字节数
       wc -m  a.log  统计字符数(一个中文字符,编码格式是utf-8,占三个字节)
       wc /etc/hosts  绝对路径
   查找文件
        语法:
        find [文件目录]  -name  '*关键字*'   
    实例:
    find -name "*.log*"   在当前目录下查找名字中含有.log的文件
    find /etc -name '*.pp*'  在etc 目录下(子孙目录也包括)查找文件名称含有.pp的文件,并显示
        
    | 在命令中解释为 管道符  可以链接两个linux命令,第一个命令的执行结果为后面命令使用
        find /etc -name '*.pp' | wc -l  在etc 目录下(子孙目录也包括)查找文件名称含有.pp的文件 ,并且统计行数

        find /etc -name '*.pp' > a.log 输出结果写入a.lot文件中
    wc -l a.log   统计a.log有几行
        
    vim a.log
    :set nu
    点击大写G,到文件末尾

   查找文件内容
       grep = global(regexp 正则表达式) regular  expression         print
       grep = global search              regular expression(RE) and print out the line

       语法:
       grep  关键字 文件名称  
       实例:
       grep   .pp  a.log  在文件a.log中查找含有.pp的行,并显示
       grep   0.0  /etc/hosts   绝对路径  在hosts文件找0.0
       
        grep  .pp a.log  | wc -l  查找并统计行数
        grep   0.0  /etc/hosts   | wc -l


权限管理
     linux系统中分为四种角色
       u=user 当前用户  g=group  同组用户  o=other  其他用户  a=all  代表所有用户
     三种权限
       r=read 可读  w=write 可写  x=execute  可执行
     通过ls -l(ll)查看文件或者目录的权限
        ll a.log
     -rw-r--r--. 1 root root 16003 Jun 27 09:20 a.log
     分析第一部分
     -                                           rw-                    r--                 r--
     文件类型(一共三种,-文件 d目录 l软链接)  当前用户拥有的权限   同组用户拥有的权限     其他用户拥有的权限

     改变权限方法1:
      chmod =change mode
      语法:
      chmod  [角色(可组合)]+/-[权限(可组合)]  文件或者目录名称
      实例:
      ll a.log
      chmod  u+wx  a.log  为a.log的当前用户角色添加 可写和可执行的权限
       ll a.log
      chmod  g+wx  a.log
       ll a.log
      chmod  o+wx  a.log   
       ll a.log
     chmod  a-rwx  a.log   
       ll a.log
     chmod  a+rwx  a.log   
       ll a.log
     改变权限方法2:
       语法:
       chmod (0-7)的数字组合 文件或者目录名称
       实例:
       chmod  777 a.log
       chmod  000 a.log
       chmod  456 a.log
       把0-7的十进制转换为三位数字表示的二进制
       十进制   二进制
       0        000
       1        001
       2        010
       3        011
       4        100
       5        101
       6        110
       7        111

       8        1000  linux权限系统中,权限一共就三种,所以最多就到7
       计算机底层1为true  0为false
      
        chmod  7   7   7   a.log
    chmod  111 111 111 a.log
        chmod  0   0   0   a.log
        chmod  000 000 000 a.log
    chmod  4   5   6   a.log
        chmod  100 101 110 a.log
           r-- r-x rw-
    chmod  321  a.log  
           -wx-w---x
            
系统进程管理
   查看进程
       ps = process  
       ps = report a snapshot of the current processes.
       语法:
        ps [选项]
       实例:
        ps -ef   全格式显示当前系统下的所有进程
        常用筛选进程:
        ps -ef | grep firefox  从所有进程中查找含有firefox进程
        ps -ef | grep java   从所有进程中查找含有java进程

        ps -ef | grep firefox |grep -v grep   从所有进程中查找含有firefox进程,去除自身进程
   结束进程
        语法:
        kill [option]  进程名称或者id
        实例:
        kill -9  5069  根据上面命令查找进程ID  强制杀死进程

   查看任务管理器
     top  详细解释参考帖子
    https://www.cnblogs.com/sbaicl/articles/2752068.html
     q 退出
定时任务
    语法:
    crontab [option]
    实例:
    crontab -l 查看当前系统的定时任务
    crontab -e 创建定时任务
           创建一个定时任务,每隔一分钟向tomcat.log中写入当前时间
           touch tomcat.log
           pwd   查看当前目录位置
           crontab -e 编辑下面内容,根vim一样操作
           */1 * * * *  date >> /root/tomcat.log   每隔一分钟向tomcat.log中写入当前时间
           :wq  保存退出
           每过一分钟,查看结果
        cat tomcat.log

         详细解释定时文件中的五个*的意思
         *         *          *          *          *       执行的任务
         分钟0-59  小时0-23   日(1-31)   月(1-12)   周(0-6)
         其他解释:
         /  每隔多久
         *  */2  * * * date >> tomcat.log  每隔2个小时  执行日期写入操作
         -  时间段
         0-5 * * * * date >> tomcat.log 每个小时的0-5分钟, 执行日期写入操作
         , 时间点
         * 0,8,9,10 * * *   date >> tomcat.log  每天的0点,8点,9点和10 执行日期写入操作


        5      *       *         *     *     ls             指定每小时的第5分钟执行一次ls命令
        30     5       *         *     *     ls             指定每天的 5:30 执行ls命令
        30     7       8         *     *     ls             指定每月8号的7:30分执行ls命令
        30     5       8         6     *     ls             指定每年的6月8日5:30执行ls命令
        30     6       *         *     0     ls             指定每星期日的6:30执行ls命令
        30     6       [8-11]    *     *     ls             指定每月的8号到11号的6:30执行ls命令   
        30     6       8,11      *     *     ls             指定每月的8号和  11号的6:30执行ls命令   
     
    crontab -r 删除定时任务
   https://www.cnblogs.com/suifengbingzhu/p/4538143.html

shell编程
   概念:当命名不在命令行执行,放到文件中执行,那么该文件就是shell脚本
   shell脚本的编写:
       1,创建脚本,最好是.sh结尾,让别人知道创建的文件是脚本
          touch 脚本名称.sh
       2,在脚本的第一行声明解析器
           第一行代码:#!/bin/bash
       3,编写脚本业务
           # 注释内容
       4,让脚本可以执行
          chmod u+x 脚本名称
       5,执行脚本  
          ./脚本名称
          bash 脚本名称
    第一个实例:
     hello.sh
     内容:
        #声明命令解析器
    #!/bin/bash
    #打印
    echo 'hello shell脚本...'
    第二个实例:
      编写脚本,打包任务目录或者是文件,打包成功后删除原来文件或者原目录,如果打包错误,错误写入错误日志文件中
      
      vim tar.sh
      复制下面内容:
        #!/bin/bash
        #讲解变量和位置变量的用法
        #定义目录名称 $1 接收脚本传入的第一个参数
        dirName=$1
        #定义打包后的文件名称 $2接收脚本传入的第二个参数
        fileName=$2
        #执行打包  ${变量名称} 获取已经定义的变量值{}可以省略  $变量名称
        # 2标准错误  >error.log 把打包的错误信息写入到error.log里面
        # && 当前一个命令执行成功时,后面命令才会执行  ||当前一个命令执行失败,才会执行后面命令
        tar -czvf  ${fileName}.tar.gz  $dirName 2>error.log  &&  rm -rf $dirName
      chmod 777 tar.sh
      操作log1 不动原来目录
      cp -r /var/log /var/log1
      cp -r /var/log /var/log2
      执行脚本:
      ./tar.sh  /var/log1  log1_bak
      ls 查看结果
      ls /var/
      tar -tzvf log1_bak.tar.gz 查看打包后的目录

    shell编程
   if else用法
        #!/bin/sh
    # echo 打印  ""和''的区别 ""能正确解析$或者其他标示符,''写什么就打印什么东西  
    echo "你输入的参数为:$1"
    if [ $1 == 1 ]; then
      echo '你若安好,便是晴天'
    else
      echo '你若安不好,便要挨打'
    fi
   if else if ...else用法
       #!/bin/bash
    echo "你输入的参数为:$1,不同输入可以得到不同的名人名言"
    if [ $1 == 1 ]; then
      echo '马云说:让天下没有难做的生意'
    elif [ $1 == 2 ]; then
      echo '马化腾说:用心创造快乐'
    elif [ $1 == 3 ]; then
      echo '董明珠说:让世界爱上中国造'
    elif [ $1 == 4 ]; then
      echo '刘强东说:我是老牛,喜欢嫩草'
    else
      echo '别人说的再好,有用的都是自己努力非都。。。'
    fi
   for 循环
       #!/bin/bash
    for (( i=1; i<=10; i++ ))
    do
      echo "结果为:$i"
    done
    echo '------------------------'
    # ` 间隔符
    for i in `ls /root/shelldir`
    do
     echo "该目录的内容:$i"
    done
    echo '-----------------------'
    for i in a b c aa bb cc 1 22 333
    do
     echo "$i"
    done
    echo '--------------------'
    for i in {1..10}
    do
      echo $i
    done
   while 循环
        #!/bin/bash
    #定义整型变量
    declare -i j=1;
    declare -i s=0;
    echo "你输入第10个参数是:${10}"
    while (( j<=$1 ))
    do
    # let 计算
       let s+=j;
       let j++;
    done
    echo "1-100的和为:$s"
   
软件安装和维护
   rpm  早期 redhat package  manager
        现在 rpm    package  manager
   rpm安装的格式:
       软件名称-版本号-适用平台.rpm
       jdk     -8u151 -linux-x64.rpm
   语法:
    rpm [option]  *.rpm   *任意的rpm软件
 
   实例:
      安装(卸载)jdk
        mkdir soft
        #使用下载好的rpm包 或者 wget  下载地址
    java -version  #看当前环境有没有安装jdk
    rpm -ivh  jdk-8u151-linux-x64.rpm   ####-i 安装install  vh 以###的方式显示安装进度
    java -version     #发现已经安装
    rpm -qa | grep jdk    #### rpm -q=query  -a=all  rpm -qa 查询所有的已经安装软件   grep 从所有安装软件中查找含有jdk的
        rpm -e  jdk1.8-1.8.0_151-fcs.x86_64   ####-e erase 卸载,上一步的查询结果
        rpm -qa | grep jdk 或者java -versoin
    echo $JAVA_HOME  仍然没有,JAVA_HOME需要自己配置
        配置环境变量:
                vim /etc/profile   # profile文件就是环境变量的配置文件
        在文件末尾黏贴如下内容:
            export JAVA_HOME=/usr/java/jdk1.8.0_151
            export PATH=$JAVA_HOME/bin:$PATH
            export ClASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
        echo $JAVA_HOME  仍然没有,配置没有生效
                让配置生效
            source /etc/profile
        echo $JAVA_HOME  出现路径,说明配置成功
   rpm 软件维护工具的弊端:
      安装d软件  d->c软件  c->b软件  b->a软件
      连锁依赖,安装就非常的麻烦。。。先装a 再装 b....

   yum  为了解决rpm的弊端,yum提供了一套#在线#分析依赖关系,提供一套软件安装方案,安装软件
   实例:
      安装(卸载)mysql
      实例:
     安装
        yum -y install mysql   # -y 免提示
    卸载
        yum -y remove  mysql   

      mysql命令用户
       打开mysql安装位置的bin目录,按shift+鼠标右键->在此处打开命令行
       mysql -uroot -p12345  #123456是自己密码 回车  
       或者  
       mysql -u root -p 回车,输入密码 回车
       show databases;   #显示所有数据库
       use test;   #选择库
       show tables;  #显示该库下的所有表
       describe  dog; #显示表结构
       或者  desc dog;
       
       create table tb_test(id int primary key auto_increment,name varchar(20)); #创建表
       desc tb_test;
       alter table tb_test add age int(4); #为创建过的表添加列
       desc tb_test;
       alter table tb_test modify name varchar(200);  #修改创建过的表的字段长度
       desc tb_test;
       alter table tb_test drop column age; # 删除列
        desc tb_test;
       create table tb_test1 select * from tb_test ;  #快速表备份
        show tables;
       drop table tb_test1; #删除表
        show tables;

tomcat的部署和操作
      使用xftp把tomcat...tar.gz包传入到centos系统中
      解压tomcat包到/usr/local下
      tar -xzvf apache-tomcat-7.0.68.tar.gz -C /usr/local/
      启动
         进入到tomcat根目录
     cd /usr/local/apache-tomcat-7.0.68/
     ./bin/startup.sh
     如果失败,可以查看日志
    cat logs/catalina.2019-06-28.log
     在另外一个窗口实时监控日志文件的末尾
     tail -f logs/catalina.2019-06-28.log
        在当前窗口关闭tomcat
     ./bin/shutdown.sh
             ./bin/startup.sh
       
       查看自己的ip地址
       ifconfig
       在浏览器输入 ip为上面查看结果
       http://192.168.182.10:8080/
       


原文地址:https://www.cnblogs.com/fengxiangyu/p/11116206.html