linux

Linux学习笔记

1.window和linux区别

    Window 适合民用,娱乐。有强大的日志系统和桌面应用。但是容易卡(持续不断的进行日志和持续不断的进行桌面应用渲染)

    Linux  正规开发一般是用linux

    正规项目部署在linux上

2.linux历史

     Linux诞生在90年代,是仿制unix而来。Unix是商业版,需要收费。Unix免费版功能比较少。一般公司用unix都是用商业版,付费。

    Unix有的功能linux都有,linux比unix还强大。linux正在逐渐替代unix。Unix不是开源的,Linux是开源的,免费的。

    Linux使用场景,服务器操作系统,移动设备(安卓手机,平板电脑安卓系统),安卓操作系统底层是linux,无线路由器(wifi),交换机,智能家居,java程序开发慢慢移植到linux上

3.linux版本

    linux_第1张图片

    Linux内核版本:linux内核运维开发小组。  相当于 苹果6  苹果7

                  内核版本源码在一定程度上不是开源的

    Linux发行版本:由各大互联网/软件公司定制  相当于 苹果6绿色的手机壳,苹果7彩色的手机壳

    外围的样式源码完全开放。

    一个内核版本是由多种多样的发行版本。

   Ubuntu:以强大的桌面应用为主,吸收了不少windows用户。因为桌面应用会在一定程度上大量占用系统资源,开发。服务器部署上,不会优先选择ubuntu

   CentOs:对服务器性能进行了一定程度的优化,性能比较高,比较稳定。

         服务器操作系统的优选CentOs

linux_第2张图片

4.虚拟机

   虚拟机:是一台虚拟的计算机(由软件虚拟出来的计算机)

    虚拟记事本:记事本软件(虚拟的记事本)

linux_第3张图片

linux_第4张图片

   虚拟机安装:

       将杀毒软件关闭,将防火墙关闭。 22端口。

       使用管理员权限安装

       5个服务需要启动

linux_第5张图片

5.Linux安装

    Linux有一个超级管理员,用户名root,密码安装的时候设置

6.CRT远程连接Linux

linux_第6张图片

    远程连接。

    CRT是远程连接linux工具。

    鼠标右键  粘贴

    文件上传  alt+p 上传窗口

    Linux桌面  /root,上传的文件可以在 root目录中寻找。

7.Linux命令

linux_第7张图片

linux_第8张图片

Java程序员只用几个目录

    /  根目录

    etc  系统配置文件存放目录。防火墙,网络设置文件,jdk环境配置文件,mysql配置文件,redis配置文件。

    usr  应用程序存放目录。jdk,tomcat,mysql,redis,nginx

    root  系统管理员root的家目录。

         每个用户都有一个家目录。只需记住超级管理员root家目录是  /root,相当于window的桌面,所有的操作都是从root目录开始的,~代表家目录。

    以上的建议并不是强制性约束。

    Linux中的参数一般是无序的  如  ls  -al 、  ls  -la 特殊情况下除外。

    Ifconfig查看ip

    ls命令

    ls(查看目录)

    ls  -a或者-all(展示出所有的文件,有隐藏的文件,带点的是隐藏文件或者隐藏文件夹)

    ls  -l(竖着展示列表)  简写为 ll

    ls  -al

    ls –lah   简写为ll  -h(比较友好的展示,比如单位字节变成K)

需求:想要查看 /etc下的内容   ll  -h  /etc

d表示目录(文件夹)  -表示文件夹  l表示 链接

   cd命令

   cd  ../(或者cd  ..) (向上一层目录)

   cd  /(切换到linux的根目录)

   cd  /目录名  切换到指定目录中     /目录名  是linux的绝对路径

   cd  ~(直接切换到当前用户的家目录中,root用户的家目录是  root目录)

   cd  -(切换到上一次目录)

   Linux绝对路径(一般用这个):cd  /etc/x1  (先切换到/目录,然后在/目录中找到etc,在etc中找到子目录x1),在任意目录都可以用这个命令进行切换

   Linux相对路径:cd  x1/x2   在当前目录中找子目录x1,在x1中找子目录x2.必须确定在当前目录下有子目录x1.

   pwd命令

   pwd(显示工作目录)

   makdir  t1(创建目录)

   需求:需要在/root/t1  目录下创建t2目录

   位置:/root

   命令:mkdir  t1/t2  (相对路径)

         mkdir  /root/t1/t2(绝对路径)

   需求:需要在 /root/t3  目录下创建一个t4目录

   位置:/root

   条件:t3和t4都不存在

   命令:mkdir  -p  t3/t4(父目录不存在的时候自动创建父目录)

   mkdir  -p  文件夹名称(以后就这么玩)

   rmdir  文件夹名称,不常用(删除空目录)

   文件浏览命令

   日志文件,xml文件,properties文件

   cat  文件名(快捷查看当前文件的内容)适合查看少量信息的文件

   more  文件名  (分页显示文件内容,还支持直接跳转行等功能。)适合查看大文件

        操作:

            Enter    向下n行,需要定义。默认1行。

            空格键  向下滚动一屏  或  ctrl+F

            B       返回上一屏  或  ctrl+B

            q       退出more

   less  -mN 文件名  (可以分页查看文件内容,标志每行的行号)   适合大文件查看

        参数:

            -m  显示类似more命令的百分比

            -N   显示每行的行号。

   tail  -数字  文件名   可以查看文件后几行的内容。

   tail  -10  文件名  查看文件的后10行内容

文件操作命令

   文件复制

   cp  (复制文件或者复制目录)

   cp  需要复制的文件  复制的位置  

   需求:把/root/Demo1.java文件 复制到  /root/t1   目录中

   位置:/root

   命令:cp  Demo1.java  t1(这种玩法是相对目录的玩法)

         cp  /root/Demo1.java  /root/t1(这种玩法是绝对路径玩法)

 

   需求:把/root/Demo1.java文件 复制到  /root/t1   目录中,改名为ddd.java

   位置:/root

   命令:cp  Demo1.java  t1/ddd.java(这种玩法是相对目录的玩法)

         cp  /root/Demo1.java  /root/t1/ddd.java(这种玩法是绝对路径玩法)

   复制目录

   cp  -r(r参数是递归处理)需要复制的目录  复制的位置

   需求:把/root/t5 目录  复制到    /root/t1 目录中

   位置:/root

   命令:cp  -r  t5  t1  (相对路径玩法)

         cp  -r  /root/t5  /root/t1(绝对路径玩法)

   mv命令

   文件/目录 移动

   mv  需要移动的文件  移动的位置

   需求:把/root/t5  目录  移动到  /root/t3  目录中

   位置:/root

   命令:mv  t5  t3

 

需求:把/root/t5  目录  移动到  /root/t3  目录中(不询问,直接覆盖)

   位置:/root

   已知:/root/t3目录中  已经有一个t5目录了

   命令:mv  -f  t5  t3

   文件/目录的更名操作

   需求:把/root/Demo1.java  改名为  here.java

   位置:/root

   命令:mv  Demo1.java  here.java

   文件删除

   删除文件

   rm  文件名

   rm  -f  文件名(不询问)

   删除目录

   rm  -rf  目录名(删除目录下的所有目录)(r是递归处理,f是不询问)

   需求:删除 /root/t5  目录

   位置:/root

   已知:t5目录下有子目录或者文件

   命令:rm  -rf  t5

   注意:rm  -rf  *(删除当前目录下的所有内容)

         rm  -rf  /*(删除linux系统根目录下所有内容)

   find命令(查找命令)

   find  目录名  -name  ‘需要查找的字符串’

   find  /root  -name  ‘ins*’

   需求:查找 /root目录下  所有以ins开头的文件或者目录

   位置:/root

   命令:find  /root  -name  ‘ins*’

   文件编辑

   Window有记事本

   Linux也有类似记事本的功能

   vim 命令

linux_第9张图片

   一般模式:可以浏览文件内容,可以进行文本快捷操作。单行复制,多行复制,单行删除,多行删除。。。(按i键可以进入插入模式,按:可以切换到底行模式)

   插入模式:可以编辑文件内容。按(esc键切回一般模式)

   底行模式:可以进行强制退出操作。q!(这个不保存)

可以进行保存并退出。Wq

 

   grep和管道

   grep是正则表达式,可以字符串的搜索工作。

   格式:grep 需要搜索的字符串  搜索的文件名

   符合规则就会返回符合规则的行。

   grep  -i   忽略大小写查询数据

   管道命令:可以连接多个Linux命令

linux_第10张图片

   |  shift+\

   命令1 | 命令2  |命令3

   需求:查询当前目录中所有带ins的行数据

   位置:/root

   思考:查询当前目录  ll

        查询字符串,返回字符串所在行  grep

   命令: ll  | grep  ins

 

   压缩、解压命令【重要】

   Linux压缩包  *.tar(打包,大小不会进行压缩)  

                *.tar.gz(打包并压缩文件的大小)

   压缩:

   tar  -zcvf  压缩包名字.tar.gz   需要压缩的内容

   例如:tar  -zcvf  hehe.tar.gz  *  将当前目录下所有内容进行打包压缩,生成压缩文件  hehe.tar.gz

   解压

   tar  -zxvf   需要解压的压缩包名称   解压到当前目录

   tar  -zxvf   需要解压的压缩包名称   -C  指定压缩目录   解压到指定目录中

   需求:需要把/root/t5/hehe.tar.gz 压缩包  解压到指定目录中。指定目录是/root/t5/t5

   位置:/root/t5

   命令:tar  -zxvf  hehe.tar.gz  -C  /root/t5/t5

      tar  -zxvf  hehe.tar.gz  -C   t5

   系统命令

   查看系统进程

   ps  -ef

   需求:查看进程中和 vim相关的进程

   命令:ps  -ef | grep  -i  vim

   杀死进程

   kill  -9  pid号

   需求:查看进程  和 vim相关的进程有哪些,并将vim进程杀死

   命令:ps  -ef | grep  -i  vim

        kill  -9  pid号

linux_第11张图片

   Ifconfig(查看网络配置)

   ping  ip地址(测试和目标的连通性)会持续不断一直测试,ctrl+c退出

   reboot(重启CentOs)

   halt(直接关机)

   其他命令

   网络设置  setup  建议使用CRT运行  setup  这个会显示中文

   文件权限

linux_第12张图片

   第一部分:第一位,文件的类型(d目录,-普通文件,|超链接文件)

   第二部分:所属用户权限。文件属于哪个用户  u

   第三部分:所属组权限。  所属用户所在组别  g

   第四部分:其他用户权限。 文件不属于该用户,不属于该用户所在组。  O

            所有用户  a

   r   read  读取权限

   w  write  写入权限

   x         执行权限

   -         没有权限

linux_第13张图片

   权限更改

   chmod  权限设置  需要更改权限的文件名

   更改Demo1.java  所属用户的权限为所有权限  chmod u=rwx Demo1.java

   更改Demo1.java  所属组  用户权限为r-x  chmod g=rx Demo1.java

   更改Demo1.java  所有用户  用户权限为r  chmod a=r Demo1.java

   更改文件夹权限

   chmod  -R 权限设置  需要更改权限的目录名

   更改t1文件夹中所有文件的权限。所属用户的权限  r--  chmod -R  u=r  t1

Linux安装jdk,mysql,jdk

1.准备工作

   Window 控制面板  添加/卸载程序

   进行程序安装、更新、卸载、查看。

   Setup.exe

   rpm命令:相当于winow的添加/卸载程序

            进行程序的安葬、更新、卸载、查看。

            本地程序的安装:rpm  -ivh  程序名

            本地程序查看: rpm  -qa

            本地程序卸载:rpm  -e  --nodeps  程序名

   yum命令:相当于可以联网的rpm命令

             相当于先联网下载程序安装包、程序的更新包

             自动执行rpm命令

 

linux_第14张图片

   rpm  -qa(q是查询,a是所有)  查看(linux系统安装的程序)

   rpm -qa | grep -i java

   java  –version

      rpm -qa | grep -i java

      rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

      rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

      java –version

linux_第15张图片

Linux安装JDK

 

linux_第16张图片

#set java environment

JAVA_HOME=/usr/local/java/jdk1.7.0_79

CLASSPATH=.:$JAVA_HOME/lib.tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

     

     source /etc/profile

Linux安装Mysql

linux_第17张图片

linux_第18张图片

  /usr/bin/mysqladmin -u root password '123456'

linux_第19张图片

   chkconfig --add mysql(加入到系统服务中)

   chkconfig mysql on(开启自动启动)

   chkconfig mysql off(关闭自动启动)

linux_第20张图片

   grant all  privileges on *.* to 'root' @'%'identified by '123456';

   flush privileges;

linux_第21张图片

   /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

   /etc/rc.d/init.d/iptables save

Linux安装tomcat

   ./是当前目录

   ./startup.sh

linux_第22张图片

   /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

   /etc/rc.d/init.d/iptables save

Linux安装redis

   关系型数据库(SQL)

     Mysql,oracle 

     特点:数据和数据之间,表和字段之间,表和表之间是存在关系的。

     例如:部门 001部门  员工表 001

           用户表,用户名、密码

           分类表 和商品表,一对多关系。

     优点:1)数据之间有关系,进行数据的增删改查时非常方便的。

           2)关系型数据库,有事务操作。保证数据的完整性。

     缺点:1)因为数据和数据之间是有关系的,关系是由底层大量算法保证的。

              大量算法会拉低系统的运行速度

              大量算法会消耗系统资源

           2)海量数据的增删改查会显得无能为力。某些操作很可能宕机

           3)海量数据环境 下对数据表进行维护,也会变得无能为力。

    适合处理一般量级的数据,数据安全。(钱)

   非关系型数据库(NOSQL)

   为了处理海量数据,需要将关系型数据库的关系  去掉。

   非关系型数据库设计之初 是为了替代 关系型数据库的。

   Redis

   优点:1)海量数据的增删改查非常轻松应对。

         2)海量数据的维护非常轻松。

   缺点:1)数据和数据之间没有关系,所以不能一目了然。

         2)非关系型数据库,没有关系,没有强大的事务保证数据的 完整和安全。

   适合处理海量数据,有效率,数据不一定安全。(统计数据(不重要的数据),奥运健儿奖牌总数)查询频繁。

   关系型数据库+非关系型数据库===》项目

     |                 |

   重要数据      海量操作数据,数据不重要

   Redis的使用环境

   1)关系型数据库的缓存存在。

linux_第23张图片

   2)可以作任务队列

linux_第24张图片

   3)大量数据运算

linux_第25张图片

   4)排行榜(微博热搜)redis非常擅长做大量数据的排行榜

 

NoSQL

linux_第26张图片

 

linux_第27张图片

linux_第28张图片

linux_第29张图片  

安装redis

linux_第30张图片

   tar -zxvf redis-3.0.7.tar.gz

   cd 

   make(编译)

    make PREFIX=/usr/local/redis  install(安装)

linux_第31张图片

linux_第32张图片

   前端启动(了解,无法部署集群)

   命令:./bin/redis-server

linux_第33张图片

   集群{[1][2][3][4]}4个计算机连在一起

   运行redis客户端

    ./bin/redis-cli -h 127.0.0.1 -p 6379

   Redis后端启动

   daemonize  yes(redis.conf)

   ./bin/redis-server ./redis.conf

linux_第34张图片

    ./bin/redis-cli shutdown(客户端启用shutdown命令)

   Redis数据类型

   redis使用键值对保存数据(map)

   key全部都是字符串

   value有5种数据类型:

linux_第35张图片

   key名字是自定义的

   注意:key名不要过长,否则影响使用效率

        Key不要过短,最好是有意义。

linux_第36张图片

   二进制安全和数据安全是没有关系的。

   Mysql关系型数据库,二进制不安全【乱码丢失数据】

linux_第37张图片

  Redis二进制数据安全。

linux_第38张图片

   赋值

linux_第39张图片

linux_第40张图片

   incrby  num1   10

   decrby  num1   10

   String使用环境:

         主要用于保存json格式的字符串

linux_第41张图片

   hset hash1 uname zhangsan

   hget hash1 uname

   hmset hash2 uname zhangsan age 18 sex man

   hmget hash2 uname age

   hgetall hash2

   del hash2

   hincrby hash1 age 10(只能操作数字)

   hexists hash1 uname(判断uname是否存在)

   hlen hash1(hash1有多少个字段)

   hkeys hash1 (返回所有的key)

   hvals hash1  (返回所有的values)

   keys  *

 

   Redis有什么命令,jedis就有什么方法。

    Jedis   jedis=new Jedis(“192.168.236.123”,6379);

linux_第42张图片

   Jedis连接池

linux_第43张图片

   抽取连接池工具

linux_第44张图片

   Redis-LinkedList【重点】

linux_第45张图片

   Java  list:数组ArrayList

           链表LinkedList

 

   为什么redis选取了链表?

   Redis操作中,最多的操作是进行元素的增删。

   使用环境:1)做大数据的增删。

             2)做任务队列

linux_第46张图片

linux_第47张图片

   lpush list2 a b c d

   rpush list2 a b c d

   lrange list1 0 3

   lrange list1 0 -1

linux_第48张图片

linux_第49张图片

   llen list2

linux_第50张图片

   扩展命令:

linux_第51张图片

linux_第52张图片

linux_第53张图片

linux_第54张图片

linux_第55张图片

 

   Set

   Java HashSet  无序,不重复。

   Redis操作中,涉及到两个大数据集合的并集,交集,差集运算

linux_第56张图片

 

linux_第57张图片

linux_第58张图片

linux_第59张图片

linux_第60张图片

linux_第61张图片

linux_第62张图片

linux_第63张图片 

   扩展命令

linux_第64张图片

linux_第65张图片

   有序set集合:有序,不重复

   小明,小红,小张  每个元素都需要手动赋予一个分数。

   5000 小明  1000小红  500小张

   集合  500 小张

        1000 小红

        5000 小明

  集合倒序:

          5000 小明

          1000 小红

          500 小张

   有序set集合,专门用来做排行榜。

linux_第66张图片

linux_第67张图片

linux_第68张图片

linux_第69张图片

linux_第70张图片

linux_第71张图片

linux_第72张图片

linux_第73张图片

linux_第74张图片

linux_第75张图片

   通用命令

linux_第76张图片

   keys ?????  (匹配4位)

linux_第77张图片

   默认时间是永久时间

   订阅新闻,新闻的发布

linux_第78张图片

linux_第79张图片

   move username 1(把当前username移动到1号数据库中)

   清空当前数据库:flushdb

   清空redis中所有数据库:flushall

linux_第80张图片

linux_第81张图片

linux_第82张图片

linux_第83张图片

linux_第84张图片

linux_第85张图片

linux_第86张图片

linux_第87张图片

linux_第88张图片

linux_第89张图片

linux_第90张图片

linux_第91张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(linux)