当前位置:   article > 正文

Linux安装及常用命令_linux bash config.vm.provision "shell" env

linux bash config.vm.provision "shell" env

Linux小白

1 Linux介绍

Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。

应用场景

  • 桌面应用
  • 后端服务器
  • 嵌入式
  • 云计算

2 虚拟机安装

2.1 Vagrant安装

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

https://www.vagrantup.com/downloads下载最新版Vagrant,由于Vagrant没有图形界面,所以安装后没有桌面快捷方式。
配置
vagrant的box默认下载用户的宿主目录\vagrant_box,环境变量配置如下图:
在这里插入图片描述
使用vagrant安装的虚拟机默认2个用户

  • 用户名:vagrant ,密码vagrant
  • 用户名:root,密码vagrant
    在这里插入图片描述

2.2 Virtualbox安装

VirtualBox 是一个免费开源的虚拟机,相对 VMware 来说更加小巧,个人比较喜欢。虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的。下载地址https://www.virtualbox.org/wiki/Downloads

配置
管理->全局设定->在这里插入图片描述
修改虚拟机的位置

2.3 centos7安装

进入Centos官网找要下载的版本https://vault.centos.org/

2.3.1 vagrantfile配置

1.初始化产生配置文件

vagrant init centos
  • 1

2.修改配置文件
Vagrantfile文件参考如下

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  (1..3).each do |i|
    config.vm.define vm_name = "s#{i}"  do |config|
        config.vm.provider "virtualbox" do |v|
            v.customize ["modifyvm", :id, "--name", vm_name]
	    v.customize ["modifyvm", :id, "--memory", "8192"]
            v.customize ["modifyvm", :id, "--cpus", "2"]
        end
        config.vm.box = "centos_v1"
        config.vm.hostname =vm_name
        config.ssh.username = "root"
        config.ssh.password = "vagrant"
							#		config.ssh.shell = "powershell"
							#config.ssh.shell = "bash -l"
        config.vm.network :private_network, ip: "192.168.56.7#{i}"
	config.vm.provision :shell, :path => "bootstrap.sh"
    end
  end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

在这里插入图片描述

3.bootstrap.sh

#!/usr/bin/env bash

# The output of all these installation steps is noisy. With this utility
# the progress report is nice and concise.

echo "Update /etc/hosts"
cat > /etc/hosts <<EOF
127.0.0.1       localhost

192.168.56.71 s1
192.168.56.72 s2
192.168.56.73 s2
EOF

echo "Disable iptables"
setenforce 0 >/dev/null 2>&1 && iptables -F

### Set env ###
echo "export LC_ALL=en_US.UTF-8"  >>  /etc/profile
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

在这里插入图片描述
4.查看本地box列表
在这里插入图片描述
5.添加box

vagrant box add [name] ./[name].box
  • 1

6.删除box

vagrant box remove [name]
  • 1

7.安装虚拟机

vagrant up  //启动全部虚拟机
vagrant up s1 //启动具体一个虚拟机
vagrant halt //关闭所有虚拟机
  • 1
  • 2
  • 3

8.测试连接
使用MobaXterm连接刚才安装的3个服务器192.168.56.71,72,73

ip addr //查看ip地址
hostname //服务器名
  • 1
  • 2

测试结果如图

在这里插入图片描述
此时虚拟机安装完成

2.4 自定义box

1.安装vim
标准的虚拟机box没有vim

yum install vim -y  //安装vim
  • 1

2.打包当前虚拟机,产生一个自定义box

vagrant halt s1  //关闭虚拟机
vagrant package --base s1 --output centos_v2.box  //打包当前虚拟机
  • 1
  • 2

3.把centos_v2添加到vagrant中
在Vagrantfile文件中修改
在这里插入图片描述
4.使用安装了vim的box安装新的虚拟机

执行vagrant up 
  • 1

3 Linux目录结构

在这里插入图片描述

  • 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)用于存放运行时需要改变数据的文件

4 Linux常用命令

4.1 文件或目录常用命令

1.echo命令

echo hello linux >>a.txt   //追加
echo hello linux > a.txt    //覆盖
  • 1
  • 2

2.ls(list)命令

ls -la  //详细查看所有文件和目录
ls -l   //详细列表    ll=ls -l
ls -a   //显示隐藏的文件、目录
  • 1
  • 2
  • 3

3.man命令

man [命令名]  //查看所有关于该命令的信息
man ls   
  • 1
  • 2

4.cd(change directory)命令

cd ~    //进入用户的宿主目录
cd ..   //进入上级目录
cd -    //进入上一个历史目录
  • 1
  • 2
  • 3

5.pwd(print working directory) 命令

pwd    //显示当前工作目录
  • 1

6.su(switch user)命令

su root  //切换用户root
  • 1

7.mkdir(make directoriy)命令

mkdir /home/vagrant/java-project/src    //创建目录
mkdir -p /home/vagrant/java-project/src //-p自动产生父目录
  • 1
  • 2

8.tree命令

yum install -y tree   //安装tree
tree [目录名]  //打印目录树
  • 1
  • 2

在这里插入图片描述
9.touch命令

touch Hello.java   //创建空文件
  • 1

10.cp(copy)命令

cp java-project/src/main/java/Hello.java ./java-project/src/test/java/
//拷贝main目录的java目录下Hello.java文件到test目录的java目录下
cp -r  java-project/resources/ java-project/src/main/   //-r递归拷贝
  • 1
  • 2
  • 3

在这里插入图片描述
11.rm(remove)命令

rm java-project/src/test/java/Hello.java   //删除文件或目录
rm -r  //递归删除  
rm -f  //强制删除
  • 1
  • 2
  • 3

在这里插入图片描述
12.mv(move)命令

mv java-project/src/main/java/ java-project/src/  //移动main目录下的Java目录到src目录下
  • 1

在这里插入图片描述

  • mv也可以修改文件名
mv java-project/src/java/Hello.java java-project/src/HelloWorld.java  //修改Hello.java为HelloWorld.java
  • 1

在这里插入图片描述
13.cat(catenate)命令

cat HelloWorld.java    //显示文本文件内容
cat a.txt > b.txt      //把a.txt内容覆盖到b.txt
cat a.txt >> b.txt     //把a.txt追加到b.txt
  • 1
  • 2
  • 3

在这里插入图片描述
14.more和less命令

  • 分页显示文本文件内容
  • 区别:less命令需要按 q 退出

15.head命令

 head -n 10 HelloWorld.java   //显示前10行内容
  • 1

16.tail命令

tail -n 10 HelloWorld.java      //显示后10行内容
tail -n 20 -f HelloWorld.java   //循环读取(fellow,即时读取)
  • 1
  • 2

17.wc(word count)命令

wc -w -l -m a.txt 
  • 1
  • -w:统计文本字数
  • -l:统计文本行数
  • -m:统计文本字节数

18.find命令

find -name He*.java   //查找文件
  • 1

在这里插入图片描述
19.grep(global regular expression print)命令
全局正则表达式输出

grep h HelloWorld.java -n  //在指定的文本文件中查找指定的字符串
  • 1
  • -n:显示行数
  • -i:不区分大小写
  • -o:只取出匹配字串
    在这里插入图片描述

20.ln(link)命令

ln -s 目标地址 软链接名      //创建软连接
echo "Hello kdx" >> xing  //通过软连接添加内容
cat xing                  //通过软连接查看文件内容
  • 1
  • 2
  • 3

在这里插入图片描述

4.2 系统命令

1.du

  • 显示指定的文件(目录)已使用的磁盘空间
du -h -s   //-h显示大小  -s显示总的大小
  • 1

2.free

  • 显示当前内存和交换空间的使用情况

3.netstat

  • 显示网络状态信息,查看端口占用情况
yum install net-tools -y   //安装netstat
netstat -tunpl             //查看所有端口占用情况
  • 1
  • 2
  • -a 显示所有连接和监听端口
  • -t (tcp)仅显示tcp相关选项
  • -u (udp)仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转化成数字。
  • -p 显示建立相关链接的程序名

4.ifconfig

  • 网卡网络配置详解

5.ping

  • 测试网络的连通性

6.top

  • 显示当前系统中耗费资源最多的进程 (实时)

7.ps

  • 显示瞬间的进程状态(快照)
ps -aux
//管道 命令1 | 命令2 把命令1的结果给命令2作为参数
ps -aux | grep tail
  • 1
  • 2
  • 3
  • -e /-A 显示所有进程,环境变量
  • -f 全格式
  • -a 显示所有用户的所有进程(包括其它用户)
  • -u 按用户名和启动时间的顺序来显示进程
  • -x 显示无控制终端的进程

8.kill

  • 根据进程ID(pid)杀死进程
kill -9 [pid]
  • 1

4.3 压缩和打包命令

1.tar

  • 打包目录成tar文件
  • 整合gzip和bzip2压缩
    -c 建立一个压缩文件的参数指令(create)
    -x 解开一个压缩文件的参数指令(extract)
    -z 是否需要用 gzip 压缩
    -j 是否需要用 bzip2 压缩
    -v 压缩的过程中显示文件(verbose)
    -f 使用档名,在 f 之后要立即接档名(file)

1.1 打包和压缩

tar -cvf java-project.tar ./java-project/         //打包java-project目录
tar -xvf java-project.tar                         //解压
  • 1
  • 2

1.2 以gzip方式压缩和解压

tar -czvf java-project.tar.gz ./java-project      //z表示以gz格式压缩
tar -zxvf java-project.tar.gz                     //解压
  • 1
  • 2

1.3 以biz2方式压缩和解压

tar -cjvf java-project.tar.bzip2 ./java-project   //压缩
tar -xjvf java-project.tar.bzip2                  //解压
  • 1
  • 2

2.gzip

  • 把文件和目录压缩成gz格式
gzip OAuth2Config.java                           //压缩
gzip -d OAuth2Config.java.gz                     //解压
  • 1
  • 2

3. bzip2

  • 把文件和目录压缩成bzip2格式
bzip2 OAuth2Config.java                          //压缩
bzip2 OAuth2Config.java.bz2 -d                   //解压
  • 1
  • 2

4.4 vim命令

  • vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。

1.vim模式

  • vim三种模式关系如下
    在这里插入图片描述

2.底行命令

  • :wq保存退出
  • :q! 不保存退出
  • :q 退出,如果内容有改变不能退出
  • :set number 显示行号
  • :set nonumber 隐藏行号
  • :w filename 另存为文件
  • :e!撤销所有操作
  • :行号:调到指定的行

3.移动命令

  • w b 下一个,上一个单词
  • 0, $ 行首,行尾
  • gg 第一行
  • G 最后一行
  • xG到x行

4.替换命令

  • :1,$s/private/public/g 将第一行到追后一行的private替换为public
  • :1,$s/public/protected/c 将第一行到追后一行的public替换为protected(有提示)

5.编辑命令

  • x删除一个字符
  • dd 删除一行
  • yy复制一行
  • p粘贴
  • 输入v进入选择模式,选择内容,输入y复制,调到要黏贴的位置输入p粘贴
  • 输入u 撤销操作
  • 在一般模式中输入/8080查找8080,输入n查找下一个
  • 在一般模式输入r+替换的字符,执行替换

4.5 用户管理

  • linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。

1.用户管理的配置文件

  • 保存用户信息的文件:/etc/passwd
  • 保存密码的文件:/etc/shadow
  • 保存用户组的文件:/etc/group
  • 保存用户组密码的文件:/etc/gshadow
  • 用户配置文件:/etc/default/useradd

2./etc/passwd格式

用户名用户登录系统的用户名
密码密码位
UID用户标识号
GID默认组标识号
描述信息存放用户的描述信息
宿主目录用户登陆系统的默认目录,默认是在/home/下
命令解析器用户使用的Shell,默认是bash

用户分类:

  • 超级用户:(root,UID=0)
  • 普通用户:(UID在1000以上)
  • 伪用户:(UID在1到999)
    • 系统和服务相关的:bin、daemon、shutdown等
    • 进程相关的:mail、news、games等
    • 伪用户不能登陆系统,而且没有宿主目录

3./etc/shadow格式

  • 密码配置
用户名登陆系统的用户名
密码加密密码
最后一次修改时间用户最后一次修改密码距现在的天数,从1970-1-1起
最小时间间隔两次修改密码之间的最小天数
最大时间间隔密码有效天数
警告时间从系统警告到密码失效的天数
账号闲置时间账号闲置时间
失效时间密码失效的天数
标志标志

4./etc/group格式

  • 每个用户至少属于一个用户组
  • 如果创建用户,没有指定组,此用户指定跟用户名同名组
  • 每个用户组可以包含多个用户
  • 同一个用户组的用户享有该组共有的权限
组名用户所在的组
组密码密码位,一般不使用
组密码组标识号
组内用户列表属于该组的用户列表

5.用户和组的管理命令
(1)用户管理命令

  • useradd:添加用户
    • -u 指定组ID(uid)
    • -g 指定所属的组名(gid)
    • -G 指定多个组,用逗号“,”分开(Groups)
    • -c 用户描述(comment)
    • -e 失效时间(expire date)
  • usermod:修改用户
    • -l 修改用户名 (login)usermod -l a b(b改为a)
    • -g 添加组 usermod -g sys tom-G添加多个组 usermod
    • -G sys,root tom–L 锁定用户账号密码(Lock)
    • –U 解锁用户账号(Unlock)
  • userdel:删除用户
    • -r 删除账号时同时删除目录(remove)

(2)组管理命令

  • 添加组:groupadd
    • -g 指定gid
  • 修改组:groupmod
    • -n 更改组名(new group)
  • 删除组:groupdel
  • groups 显示用户所属组

4.5.1 实例

1.添加一个demo用户,设置它属于users组,并添加注释信息

useradd demo
usermod -g users demo
usermod -c "hello demo" demo

#等于上面三个命令
useradd -g users -c "hello demo" demo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行
在这里插入图片描述
结果
在这里插入图片描述
2.设置密码

passwd demo
  • 1

结果
在这里插入图片描述
登录demo用户
在这里插入图片描述
登录成功
在这里插入图片描述

3.将demo添加到sys和root组中

usermod -G sys,root demo
  • 1

结果
在这里插入图片描述
4.把demo从sys组中删除

gpasswd -d demo sys
  • 1

结果
在这里插入图片描述
5.添加一个hello组

groupadd hello
  • 1

执行vim group
结果
在这里插入图片描述
6.修改hello组为hi组

groupmod -n hi hello
  • 1

执行vim group
结果
在这里插入图片描述
7.将demo添加到hi组

usermod -G hi demo
groups demo
  • 1
  • 2

结果
在这里插入图片描述

4.6 权限管理

1.权限表示符号
在这里插入图片描述
示例
在这里插入图片描述

  • 第1位:文件类型(d 目录,- 普通文件,l 链接文件)
  • 第2-4位:所属用户权限,用u(user)表示
  • 第5-7位:所属组权限,用g(group)表示
  • 第8-10位:其他用户权限,用o(other)表示
  • 第2-10位:表示所有的权限,用a(all)表示

三种基本权限

  • r 读权限(read)4
  • w 写权限(write)2
  • x 执行权限 (execute)1

2.chmod命令
chmod修改文件权限命令(change mode)

  • 参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)

两种方式

  • 例如:chmod u+x a.txt,给a.txt增加当前用户的执行权限
  • 用数字来表示权限(r=4,w=2,x=1,-=0) 例如:chmod 750 b.txt :表示b.txt的权限当前用户是rwx,当前用户的组rx,其他用户没有权限
su vagrant
//设置~/vagrant目录让其他人可以进入
chmod o+x vagrant
//这时我们切换jack,可以执行(进入)~/vagrant
su jack 
cd /home/vagrant
//设置~/vagrant的目录的其他用户有读写执行权限
su vagrant/root
chmod o+rwx ~/vagrant

//修改OAuth2Config.java的权限,让所有人有读写执行
su root/vagrant
chmod 777 ~/OAuth2Config.java
//修改OAuth2Config.java的权限,当前用户
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述

  • 把www添加到jack组

在这里插入图片描述
3.chown命令

  • 改变文件所属用户,文件所属的组
chown root:jack OAuth2Config.java   //使用www查看OAuth2Config文件,因为www属于jack,所以可以查看
  • 1

![在这里插入图片描述](https://img-blog.csdnimg.cn/868744ddde314ff6aab63dc75e3e1728.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/629762
推荐阅读
相关标签
  

闽ICP备14008679号