1、Linux简介: Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机
2.应用场景分析:
2.1.桌面应用
Linux在桌面场景应用不多,桌面一般还是使用Windows系统
2.2.服务端(后端)
电商,门户网站后端服务,一般采用linux作为操作系统,java,c++,python,go,运行和部署在linux服务
2.3.嵌入式
linux最小和最核心的版本只有几百K,智能物联设备方便嵌入式开发
2.4.云计算
运维和部署场景,使用Linux
二
- Vagrant
- 虚拟机:JVM,java虚拟机
- Vagrant是什么
Vagrant是一个比较流行的虚拟机管理软件,使用Vagrant 可以让我们用命令直接从云上下载虚拟机的镜像,然后进行创建和管理等,vagrant集成了主流的虚拟机管理工具vmvare 和 virtualbox,默认使用virtualbox
vagrant 的精髓在一个 Vagrantfile 里面,和 docker 的 Dockerfile 功能上一样。我们只需要把需要安装部署的步骤写在 Vagrantfile 里面,便可以实现轻松部署。vagrant 还支持把当前系统做成一个.box 后缀命名的镜像,类似 docker 的 image,可轻松实现环境的移植。
vagrant 可以把配置好的环境打包成一个box,分享给其他人直接使用。
在容器流行之前,Vagrant 就是用来编排虚机和自动部署开发环境Docker/Kubernetes 之后,直接用容器来编排应用确实更简单。但是还有一些工作,例如容器平台自身的安装,多节点集群的部署测试等,更方便用虚拟机解决。
-
- box和虚拟机的关系
.类->对象
.box->虚拟机
-
- vagrant实战
1.4.1安装Virtualbox
更改默认虚拟电脑位置,避免出现C盘位置不够的情况
1.4.2安装vagrant
配置环境变量,修改默认的宿主目录
- 虚拟机安装
2.1下载box,并配置初始化文件
2.2列表本地box输入指令vagrant box lis
t
2.3添加box,把刚下载的的box添加到vagrant中
2.4重新再执行列表中输入vagrant box list得到如图
如图现有一个虚拟机
2.5安装虚拟机,在执行列表中输入vagrant up如图
2.6测试连接用mobaxterm连接测试刚安装的三个服务器
3.自定义box
3.1标准虚拟机里没有vim,所以需要输入指令yum install vim -y,添加vim
3.2关闭虚拟机,打包虚拟机s1,结果如图所示
3.3删除所有虚拟机
3.4把centos_v2添加到vagrant中
3.5修改Vagrantfile,设置box使用centos_v2
3.6使用已经安装了vim的box安装新的虚拟机\
进入虚拟机查看 vim
三 Linux的常用命令
1.基本的目录机构
bin (binaries)存放二进制可执行文件
sbin (super user binaries)存放二进制可执行文件,只有root才能访问
etc (etcetera)存放系统配置文件
usr (unix shared resources)用于存放共享的系统资源
home 存放用户文件的根目录root 超级用户目录
dev (devices)用于存放设备文件
lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt (mount)系统管理员安装临时文件系统的安装点
boot 存放用于系统引导时使用的各种文件
tmp (temporary)用于存放各种临时文件
var (variable)用于存放运行时需要改变数据的文件
2.vagrant默认的挂载目录
Vagrantfile所在目录,默认挂载到虚拟机/vagrant
3.常用命令
3.1.快捷键
Ctrl+L快速清屏=clear命令
tab 自动补全
上下的方向键为历史命令=history
Ctrl+c历史进程
Ctrl+R搜索历史命令
\:命令结束表示换行
3.2打印命令
echo hello linux
echo hello v3 > v3.txt #覆盖
echo hello v3 >> v3.txt #追加
3.3 IS命令
ls -la #详细查看,所有文件和目录
3.4 man命令
ctrl+f:下一页
ctrl+b:上一页
:q退出
4:文件和目录常用命令
4.1进入目录
#绝对路径
[root@s1 ~]# cd /vagrant
[root@s1 vagrant]# ls
bootstrap.sh centos_v1.box centos_v2.box centos_v3.box lua-demo Vagrantfile
#进入用户的宿主目录
cd ~
cd .. #进入上级目录
#./ 不写,都是代表当前目录
cd - 进入上一个历史目录
[root@s1 man]# cd ~
[root@s1 ~]# pwd
/root
[root@s1 ~]# cd -
/usr/local/share/man
[root@s1 man]# pwd
/usr/local/share/man
[root@s1 man]#
4.2 pwd
显示当前工作目录(print working directory)
[root@s1 vagrant]# cd ~
[root@s1 ~]# ls
anaconda-ks.cfg post_install.log v3.txt
[root@s1 ~]# pwd
/root
4.3 使用vagrant登录
使用vagrant安装的虚拟机默认2个用户
- 用户名:vagrant ,密码vagrant
- 用户名:root,密码vagrant
4.su
切换用户
[vagrant@s1 /]$ cd /root/
-bash: cd: /root/: Permission denied #使用vagrant不能访问/root
[vagrant@s1 /]$ su root
Password:
[root@s1 /]# cd /root/
5.mkdir
创建目录(make directoriy)
-p 父目录不存在情况下先生成父目录 (parents)
[vagrant@s1 ~]$ cd ~ #进入宿主目录
[vagrant@s1 ~]$ ll
total 0
[vagrant@s1 ~]$ mkdir /home/vagrant/java-project/src #创建目录
mkdir: cannot create directory ‘/home/vagrant/java-project/src’: No such file or directory
[vagrant@s1 ~]$ mkdir -p /home/vagrant/java-project/src #-p自动产生父目录
[vagrant@s1 ~]$ ll
total 0
drwxrwxr-x 3 vagrant vagrant 16 Jul 6 11:16 java-project
[vagrant@s1 ~]$ cd java-project/
[vagrant@s1 java-project]$ ll
total 0
drwxrwxr-x 2 vagrant vagrant 6 Jul 6 11:16 src
[vagrant@s1 java-project]$
6.tree
以树列表目录
su root #切换管理员
yum install -y tree
[root@s1 vagrant]# su vagrant
[vagrant@s1 ~]$ tree java-project
java-project
├── resources
│ └── db
└── src
7.touch
[vagrant@s1 src]$ touch Hello.java
[vagrant@s1 src]$ ll
total 0
-rw-rw-r-- 1 vagrant vagrant 0 Jul 6 14:01 Hello.java
[vagrant@s1 src]$
8.cp
拷贝文件,目录
- -r:递归拷贝
-
[vagrant@s1 ~]$ cp java-project/src/Hello.java ./java-project/src/main/java/ [vagrant@s1 ~]$ tree java-project/ java-project/ ├── resources │ └── db └── src ├── Hello.java ├── main │ └── java │ └── Hello.java └── test
递归拷贝
-
[vagrant@s1 ~]$ cp -r java-project/resources/ java-project/src/main/ [vagrant@s1 ~]$ tree java-project/ java-project/ ├── resources │ └── db │ └── jdbc.properties └── src ├── main │ ├── java │ │ └── Hello.java │ └── resources │ └── db │ └── jdbc.properties └── test 8 directories, 3 files
9.rm
-
删除文件或者目录
- -r:递归删除
- -f:强制删除
-
[vagrant@s1 ~]$ rm java-project/src/Hello.java [vagrant@s1 ~]$ tree java-project/ java-project/ ├── resources │ └── db └── src ├── main │ └── java │ └── Hello.java └── test
10.mv
移动文件和目录
[vagrant@s1 ~]$ mv java-project/resources/ java-project/src/main/
[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
├── main
│ ├── java
│ │ └── Hello.java
│ └── resources
│ └── db
│ └── jdbc.properties
└── test
6 directories, 2 files
mv可以修改文件名
[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
├── main
│ ├── java
│ │ └── Hello.java
│ └── resources
│ └── db
│ └── jdbc.properties
└── test
6 directories, 2 files
[vagrant@s1 ~]$ mv java-project/src/main/java/Hello.java java-project/src/main/java/HelloWorld.java
[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
├── main
│ ├── java
│ │ └── HelloWorld.java
│ └── resources
│ └── db
│ └── jdbc.properties
└── test
6 directories, 2 files
11.cat
显示文本文件内容
cat OAuth2Config.java
cat a.txt > b.txt #把a.txt内容覆盖到b.txt
cat a.txt >> b.txt #吧a.txt追加到b.txt
12.more,less
more OAuth2Config.java
less OAuth2Config.java
13.head
- -n:显示前几行内容
14.tail
- -n 显示后几行数据
- -f b.log 循环读取(fellow,即时读取)
tail -n 10 OAuth2Config.java
场景1
启动两个session
在其中一个session追加内容
[vagrant@s1 ~]$ echo "hello 1111" >> OAuth2Config.java
[vagrant@s1 ~]$ echo "hello aaaaa" >> OAuth2Config.java
[vagrant@s1 ~]$ echo "hello bbbbb" >> OAuth2Config.jav
在另一个session中,可以刷新最新的日志
tail -n 20 -f OAuth2Config.java
15.wc
统计文本的行数、字数、字符数(word count)
- -m 统计文本字节数
- w 统计文本字数
- -l 统计文本行数
echo "hello java welcome to beijing" > a.txt
wc -w -l -m a.txt
16.find
查找文件
find -name Hello*.java
[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
├── java -> app
├── main
│ ├── java
│ │ └── HelloWorld.java
│ └── resources
│ └── db
│ └── jdbc.properties
└── test
6 directories, 3 files
[vagrant@s1 ~]$ find -name Hello*.java
./java-project/src/main/java/HelloWorld.java
[vagrant@s1 ~]$ find -name jdbc.*
./java-project/src/main/resources/db/jdbc.properties
17.grep
查找文本
- -n显示行数
- -i不区分大小写
18.in
格式
ln -s 目标地址 文件名
创建软连接
ln -s /home/vagrant/java-project/src/main/java/HelloWorld.java app
echo "hello spring" >> app #通过软连接添加内容
cat app #通过软连接查看文件内容