Linux

文章介绍了Linux作为开源操作系统在桌面、服务端、嵌入式和云计算领域的应用。接着,重点讲解了Vagrant这一虚拟机管理工具,如何简化虚拟机的创建和部署,以及Vagrantfile在自动化部署中的作用。此外,还列举了Linux常用命令,包括目录结构、文件操作和命令行快捷方式。
摘要由CSDN通过智能技术生成

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

  1. Vagrant
    1. 虚拟机:JVM,java虚拟机
    2. Vagrant是什么

Vagrant是一个比较流行的虚拟机管理软件,使用Vagrant 可以让我们用命令直接从云上下载虚拟机的镜像,然后进行创建和管理等,vagrant集成了主流的虚拟机管理工具vmvare 和 virtualbox,默认使用virtualbox

vagrant 的精髓在一个 Vagrantfile 里面,和 docker 的 Dockerfile 功能上一样。我们只需要把需要安装部署的步骤写在 Vagrantfile 里面,便可以实现轻松部署。vagrant 还支持把当前系统做成一个.box 后缀命名的镜像,类似 docker 的 image,可轻松实现环境的移植。

vagrant 可以把配置好的环境打包成一个box,分享给其他人直接使用。

在容器流行之前,Vagrant 就是用来编排虚机和自动部署开发环境Docker/Kubernetes 之后,直接用容器来编排应用确实更简单。但是还有一些工作,例如容器平台自身的安装,多节点集群的部署测试等,更方便用虚拟机解决。

    1. box和虚拟机的关系

.类->对象

.box->虚拟机

    1. vagrant实战

1.4.1安装Virtualbox

更改默认虚拟电脑位置,避免出现C盘位置不够的情况

1.4.2安装vagrant

配置环境变量,修改默认的宿主目录

  1. 虚拟机安装

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 #通过软连接查看文件内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值