初识Linux
Linux的安装与使用
系统与设置命令
Linux的目录管理
能够在虚拟机中安装centos7
管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。
管理与配置内存、
决定系统资源供需的优先次序、
控制输入设备与输出设备、
操作网络与管理文件系统等基本事务。
操作系统也提供一个让用户与系统交互的操作界面。
桌面操作系统
windows系列,macos,linux
服务器操作系统
linux,windows server
嵌入式操作系统
linux
移动设备操作
linux(安卓、华为鸿蒙),IOS
Linux是一套免费使用和自由传播的类Unix操作系统。
是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。
它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
我们使用的是CentOS,它是一个基于readhat(收费)的免费开源的操作系统,特点是:主流、免费、更新方便
虚拟机是运行在操作系统上的一个软件,在这个软件中可以安装操作系统。常见的虚拟机有VMware和VirtualBox
下载VMware-workstation-full-15.xx版本
注册码和下载地址百度搜索
- 打开.exe文件, 即可开始安装,点击下一步
接受许可协议
- 安装位置默认在C盘下,安装路径尽量不要有中文,点击更改可以更换安装目录
- 点击下一步,等待安装
这里将检查更新和提升计划打勾,方便日后产品有新特性可以第一时间体验
- 点击安装,进入安装环节
安装进行中…
- 安装成功
注意:
虚拟软件安装完成后会在 \控制面板\网络和Internet\网络连接 下多出来两个虚拟网卡VMware Network Adapter VMnet1和VMware Network Adapter VMnet8
VMware Network Adapter VMnet1这是用于与虚拟网络进行通信的虚拟网卡**:**HostNAT
在我们的虚拟机中有三种模式,分别对应仅主机、桥接、nat模式分别对应0、1、8如下
VMnet0:这是VMware用于虚拟桥接网络下的虚拟交换机VMnet1:这是VMware用于虚拟Host-Only网络下的虚拟交换机VMnet8:这是VMware用于虚拟NAT网络下的虚拟交换机
而上面的VMware Network Adapter VMnet1和VMware Network Adapter VMnet8就是对应我们的VMnet1和VMnet8,分别是nat模式和仅主机模式 我们在当前环境中将使用默认的桥接模式
NAT模式可以提供访问外网的能力。
引言
开启虚拟化选项能够使我们在电脑中安装虚拟机,比如VirtualBox,它能够让我们在一台电脑中虚拟化出另一个工作环 境,如果不开启虚拟机支持,我们在启动虚拟机的时候会报错,所以,我们在正式启动虚拟机之前开启虚拟化技术
不开启虚拟化的报错信息如下
我们在创建虚拟机的时候如果不开启虚拟化,会报下面的一个错误,此时,我们就要根据下面的步骤去开启硬件的 虚拟化支持
注意
目前大部分硬件版本都支持虚拟化的开启,只有很少的Blos硬件不支持如果遇到不支持的VMware是无法使用的。
开启虚拟化的步骤:
1、开机(或重启)时进入Blos
注意:不同计算机使用的快捷键不同例如F2、F12、DEL、ESC等键就可以进入到BIOS
进入到BIOS后,找到Configuration选项或者Security选项,然后选择Virtualization,或者Intel Virtual Technology,就可以开始设置了
这里以ThinkPad为例
2、VirtualizationIntel Virtual Technology设置为Enabled启用
3、在保存BIOS(F10保存)设置之后,重启计算机。
此时,虚拟化支持就全部设置完毕了,我们在创建虚拟机的时候就不在报上面的错了。
官方镜像:https://www.centos.org/download/
阿里云镜像:http://mirrors.aliyun.com/
搜狐镜像:http://mirrors.sohu.com/
163镜像:http://mirrors.163.com/
清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/centos
重启大学镜像:http://mirrors.cqu.edu.cn/CentOS/
- 安装完VMware后,双击桌面图标,创建新的虚拟机,如下图:
- 使用推荐安装
3) 选择稍后安装操作系统,后续我们需要做一些相关配置
4) 选择操作系统类型
客户机操作系统:选择Linux 版本:选择CentOS7 64位
5) 开始新建虚拟机
虚拟机名称可以自定义(注意:不要出现特殊字符即可)
虚拟机运行文件路径选择本地磁盘路径(注意:磁盘空间尽量要大写,因为一个虚拟机的运行文件大约要在4G以 上)
6) 设置磁盘容量,根据自己的需要设置此处我们设置为默认
7) 选择自定义硬件,主要设置CentOS的镜像点击【自定义硬件】
选择硬件【cd/dvd】,在【使用ISO镜像文件】中选择我们在sohu镜像源下载的镜像
CentOS-7-x86_64-DVD-1810.iso文件
设置完成后点击【关闭】
回到【新建虚拟机向导】页面,点击完成即可配置完毕。
1点击箭头方向即可启动我们的VMware
2、设置语言
在第一步设置完成后,我们一直等待,即可来到语言设置界面 此处我们设置【中文】,点击继续
3、设置安装信息
将下面带有【感叹号图标】的内容进行设置,比如时间和键盘,可根据自己的需要进行初始化设置,此处我们设置 下CentOS的桌面,继续往下看…点击软件选择
在软件选择安装我们的桌面,此处选择GNOME桌面
4、点击开始安装
5、配置用户信息
此处设置root账号密码,我们设置为root,暂时不创建新的用户(进入到欢迎页面的时候会提示我们创建用户)
设置密码root!!!!!!统一一下
设置完毕后不在有【感叹号图标】警告提示了
执行重启操作
6、重启后配置许可
配置语言、账户、时区
在上面,我们成功的将CentOS镜像安装到了我们的虚拟机上,可是这个时候,虚拟机还没有配置IP信息,为了后面开发 方便,我们需要设置一个静态IP
1.NAT模式设置
首先设置虚拟机中NAT模式的选项,打开VMware,点击“编辑”下的“虚拟网络编辑器”,设置NAT参数
注意:
VMware Network Adapter VMnet8保证是启用状态
2、设置静态ip
输入su root后提示输入密码此时输入上文配置的密码即可。(上文配置的密码是root)
Shell
su root
Shell
vi /etc/sysconfig/network-scripts/ifcfg-ens33
按下i键启用编辑
添加如下信息,并按上图修改BOOTPROTO和ONBOOT的值
Shell
IPADDR=192.168.23.129
NETMASK=255.255.255.0
GATEWAY=192.168.23.2
DNS1=114.114.114.114
DNS2=223.5.5.5
配置说明
IPADDR设置ip地址
NETMASK设置子网掩码
GATEWAY设置网关
BOOTPROTO设置为静态static
ONBOOT设置为true在系统启动时是否激活网卡
执行保存 按下esc 再输入:wq!回车
3.重启网络
Shell
systemctl restart network
4.查看ip
Shell
ifconfig
如上图所示,我们配置的静态IP起作用了,目前是192.168.23.129
如果想在虚拟机中访问网络,增加一块NAT网卡
1)【虚拟机】–【设置】–【添加】
设置为NAT模式,如下图
此时,我们通过虚拟机的浏览器访问www.baidu.com
linux没有windows中盘符的概念,只有一个根目录/,所有的文件都在他下面
以下几个命令必须在root账户下使用,切换到root账户的命令
su root
创建用户: useradd (选项)
Shell
$ useradd jack //创建一个名为jack的用户
用户名用户口令: passwd (选项)
Shell
$ passwd jack //修改jack用户的密码,新密码由字母+数字组成,长度大于8
用户名修改用户: usermod 选项 用户名
Shell
$ usermod -l tom jack //把用户名jack改为tom
删除用户: userdel (选项) 用户名
Shell
$ userdel tom //删除tom
创建用户组: groupadd (选项)
Shell
$ groupadd kaifa //添加开发组
用户组名修改用户组: groupmod(选项)
Shell
$ groupmod -n kaifazu kaifa //kaifa修改为kaifazu
用户组名查询用户所属组:groups 用户名
Shell
$ groups root
删除用户组: groupdel 用户组名
Shell
$ gropudel kaifazu //删除kaifazu
语法:gpasswd (可选项)组名
gpasswd 是 Linux 下的管理工具,用于将一个用户添加到组或者从组中删除。
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
Shell
$ groupadd kaifazu //创建一个组,组名叫:kaifazu
$ useradd user1 //创建一个用户,叫user1
$ useradd user2 //创建一个用户,叫user2
$ useradd user3 //创建一个用户,叫user3
$ gpasswd -a user1 kaifazu //把user1添加到kaifazu
$ gpasswd -a user2 kaifazu //把user2添加到kaifazu
$ gpasswd -a user3 kaifazu //把user3添加到kaifazu
$ grep 'kaifazu' /etc/group //查询kaifazu下面的用户
date [参数选项]
参数选项:
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
–help:在线帮助;
–version:显示版本信息
Shell
$ date //查询当前日期:2020年 05月 29日 星期五 22:56:14 CST
$ date -d "2020-09-09" //查询20200909的日期: 2020年 09月 09日 星期三 00:00:00 CST
显示当前登录用户的信息
Shell
$ logname
格式:su 用户名
切换后退出用户 ctrl+d
查看当前用户的详细信息(用户id,群组id,所属组)
Shell
$ id
sudo [参数选项] 提高普通用户的操作权限
参数选项:
–V 显示版本编号
–h 会显示版本编号和指令的使用方式说明
–l 显示出自己的权限
–v 超出N分钟没有使用,要求再次输入密码(默认5分钟)
–k 下一次执行 sudo 时问密码
–s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
–H 将环境变数中的 HOME 指定为要变更身份的使用者HOME目录
sudo command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
top 实时显示所有的进程信息
top – c 实现显示所有的进程信息(显示完整命令)
top –p PID 实时显示指定进程的信息结束监控快捷键:q
ps [options] [–help] 查看进程信息
参数选项:
-A:进程信息信息(部分)
-u : 显示指定用户信息
-ef :显示所有进程信息(完整)
kill 进程PID 杀死指定进程
kill -9 进程PID 彻底杀死指定进程
kill -9 $(ps –ef | grep 用户名) 杀死指定用户所有进程
killall –u 用户名 杀死指定用户所有进程
关机
shutdown 关机,默认立即关机,但是Centos7中会在一分钟后关机
shutdown -h now 立马关机
shutdown +1 “警告信息” 延迟一分钟关机
shutdown -r +1 “警告信息” 一分钟后关机并重启
shutdown -c 取消关机
重启
reboot
who 显示当前登陆用户
who -H 显示当前登陆用户,多了标题信息
矫正服务器时间、时区
timedatectl status 显示系统的当前时间和日期
timedatectl list-timezones 查看所有可用的时区
timedatectl set-timezone “Asia/Shanghai“ 设置本地时区
timedatectl set-ntp false 禁用时间同步
timedatectl set-time “2019-03-11 20:45:00“ 设置时间
timedatectl set-ntp true 启用时间同步
clear 清除屏幕
ls(list)是一个非常有用的命令,用来显示当前目录下的内容
Shell
$ ls
Shell
$ ls -a
显示所有文件或目录(包含隐藏的文件),在linux中以 . 开头的文件都是隐藏的文件
Shell
$ ls -l
$ ll
显示文件详情,ll是缩写
Shell
$ ll -h
友好显示文件大小
pwe 显示当前所处目录
Shell
$ cd app
切换到app目录
Shell
$ cd ..
切换到上一层目录
Shell
$ cd /
切换到系统根目录
Shell
$ cd ~
切换到用户主目录
Shell
$ cd -
切换到上一个所在目录
Shell
$ mkdir app
在当前目录下创建app目录,只能创建单级目录。
Shell
$ mkdir -p app2/test
级联创建aap2以及test目
Shell
$ touch a.txt //不存在就创建,存在就修改时间属性
$ touch a{1..10}.txt //批量创建
$ stat a.txt //查看文件详细信息
创建一个空文件
删除空文件夹
Shell
rmdir app
删除app目录,前提app目录必须为空,该目录下不能有文件
删除非空文件夹
Shell
$ rm -rf a
不询问递归删除 a目录以及该目录下的所有内容
删除文件
Shell
$ rm -rf a.txt
不询问直接删除a.txt文件
Shell
$ rm -rf *
删除当前目录下的所有的文件
Shell
$ rm -rf /*
/表示根目录,表示删除根目录下的所有的文件,别用。
复制
cp(copy)命令可以将文件从一处复制到另一处。一般在使用cp命令时将一个文件复制成另一个文件或复制到某目录时,需要指定源文件名与目标文件名或目录。
Shell
$ cp a.txt b.txt
将a.txt复制为b.txt文件
Shell
$ cp a.txt ../
将a.txt文件复制到上一层目录中
移动或重命名
mv 移动或者重命名
Shell
$ mv a.txt ../
将a.txt文件移动到上一层目录中
Shell
$ mv a.txt b.txt
将a.txt文件重命名为b.txt
chgrp:修改所在用户组,该命令只能修改组属性
Shell
chgrp root aaa //把aaa所在用户组修改为root
Shell
chgrp -v root itcast aaa //把aaa所在用户组由root改为itcast,执行完毕多了描述执行结果信息
可以同时修改属主和属组权限
chown oldlu:oldlu aaa 将aaa文件的属主和属组改为oldlu
chown -R oldlu:oldlu aa 将aaa文件夹包括子文件夹的属主和属组改为oldlu
Shell
$ chmod -R 770 aaa //表示把aaa包括其子文件和子文件夹的权限设置为 自己和组可读写执行,其他组不能操作
1.打开文件, vi 文件名
2.启用编辑,按i键
3.保存退出 esc->:wq
4.不保存退出 esc->:q!
vim 文件名 第几行
vim xx.txt 5
如果 vim异常退出, 在磁盘上可能会保存有 交换文件(a.txt.swp)
下次再使用 vim 编辑文件时, 会看到以下屏幕信息,直接使用 rm -rf .txtfile.txt.swp删除交换文件即可
1.打开配置文件
Code
vim /etc/vimrc
2.修改配置文件,在配置文件中追加以下内容
Code
"语法高亮(显示彩色)
syntax on
"显示行号
set nu
3.其他配置
Code
"设置Tab长度为4格
set tabstop=4
"设置自动缩进长度为4格
set shiftwidth=4
"继承前一行的缩进方式,特别适用于多行注释
set autoindent
"显示括号匹配
set showmatch
"括号匹配显示时间为1(单位是十分之一秒)
"不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
用于显示文件的内容。主要阅读小型文件
格式:cat[参数]<文件名>
Shell
$ cat yum.conf
一般用于要显示的内容会超过一个画面长度的情况。按空格键显示下一个画面。
回车显示下一行内容。
按 q 键退出查看。
Shell
$ more yum.conf
空格显示下一页数据 回车显示下一行的数据
用法和more类似,不同的是less可以通过PgUp、PgDn键来控制。
Shell
$ less yum.conf
$ less -N yum.conf //加入行号
PgUp 和 PgDn 进行上下翻页
tail命令是在实际使用过程中使用非常多的一个命令,它的功能是:用于显示文件后几行的内容。
用法:
Shell
$ tail -10 /etc/passwd
查看后10行数据
Shell
tail -f catalina.log
动态查看日志,ctrl+c 结束查看
tail –3 big.txt 显示文件最后3行
tail -f big.txt 动态显示最后10行
tail -4f big.txt 动态显示最后4行
tail -n +2 big.txt 显示文件a.txt 的内容,从第 2 行至文件末尾
tail -c 45 big.txt 显示最后一些字符
grep 关键字 small.txt 把包含关键字的行展示出来
grep –n 关键字 small.txt 把包含关键字的行展示出来且加上行号
grep –i 关键字 small.txt 把包含关键字的行展示出来,搜索时忽略大小写
grep –v 关键字 small.txt 把不包含关键字的行展示出来
ps -ef | grep 关 键字 查找指定的进程信息,包含grep进程
ps -ef | grep 关键字 | grep -v “grep” 查找指定的进程信息,不包含grep进程
ps -ef|grep -c sshd 查找进程个数
grep lang anaconda-ks.cfg –color 高亮显示查询结果
$ grep lang anaconda-ks.cfg –color -A1 -B1 高亮显示查询结果,并且显示上一行和下一个
语法:echo “字符串” 展示文本,类似java中输出打印
echo “字符串” >文件名 将字符串写到文件中(覆盖文件中内容)
echo “字符串” >> 文件名 将字符串写到文件中(不覆盖文件中内容)
cat 不存在的目录 &>> error.log 将命令的失败结果 追加 error.log文件的后面
管道 | 实际上就是过滤器
管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。
示例
Shell
$ ls --help | more
分页查询帮助信息
Shell
$ ps –ef | grep java
查询名称中包含java的进程
Shell
$ ifconfig | more
$ cat index.html | more
$ ps –ef | grep aio
需求 1
Shell
$ cat a.txt | awk '/zhang|li/'
需求2
Shell
$ cat a.txt | awk -F ' ' '{print $1,$2,$3,$4}'
需求
Shell
$ cat a.txt | awk -F ' ' '{OFS="==="}{print $1,$2,$3,$4}'
Shell
$ cat a.txt | awk -F ' ' 'print toupper($1),$2,$3,$4}'
Shell
$ cat a2.txt | awk -F ' ' 'BEGIN{cnt=0}{cnt=cnt+$4}END{print cnt}'
使用NR统计行数
Shell
$ cat a2.txt | awk -F ' ' 'BEGIN{cnt=0}{cnt=cnt+$4}END{print cnt,NR}'
类似windows中的快捷方式
为什么有软连接?
因为 某些文件和目录 的 路径很深, 所以 需要增加 软链接(快捷方式)
语法
ln -s 目标文件路径 快捷方式路径
目标文件路径必须使用绝对路径,或者相对于快捷方式所在路径
Shell
$ ln -s /etc/a.txt a.txt.link //把etc下面的a.txt放到当前目录下,快捷名叫a.txt.link
find . -name “*.txt” 查找当前目录及其子目录下所有后缀名名是txt的文件
find . -ctime -1 查找当前目录及其子目录下所有最近 1天内更新过的文件
find / -name ‘czbk’ /代表是全盘搜索,也可以指定目录搜索
gizp a.txt 压缩文件,后缀名是.gz
gzip * 压缩当前目录下所有文件
gzip -dv * 解压文件并列出详细信息
gunzip 压缩文件 解压
tar -cvf 打包文件名 文件名 打包文件并指定打包之后的文件名(仅打包不压缩) ,后缀名.tar
tar -zcvf 压缩文件名 文件名/文件夹名 压缩文件或者文件夹并指定压缩文件名(打包压缩)
tar -ztvf 压缩文件名 查看压缩文件中有哪些文件
tar –zxvf 压缩文件名 解压
参数选项:
-c 建立新的压缩文件
-v 显示指令执行过程
-f<备份文件> 指定压缩文件
-z 通过gzip指令处理压缩文件。
-t 列出压缩文件中的内容
-x 表示解压
zip -q -r 压缩文件名 文件/文件夹 压缩,压缩后的后缀名是.zip
unzip -l 压缩文件名 查看这个压缩文件中有多少内容
unzip -d 指定文件夹 压缩文件 解压
使用新的压缩算法,压缩后的文件比原来的要小,但是花费时间变长。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。
bzip2 a.txt 压缩,后缀名.bz2
bunzip2 -v a.bz2 解压并显示详细信息
ifconfig 显示激活的网卡信息
ifconfig ens37 down 关闭网卡,不用测试
ifconfig ens37 up 启动网卡
ifconfig ens37 192.168.23.199 配置ip地址
ifconfig ens37 192.168.23.133 netmask 255.255.255.0 配置ip地址和子网掩码
ping www.baidu.com 检测是否与百度连通
ping -c 2 www.baidu.com 指定接收包的次数
netstat –a 显示详细的连接状况
netstat –i 显示网卡列表
类似windows下的 *DiskGenius*
df 显示整个硬盘使用情况
df 文 件夹 显示文件夹使用情况
df –total 显示所有的信息
df -h 将结果变成KB,MB,GB形式展示,利于阅读
https://gitee.com/haoyongliang/resources/raw/master/images/linux/cengos7/1590851504042.png)
语法:lsblk [参数选项] 列出硬盘的使用情况
理解为:list block 的英文缩写。
lsblk 列出硬盘的使用情况
lsblk –f 显示系统信息
类似windows中的磁盘
df 显示整个硬盘使用情况
df 文 件夹 显示文件夹使用情况
df –total 显示所有的信息
df -h 将结果变成KB,MB,GB形式展示,利于阅读
用于挂载Linux系统外的设备
挂载点
挂载就是将某个未使用的空间或可移动设备的存储空间指向一个目录
注意事项
注意:“挂载点”的目录需要以下几个要求:
目录事先存在,可以用mkdir命令新建目录;
挂载点目录不可被其他进程使用到;
挂载点下原有文件将被隐藏。
命令
mkdir -p mnt/cdrom 创建文件夹(也是创建一个挂载点)
mount -t auto /dev/cdrom /mnt/cdrom aa 开始挂载,将/dev/cdrom /mnt/cdrom
umount ./mnt/cdrom/ 卸载
类似windows中的软件管家,并且可以解决依赖问题,比如安装A软件需要B软件,会自动安装B软件。一般软件安装时会提供对应的yum命令,能看懂即可
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install
4.仅更新指定的软件命令:yum update
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove
7.查找软件包 命令:yum search
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
案例:
yum -y install tree
tree
yum remove tree
yum list tom* 找出tom为开头的软件名称
默认的下载源在国外,比较慢,所以建议修改成国内的
最初,ReadHat linux发行版专门用来管理各项套件的程序
区别,rpm只能安装已经下载到本地机器上的rpm包