Linux 学习
一、linux的基本操作
1.1、linux的目录结构
Windows的目录结构是带有盘符的。D: E: C:
-
在Xterm中输入ls查看顶级目录:
-
目录的树状图:
-
各个目录的说明
root:该目录是系统管理员HOME目录
bin:存放经常使用的命令。如:ls
boot:存放的是启动linux时的一些核心文件
etc:存放系统管理所需要的配置文件和子目录
home:普通用户的HOME目录(该目录不是所有用户共享,里面还有一些子目录)
usr:默认安装软件的目录(类似windows中的Program Files目录)
opt:是主机额外安装软件摆放的目录(如docker)
1.2获取linux中的信息
- 获取当前用户(我是谁):
# who am i
- 当前所在的目录(我在哪):
# pwd
- 查看ip地址:
# ip a
# ip addr
- 清屏:
# clear
- ping域名 | id
ping 地址
- 强制停止:
ctrl+c
二、linux基本命令
Linux中命令的基本格式:命令 [选项] [参数]
注意,个别命令是不遵循这个格式的
当命令有多个选项时,可以写在一起,并且选项也是由简写方式的 命令 -选项a选项b
2.1
列出目录:
# ls [-ald] [目录名]
目录名不填写,默认为当前目录
-a:列出的全部的文件,包括隐藏文件
-l:列出全部的信息
-d:仅查看目录本身
- -a 示例,列出来所有的文件,包括以点开头的隐藏文件,1个点代表当前目录,2个点代表上一级目录
[root@localhost ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc
- -l 示例,列出了当前目录只有anaconda-ks.cfg这个文件,并且显示它的全部信息
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1241 12月 11 15:01 anaconda-ks.cfg
- -d示例,只显示
[root@localhost ~]# ls -d
.
- -al示例,表示查看当前目录所有文件以及他们的全部信息
[root@localhost ~]# ls -al
总用量 28
dr-xr-x---. 2 root root 135 12月 11 15:04 .
dr-xr-xr-x. 17 root root 224 12月 11 15:01 ..
-rw-------. 1 root root 1241 12月 11 15:01 anaconda-ks.cfg
-rw-------. 1 root root 724 12月 11 16:13 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
注:linux中的隐藏文件是以“ . ”开头的当前目录使用“ . ”表示,上一级目录使用“ … ”表示。
2.2 切换目录
- 切换目录
cd 路径
路径可以填写的内容
- 创建目录
- mkdir [-p] 目录名
-p :代表创建多级目录时使用。
创建一个名为test的目录
[root@localhost ~]# mkdir test
[root@localhost ~]# ls
anaconda-ks.cfg test
在test中创建多级目录 aa/bb
[root@localhost ~]# cd test
[root@localhost test]# mkdir -p aa/bb
[root@localhost test]# ls
aa
[root@localhost test]# cd aa
[root@localhost aa]# ls
bb
- 删除目录:
rmdir 目录名
只能删除空目录
[root@localhost ~]# rmdir test
rmdir: 删除 "test" 失败: 目录非空
[root@localhost ~]# cd test/aa
[root@localhost aa]# ls
bb
[root@localhost aa]# rmdir bb
[root@localhost aa]# ls
[root@localhost aa]#
- 删除非空目录:
rm [-rf] 目录名
-r 代表递归删除目录下的全部内容
[root@localhost test]# rm aa
rm: 无法删除"aa": 是一个目录
[root@localhost test]# rm -r aa
rm:是否进入目录"aa"? n
-f 不询问,直接删除
[root@localhost test]# rm -rf aa
[root@localhost test]# ls
[root@localhost test]#
- 复制目录
cp -r 来源目录 目标目录
-r 代表递归复制全部
[root@localhost test]# mkdir -p zz/xx //创建zz/xx多级目录
[root@localhost test]# ls
zz
[root@localhost test]# cd
[root@localhost ~]# ls
anaconda-ks.cfg test
[root@localhost ~]# cp -r test /usr //复制test目录到/usr目录中
[root@localhost ~]# cd /usr
[root@localhost usr]# ls //查看,usr中已经存在test目录
bin etc games include lib lib64 libexec local sbin share src test tmp
[root@localhost usr]#
- 移动、重命名目录
mv 目录名 新目录名
mv 目录名 路径
如果第二个参数不存在,就是重命名,如果第二个参数的路径存在,就是移动
- 移动到已经存在的参数下
[root@localhost test]# ls
vv
[root@localhost test]# mv vv ~
[root@localhost test]# ls
[root@localhost test]# cd
[root@localhost ~]# ls
- 已经存在的vv被重命名为ccc
[root@localhost ~]# mv vv ~/ccc
[root@localhost ~]# ls
anaconda-ks.cfg ccc test
[root@localhost ~]#
2.3文件的命令
- 创建文件
touch 文件名
touch 文件名1 文件名2
示例1
[root@localhost test]# touch a.txt
[root@localhost test]# ls
a.txt
示例2
[root@localhost test]# touch b.class c.doc
[root@localhost test]# ls
a.txt b.class c.doc
[root@localhost test]#
- 编辑文件
vi 文件名 查看文件(这时候是查看模式)
i | a | o 进入编辑模式。(编辑模式)
i 在当前光标处,进入编辑模式。
a 在当前光标后一格,进入编辑模式
o 在当前光标下一行,进入编辑模式
esc 退出编辑模式,回到查看模式
:从查看模式进入到底行命令模式
#:在底行命令模式下,输入“ wq:”保存并退出,输入“q!:”不保存并退出
在查看模式下,Shift+ZZ,可以快速保存并退出。
- 编辑文件的其他操作
#在底行命令模式下,可以输入的内容。
:set nu //查看文件的行号
to 行号 //快速跳转到输入的某一行
:set nonu //取消行号
直接在查看模式下输入
/具体内容 //类似Windows的Ctrl+F搜索文件中的具体内容所在位置,查看下一个可以输入n(代表next)
- 查看文件
cat 文件名 //从第一行开始查看文件内容,展示全部
示例1:
tac 文件名 //从最后一行开始展示
示例2
nl 文件名 //显示文件时,展示行号
示例3
more 文件名 //查看大文件时,可以一页一页的向下翻(按空格或回车),摁q快速退出
示例4:
less 文件名 //查看大文件时,可以任意的向上或者向下翻(鼠标中键滚动,上下键,PageUP和PageDown是翻页,摁q退出)
head 文件名 //只查看几行
tail 文件名 //只查看后几行
tail -f 日志文件 //监控日志
- 移动、重命名文件
mv 文件名 新文件名
mv 文件名 目录
- 复制文件
cp 文件 目录
- 删除文件
rm [-f] 文件名
-f:是否询问。
2.4 针对压缩包的操作
Linux中常用的压缩包,大多是 ” .tar “,“.tar.gz”,“tgz”的。
但是linux不仅仅针对tar类型的压缩包,也支持zip,rar这种windows下的压缩包
- 针对tar类型的压缩包操作
- 解压压缩包:
tar -[zxvf] 压缩包名称 [-C 路径]
-z 代表压缩包后缀是.gz的
-x 代表解压
-b 解压时,打印详细信息
-f 必须放在所有选项的最后,代表文件名称
-C 将压缩包解压到指定路径
- 打包压缩包:
tar [-zcvf] 压缩包名称 文件1 文件2 目录1 目录2.....
-c:代表打包
打包a.txt b.class c.doc到base.tar.gz压缩文件
[root@bogon test]# ls
a.txt b.class c.doc
[root@bogon test]# tar -zcvf base.tar.gz a.txt b.class c.doc
a.txt
b.class
c.doc
[root@bogon test]# ls
a.txt base.tar.gz b.class c.doc
[root@bogon test]#
创建kk目录,解压base.tar.gz到kk
[root@bogon test]# tar -zxvf base.tar.gz -C kk
a.txt
b.class
c.doc
[root@bogon test]# cd kk
[root@bogon kk]# ls
a.txt b.class c.doc
[root@bogon kk]#
- 针对zip压缩包
Linux默认不支持zip压缩包格式的。需要安装zip(打包),unzip(解压)
安装:
yum -y install zip
yum -y instal unzip
- 解压
unzip 压缩包名称
- 打包:
zip 压缩包名称 文件1 文件2 目录1 目录2 ...
压缩示例:
[root@localhost test]# zip base2.zip a.txt b.class c.doc
adding: a.txt (stored 0%)
adding: b.class (stored 0%)
adding: c.doc (stored 0%)
[root@localhost test]# ls
a.txt base2.zip base.tar.gz b.class c.doc kk
解压示例:
[root@localhost mm]# unzip base2.zip
Archive: base2.zip
extracting: a.txt
extracting: b.class
extracting: c.doc
[root@localhost mm]# ls
a.txt base2.zip b.class c.doc
[root@localhost mm]#
2.5、用户&用户组的操作
linux是一个多用户的操作系统,任何一个用户想要操作linux操作系统,必须向系统管理员申请一个账号才可以,以这个账号的省份去操作Linux。
用户的账号一方面可以帮助系统管理员追踪当前用户的操作,另一方面可以控制当前用户对系统资源访问。
2.51用户的操作:
- 创建用户:
useradd 用户名
[root@localhost mm]# useradd VV
[root@localhost mm]# cd /home
[root@localhost home]# ls
VV
- 设置密码:
passwd 用户名
[root@localhost home]# passwd VV
更改用户 VV 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
- 切换用户
- [root@localhost ~]# ——> root用户在本地登录,并且当前在~(用户)目录下,#代表的是超级管理员
- [VV@localhost root]$ ——> VV用户在本地登录,并且在~目录下,$代表普通用户
su 用户名
[root@localhost ~]# su VV
[VV@localhost root]$
[VV@localhost root]$ cd
[VV@localhost ~]$ pwd
/home/VV
- 删除用户
userdel [-r] 用户名
-r 代表删除用户的同时,删除该用户的HOME目录
[root@localhost ~]# userdel -r VV
[root@localhost ~]# cd /home
[root@localhost home]# ls
[root@localhost home]#
- 修改用户
usermod [-cgd] [选项指定的内容] 用户名
-c 代表commit,给用户添加一段注释
-g 代表group,可以修改用户的所在组
-d 代表指定用户的HOME
2.52用户组的操作
- 创建用户组
groupadd [-cgd] 用户组名
创建用户组并添加z1用户到里面
[root@localhost home]# groupadd test
[root@localhost home]# useradd z1
[root@localhost home]# usermod -g test z1
[root@localhost home]# groups z1
z1 : test
- 修改用户组
groupmod [-n] [选项指定的内容] 用户组名
[root@localhost home]# groupmod -n test01 test
[root@localhost home]# groups z1
z1 : test01
[root@localhost home]#
- 删除用户组
groupdel 组名
先把z1用户移除test01用户组,再删除
[root@localhost home]# groupdel test01
groupdel:不能移除用户“z1”的主组
[root@localhost home]# usermod -g root z1
[root@localhost home]# groups z1
z1 : root
[root@localhost home]# groupdel test01
[root@localhost home]#
2.6 文件权限的修改
在linux中输入ls -l 或者ll 查看文件和目录的详细信息。
示例:
[root@localhost ~]# ll
总用量 4
-rw-------. 1 root root 1241 12月 11 15:01 anaconda-ks.cfg
drwxr-xr-x. 3 root root 16 12月 11 19:41 ccc
drwxr-xr-x. 4 root root 86 12月 12 17:18 test
[root@localhost ~]#
test目录的第一个属性用“d”标识这个test是一个目录
anaconda-ks.cfg 第一个属性用“-”标识它是一个文件。
在linux文件详情的后面属性需要分为三组查看:
- rwx 代表文件拥有者的权限
- rwx 代表文件所属组用户的权限
- rwx 代表其他用户对当前文件的操作权限
- rwx作用到文件:
[r ]代表可读(read):可以读取,查看
[w ]代表可写(write):可以修改但是不代表可以删除该文件。删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
[x]代表可执行[execute]:可以被执行
- rwx作用到目录:
[r]代表可读(read):可以读取,ls查看目录内容
[w]代表可写(write):可以修改,目录内创建文件。删除+重命名目录
[x]代表可执行(excute):可以进入该目录
后续的第一个root:代表当前文件的拥有者
后续的第二个root:代表当前文件的所属组
后续分别为:文件的大小和最后修改时间
2.61 对文件的权限修改
使用chmod对文件权限进行修改,一种使用数字,一种使用符号
- 数字方式
chmod [-R] 777 文件|目录
-R 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限
chmod 在设置权限时,可以简单地使用三个数字分别对应 所有者/组和其他用户的权限
rwx 在这三个权限中r:4,w:2,x:1
示例:
[root@localhost ~]# su Andy
[Andy@localhost root]$ ll
ls: 无法打开目录.: 权限不够
[root@localhost ~]# su Andy
[Andy@localhost root]$ vi a.txt
摁i后,无法修改,对Andy用户是个只读文件
[root@localhost ~]# su Andy
[Andy@localhost root]$ vi a.txt
已经可以写了
修改777权限
- 符号方式
user:u,group:g,other:o,all:a(所有u,g,o)
read:r,write:w,other:x
赋予权限的方式:
添加:+
减掉:-
设定:=
chmod [-R] a+r,a+w 文件|目录
示例
设定为所有权限
去掉权限:
添加权限:
2.62 对文件的拥有者和所属组修改
//修改文件的拥有者和所属组
chown [-R] 拥有者:所属组 文件|目录
//修改文件的拥有者
chown [-R] 拥有者 文件 | 目录
//修改文件的所属组
chgrp [-R] 所属组 文件 | 目录
2.7 其他操作命令
- 进程的操作
ps -ef //查看全部正在运行的全部进程
ps -ef | grep 搜索的内容
杀死进程:
kill -9 pid
- 服务的操作
针对服务的启动,停止,重启,开机自动启动,禁止开机自动启动,查看服务状态。
systemctl start | stop | restart | enable | disable | status 服务名称
[root@localhost ~]# systemctl disable firewalld
- 查看端口号占用情况
想使用指定的命令需要实现下载netstat
yum -y install net-tools
查看端口号占用情况。
netstat -naop | grep 端口号
- 访问地址
curl 访问地址
- 查找文件
find 路径 -type f | grep profile
三、安装常用软件
3.1 安装JDK
下载地址:点击下载
- 通过Xterm的ftp拉取到linux中
- 解压压缩包,解压到/usr/local下
tar -zxvf 压缩包 -C /usr/local
[root@localhost tools]# tar -zxvf jdk-8u271-linux-x64.tar.gz -C /usr/local
-
将jdk目录名修改
-
配置环境变量
linux 提供了两种环境变量的文件
第一个是用户级别的环境变量,存放在:~/.bashrc
第二个是系统级别的环境变量,存放在:/etc/profile
如果想运行当前目录下的可执行文件,需要输入:./可执行文件名
- 进入/etc/profile下
[root@localhost bin]# vi /etc/profile
在最后的地方添加如下
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
保存,重新加载环境变量文件
[root@localhost bin]# source /etc/profile
查看jdk版本:
3.2 安装MySql
下载:https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
- 安装 wget
[root@localhost ~]# yum -y install wget
- 通过wget下载mysql存储库:
- 安装下载好的rpm包
rpm -Uvh rpm包
已经安装
如果想要卸载:
卸载:
rpm -e --nodeps rpm包
# rpm -e --nodeps mysql80-community-release-el7-3.noarch.rpm
查看rpm包:
rpm -qa | grep 内容
- 选择发行版本
原来默认是mysql8.0版本,这里选择mysql5.7版本
通过手动编辑修改发行版本
[root@localhost tools]# vi /etc/yum.repos.d/mysql-community.repo
1是启动,o是关闭,这里把mysql5.7的改为1,mysql8.0的改为0
查看默认版本已经是mysql5.7
4.安装mysql 社区版服务
[root@localhost tools]# yum -y install mysql-community-server
5、启动mysql
systemctl start mysqld.service
查看初始化密码
grep 'temporary password' /var/log/mysqld.log
初始密码
使用这个密码登录
# mysql -u root -p
修改密码,要求携带大写字母,小写字母,数字,特殊符号
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
- 开启远程连接,并使用图形化界面操作。
创建一个用户用来远程连接
mysql> GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
要想连接,需要关闭防火墙。
查看防火墙状态:
systemctl status firewalld
暂时关闭防火墙
systemctl stop firewalld
永久关闭防火墙
systemctl disable firewalld
连接成功。
3.3 安装tomcat
下载:https://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz
- 在linux中下载
- 解压压缩包到/usr/local
[root@localhost tools]# tar -zxvf apache-tomcat-8.5.61.tar.gz -C /usr/local
跳转到bin目录。
- 启动
./startup.sh
[root@localhost bin]# ./startup.sh
监听日志信息,已经启动成功
cd ../logs
tail -f catalina.out
- 测试
输入linux 的ip地址:8080
如 192.168.x.x:8080
出现以下画面,安装启动成功。
四、部署到SSM项目到Linux
注意:
- 项目要保证在windows下是没问题的,在考虑部署到Linux
- 将开发环境中的内容更改为测试环境
即:
a. 连接数据库的信息
b.存放文件的路径
c.日志文件存放的位置
d.项目路径问题 - 将maven项目打包
- 根据项目路径的不同,将项目部署到Tomcat中。
- 在部署到linux操作系统中后,一定要查看日志。
-
把数据库复制到新数据库
-
修改项目的中连接数据库的信息(新数据库的)
-
打包项目
-
拖到linux中
-
复制到tomcat指定目录
可以在次查看日志
-
在浏览器输入 :
IP地址:8080/项目名
如 192.168.x.x:8080/survey
即可进入项目