LINUX学习

一.Linux的安装

1.1 VMWare虚拟机安装

  1. bin -> usr/bin : 这个目录存放最经常使用的命令
  2. boot : 这个目录存放启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
  3. 双击安装程序;
  4. 自定义安装--选择将虚拟机安装的位置路径;
  5. 用户体验设置--取消勾选"自动更新""统计信息发送给用户"
  6. 创建快捷方式到桌面,保留到开始菜单;
  7. 点击"开始安装",等待安装,加载进度;
  8. 点击许可证,输入许可证(百度查找);
   以下为VMWare12PRO版本序列号:
*5A02H-AU243-TZJ49-GTC7K-3C61N
VF5XA-FNDDJ-085GZ-4NXZ9-N20E6
UC5MR-8NE16-H81WY-R7QGV-QG2D8
ZG1WH-ATY96-H80QP-X7PEX-Y30V4
AA3E0-0VDE1-0893Z-KGZ59-QGAVF*
  1. 安装完成。

1.2 Centos系统安装

  1. 官网下载ISO镜像文件https://www.centos.org/,版本介绍:
  • 标准版DVD-ISO:有图形界面,最常用,本次学习也是该版本
  • 最小版Minimal-ISO:没有图形界面
  • 全量版Everything-ISO:包含的软件最丰富,占用的空间比较大;
  1. 打开虚拟机,创建新的虚拟机;
  2. 选择“典型”安装;
  3. 选择已经下载好的 ISO 镜像文件(在下载保存的路径下查找);
  4. 修改 Linux 系统的显示名称(在虚拟机用于显示你的Centos的名称),选择将要安装的位置路径;
  5. 修改磁盘大小,一般选择磁盘大小为20G,选择"将虚拟磁盘划分为多个文件"
  6. 修改硬件设置,自定义硬件设置(后期也可以修改),取消勾选"创建后开启虚拟机"。若电脑本身有16G运行内存,推荐Centos分配内存2G;若只有8G,建议分配1G;
  7. 点击完成,等待安装;
  8. 镜像加载完成,在虚拟机查看Centos硬件信息;
  9. 点击开启虚拟机,开始安装Centos,(可能弹出'二进制..'窗口,直接点击确定);
  10. 选择安装 Linux 系统,(此处需要鼠标进入虚拟机,直接点击虚拟机屏幕),上下箭头进行选择安装版本(一般选择Install CentOs Linux 7),按回车开始安装;
  11. 设置系统语言,选择“EngLish”,点击"Continue";
  12. 设置信息:
  • 点击"DATE & TIME"设置时间,选择(亚洲、上海、24小时制、日期),点击Done完成时间设置;
  • 点击"KEYBOARD"设置键盘,点击+号,输入chinese可以设置从键盘输入中文,点击"add",点击Done完成;
  • 点击"LANGUAGE SUPPORT"设置语言支持,选择"j简体中文"加入中文,点击Done完成;
  • 点击"INSTALLTIOAN SOURCE",点击Done完成;
  • 点击"SOFTWARE SELECTION" 选择安装的 Linux 的系统类型,选择"GNOME Destop"桌面版,点击Done完成;
  • 点击"INSTALLATION DESTINATION"设置磁盘管理,不用添加新磁盘,直接点击Done完成;
  • 点击"NETWORK & HOST NAME"设置网络,点击"OFF"打开网络设置,查看ip信息,点击Done完成;
  1. 点击"Begin Install"开始真正安装。
  2. 在开始安装界面设置 root用户的t密码,点击"ROOT PASSOWRD",输入root的密码,点击Done完成(若密码过于简单,需要点击两次DONE);
  3. 设置完密码等待系统安装完成。
  4. 点击"LICENSING"设置许可证,选择 I Accept...接收许可,点击完成配置;
  5. 安装完成后进入Centos,设置引导页面
  • 设置语言:英语
  • 设置时区:默认,next,next,点击"skip"不绑定谷歌账号
  • 设置普通用户和密码:非root用户名
  1. 完成以上所有,启动Centos。

二.Linux目录

  1. bin -> usr/bin目录
    该目录存放Linux最经常使用的命令(如常用ls,cat,mkdir等),类似于jdk的bin目录;
  2. boot
    该目录存放启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
  3. dev
    dev 是 Device(设备)的缩写, 该目录下存放的是 Linux 的外部设备文件,Linux 中的设备也是以文件的形式存在
  4. etc
    这个目录存放所有的系统管理所需要的配置文件,包括即将安装的常用的各种软件。(相当于环境变量配置)
  5. home
    用户的主目录,存储每个用户文件的根目录(即home下拥有多个不同用户的根目录);在 Linux 中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名
  6. lib->user/lib
    这个目录存放着系统最基本的动态连接共享库,其作用类似于 Windows 里 的 DLL 文件,几乎所有的应用程序都需要用到这些共享库。
  7. mnt
    系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容
  8. opt
    这是给 linux 额外安装软件所存放的目录,通常安装大型软件。比如你安装一个 Oracle 数据库则就可以放到这个目录下,默认为空。
  9. root
    该目录为系统管理员目录,root 是具有超级权限的用户
  10. tmp
    这个目录是用来存放一些临时文件的。
  11. usr
    存放共享的系统资源,一般开发程序员安装软件的位置,如JDK、Mysql、Tomcat等。非常重要的目录,用户的很多应用程序和文件都放在这个目录下(通常是/usr/local目录),类似于windows 下的 program files 目录。
  12. var
    这个目录存放着在不断扩充着的东西,我们习惯将那些经常被修改的文件存放在该目录下,比如运行的各种日志文件。


    Linux目录1.png

    Linux目录2.png

三.Linux基础命令与Windows基础命令比较

  1. Linux常用操作命令
    ls(查看目录)、ll(查看详细目录)、cd(切换目录)、pwd(展示当前位置)、cp(复制)、mv(剪切/改名)、cat(查看)、tail(查看后10行)、touch(创建文件)、rm(删除文件-rf)、mkdir(创建目录)、rmdir(删除目录)、vi(编辑文件内容)、vim(编辑文件内容、高级语法)、wc(统计行词字符)、wq(退出)、grep(文件内搜索)、ps(查看进程)、echo(向控制台输出)、yum(安装包操作)、which(搜索文件)、|(管道)、tar(压缩)。

在Linux系统下,操作的对象只有目录,没有CDEF硬盘,"/"表示了Linux的绝对路径,相对路径使用具体目录格式。在详细目录的表示中,d开头表示目录,l开头表示软链接,-开头表示文件。

  1. vi编辑文件内容的步骤
    vi 文件名 --> 打开文件 --> 进入命令模式 --> 按i/a进入编辑模式 --> 按Esc进入底行命令模式(可以使用命令对文件内容操作) --> 输入: --> 输入wq保存、输入q!则是强制退出。

3.1 目录操作命令(目录操作需要带参数 -rf)

命令 Linux系统 Windows系统
列出目录文件 ls dir
ls -l(显示文件目录的详细信息,缩写为ll)
ls -a(显示所有包括隐藏文件,-表示文件,d表示目录,l表示软链接) dir /a(显示所有包括隐藏文件)
改变当前目录 cd cd
进入父目录 cd ../ cd ..
进home目录 cd ~
复制 cp (-rf 递归复制) copy
cp 旧文件名.txt 新文件名.txt
cp 旧文件名.txt /新目录/新文件名
cp -rf 旧目录 新目录
创建文件 touch 文件名 touch 文件名
删除文件 rm 文件名 del 文件名
rm -r(递归删除,将该目录下的子目录文件递归删除,需询问yes)
rm -rf(强制删除,直接删除,不询问)
创建目录 mkdir 目录名 md 目录名
删除目录 rmdir 目录名 rmdir 目录名
设置目录文件权限 chmod u+rwx 文件名
设置目录文件所有者 chown user.group 文件名
批处理 .sh .bat
帮助 cmd --help / -h

—————————————————————————————————

3.2 文件-内容操作命令

命令 Linux系统 Windows系统
创建文件 touch 文件名 touch 文件名
删除文件 rm 文件名 del 文件名
rm -r(递归删除,将该目录下的子目录文件递归删除,需询问yes)
rm -rf(强制删除,直接删除不询问)
显示文件内容 cat(显示最后一屏内容) type
more(显示百分比,回车查看下一行,空格查看下一页,q退出查看) more
less(使用键盘上的PgUp和PgDn向上和向下翻页,q结束查看)
head -参数数字 (查看文件的头 参数 行,Ctrl+C结束)
tail -参数 数字 (查看文件的后 参数 行,Ctrl+C结束,tail -f 文件 可以对某个文件进行动态监控
统计行数 wc (行数 单词数 字符数)
显示文件信息 file
修改文件内容 vim 文件名
vim 文件名 --> 进入文件(文件命令模式) --> 按i、o、a转换为编辑模式 --> 编辑文件 --> 按Esc进入底行模式 --> 输入:wq保存退出、q!强制退出
查找文件 find 目录 -name ‘文件名’ (注意文件所在位置路径)
例如:find /bin -name ls
定位可执行文件位置 which
在文本文件内查找 grep 关键词 文件名 find
不区分大小写查找 grep -i 关键词 文件名
grep "关键词" 文件名
以独立关键词查找 grep-w 关键词 文件名
压缩文件 tar -zcvf 压缩名.tar.gz 被压缩文件名
使用压缩 tar -z
创建压缩文档 tar -c
显示压缩文件名 tar -v
指定归档(压缩)文件名 tar -f
指定归档(压缩)文件名 tar -t
解压 tar -x
查看压缩文件内容 tar -C
解压到指定文件 tar -xvf
启动运行程序 gnome -open、open start
向屏幕打印、输出 echo "内容"
重定向覆盖 echo "内容" > 文件名 将打印的内容添加到重定向文件中,若文件不存在则创建再添加;文件存在先清空文件,再写入内容。
重定向追加 echo "内容" >> 文件名 将打印的内容追加到重定向文件中,若文件不存在则创建再添加;文件存在,则追加到内容。

—————————————————————————————————

3.3 系统信息查询命令

命令用途 命令 备注
显示内核版本 uname -a
显示发布版本 lsb_release -a
cat 、etc、issue
显示id信息 id、whoami
显示当前登陆用户 who
显示当前环境信息 env
显示启动中检测到的硬件信息 dmesg
显示系统的PCI设备 lspci
显示系统的USB lsusb
显示cpu信息 less 、proc、cpuinfo
显示内存 less 、proc、menminfo
显示硬盘存储信息 df -h

—————————————————————————————————

3.4 进程-任务控制命令

最常用:ps -ef | grep 关键词(查看xxx用户的进程信息)

命令用途 命令 备注
显示进程信息 ps
显示当前所有进程的信息 ps -ef
显示当前所有进程 ps -e
显示进程信息 ps -f UID/PID
查看进程 配合管道 ps -ef grep 关键词
BSD格式显示进程信息 ps -auxf
杀死进程 kill 进程id
强制杀死进程 kill -9 进程id
杀死所有 killall postgresql
暂停中断当前前台任务 ctrl - z
恢复任务到后台 bg
恢复任务到前台 fg

—————————————————————————————————

3.5 网络命令

命令用途 命令 备注
显示启动的网络服务 netstat -anli less
显示路由表信息 netstat -r
显示ip ip -a
ifconfig
显示防火墙信息 iptables -list
远程登陆 ssh user@host
发送ping信息 ping ip
命令行下载 wget url
查看网络连通性 curl -o url

—————————————————————————————————

3.6 用户管理命令

命令用途 命令 备注
修改命令 passwd username
创建用户 useradd username
删除用户 userdel username
修改用户 usermod
退出 exit 、ctrl + D
切换用户(默认root) su [-]username
以su后的权限执行 sudo -u user cmd

—————————————————————————————————

3.7 其他命令

命令用途 命令 备注
显示日期时间 date
日历 cal2014
清除屏幕 clear
搜索软件包 yum search tree
删除软件包 yum remove 安装包名称
安装软件包 yum install 安装包名称
重启系统 reboot
关机 shutdowm -h 定时时间

四.Linux的安装JDK

  1. 打开虚拟机,启动Centos

  2. ifconfig查看centos的ip地址(ens33那个)


    查看ip地址.png
  3. 打开Xshell远程控制工具,连接到centos,新建Xftp文件传输会话

  4. 下载JDK,可以使用wget 官网JDK下载网址下载Linux版本的JDK(以tar.gz结尾),也可以使用xftp文件传输工具从本地下载好的JDK压缩包上传到centos的/home目录下的任意用户目录

    上传JDK.png

  5. 下载/上传好JDK压缩文件后


    上传成功.png
  6. 使用tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/解压到指定的/usr/local/目录下

    解压后.png

  7. 在/etc目录下的profile文件中添加环境变量(profile相当于windows的环境变量),若怕错误修改profile文件导致无法修改,可以先备份该文件

  8. 使用vi或vim对profile文件进行编写添加环境变量,在文件最后添加内容,如下:(根据自己的JDK版本和解压位置添加)
    -export JAVA_HOME=/usr/local/jdk1.8.0_121
    -export PATH=$JAVA_HOME/bin:$PATH
    -export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar


    编辑成功.png
  9. *若不会在centos命令行或Xshell命令行修改profile内容,可以在xftp的会话窗口找到profile文件使用记事本打开,直接编写保存

  10. 修改保存好profile文件后,使用source编译该配置文件生效


    编译成功并查看.png
  11. 最后使用java -version 检查是否配置成功(若和windows下的信息一致则成功,取代了centos自带的OpenJDK)

五.Linux的安装Mysql

  1. 同JDK的下载安装,可以使用命令wget地址下载,也可以使用xftp上传本地已下载好的压缩包


    上传Mysql压缩包.png
  2. 切换到接收文件的用户/home/testme目录(testme是本次实验的当前用户),查看上传的压缩文件


    查看上传的mysql.png
  3. 使用命令tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ 解压上传的tomcat压缩包到/usr/local目录下

    解压并修改mysql名称.png

  4. 使用命令yum list installed | grep mariadb检查系统是否安装了 mariadb 数据库(mariadb数据库是Centos自带的mysql的分支)

    查看mariadb数据库.png

  5. 若Centos自带了mariadb会和mysql配置环境冲突,使用命令yum -y remove mariadb-libs.x86_64进行卸载再安装Mysql

  6. 对已解压的文件改名(为了简短易记),使用命令mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql-5.7.18

  7. 在mysql-5.7.18的目录下创建data数据文件夹,用于存放以后所有的表数据。

  8. 使用useradd mysql创建mysql用户,以便于执行 mysqld 命令(初始化Mysql基础信息的命令)

  9. 在 mysql-5.7.18/bin目录下执行命令./mysqld --initialize --user=mysql --datadir=/usr/local/mysql-5.7.18/data --basedir=/usr/local/mysql-5.7.18,./表示在当前路径下的mysqld用户执行初始化mysql命令。命令执行完会产生数据库root用户的临时密码:root@localhost:密码

  10. 启用安全功能,在mysql-5.7.18/bin目录下使用命令./mysql_ssl_rsa_setup --datadir=/usr/local/mysql-5.7.18/data对服务器与数据库之间的的数据文件传输进行加密,

  11. mysql安装后,需要更改mysql-5.7.18整个文件夹目录权限(原权限仅限于root用户),需更为自创建的mysql用户。在/usr/local/目录下执行命令chown -R mysql:mysql /usr/local/mysql-5.7.18/

  12. 启动MySQL服务,在mysql-5.7.18/bin目录下执行命令 ./mysqld_safe & &表示后台启动)。服务启动后,使用ps -ef | grep mysql查看进程,确认 msyql 是否启动

  13. 在mysql-5.7.18/bin目录下执行命令./mysql -uroot -p,输入初始密码root@localhost:后进入mysql,接着必须使用命令alter user 'root'@'localhost' identified by '新密码';进行密码修改

  14. 授权远程访问mysql,未授权只能本(centos)机访问,使用命令grant all privileges on . to root@'%' identified by '新密码';. 表示数据库名.数据库表,root@'%' 表示用户名@ip地址,%模糊查询ip地址)

  15. 以上步骤完成后,开始使用mysql客户端连接centos数据库进行测试,使用ifconfig查看centos的ip地址,若可以直接连接则使用root账号或密码,也可以用自创建的mysql账号密码登录。

  16. 若不能连接数据库,原因一般有二:远程访问权限未开启(上面步骤已开启),防火墙未关闭(centos防火墙阻止连接)

六.Linux的安装Tomcat

  1. 同JDK的下载安装,可以使用命令wget地址下载,也可以使用xftp上传本地已下载好的压缩包


    上传Tomcat压缩包.png
  2. tomcat压缩包上传成功


    查看已上传压缩包.png
  3. 使用命令tar -zxvf apache-tomcat-9.0.0.M26.tar.gz -C /usr/local/ 解压上传的tomcat压缩包到/usr/local目录下


    查看解压后tomcat.png
  4. 解压成功后,到tomcat的bin目录下使用命令./startup.sh启动tomcat,./表示在当前位置执行文件

    启动tomcat.png

  5. tomcat启动后,到浏览器访问Linux下安装的tomcat是否启动成功时,会遇到Linux防火墙开启,不能访问到tomcat的8080端口号:


    浏览器查看tomcat是否启动成功.png
  • 需要使用命令systemctl status firewalld先查看防火墙状态,再用命令systemctl stop firewalld去关闭防火墙即可,若想重启防火墙则用systemctl start firewalld命令
    查看和关闭防火墙.png
  1. 查看catalian.out日志文件,经常使用tail -f catalina.out命令观察日志文件,此文件相当于eclipse中的console控制台,存储了tomcat启动过程中的一些信息。

    查看tomcat启动日志.png

  2. 查看localhost_access_log_yyyy-MM-dd.log日志文件 ,该文件每天只产生一份。

  3. 经常使用tail -f localhost_access_log_yyyy-MM-dd.log命令检测或者持续观察该日志文件,可以记录并分析tomcat 每天接收到的 http 请求信息。tomcat 服务器上运行的 web 应用接收的请求,请求方式(get,post),请求地址,请求参数(get 请求),处理是否成功(状态码)都在此文件记录。

七.Linux部署WEB应用项目

  1. 使用war包方式将web应用项目发布到centos的tomcat的webapps目录下,即可在 tomcat 中运行 web 应用
  2. 在 Eclipse 或IDEA或STS开发环境中,选择任意一个 web 应用,右键选中此项目,选择 File --> Export --> Web --> WAR file --> Browse保存到指定目录
  3. 使用 Xftp上传 刚刚打包的war 文件到centos系统中的 Tomcat的 webapps 目录
  4. 在 centos中切换到 tomcat 安装目录的/bin下,执行启动 Tomcat 的命令./startup.sh
  5. 在浏览器输入访问地址:http://centos的ip地址:端口号(一般为8080)/项目名/index.jsp

Linux常见面试题

  1. 查看网络TCP端口的使用情况的命令是什么?
    Windows:ipconfig -all
    Linux:ifconfig -a

  2. 查看某一指定进程id为xxx是否在运行的命令是什么?
    ps -f 进程id

  3. 将目录/A拷贝到目录/B/c的命令是什么?
    cp -rf /A /B/c

  4. 查看系统启动日志的最后50行命令是什么?
    tail -f 50 catalina.out(启动日志名)

  5. 写出命令 统计xxx.log文件包含XXX单词(不区分大小写)的行数?
    echo | wc -l | grep -i XXX单词 xxx.log

  6. 统计/AAA/bbb目录下后缀是.txt的文件总大小的命令是?
    find /AAA/bbb -type *.txt |wc -l

  7. 若远程主机不可访问,简述一下排查过程以及使用到的工具和命令?
    使用ifconfig查看远程主机ip地址是否跟本地ip地址同一个网关,使用systemctl status firewalld先查看防火墙状态是否开启,用命令systemctl stop firewalld关闭防火墙。使用工具Xshell或者SRT

你可能感兴趣的:(LINUX学习)