基础篇
Linux入门
应用领域
使用场景
Linux运维工程师
- 服务器规划
- 调试优化
- 日常监控
- 故障处理
- ......
Linux嵌入式工程师
- 驱动开发
- 程序开发
- ......
开发项目
- JavaEE
- 大数据
- Python
- C++
应用领域
个人桌面领域的应用(较薄弱)
- ubuntu
服务器领域(最强)
- 免费、稳定、高效
嵌入式领域
- 网络支持好、低成本、内核可裁剪的很小(几百kb),方便移植
概述
- Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目(c/c++/php/java/python/java/go)都会部署到Linux/Unix系统上
- 常见的操作系统:Windows、iOS、Android、MacOS、Linux、Unix
Linux之父——Linus Torvalds
- Git创作者
- 世界著名黑客
- Linux主要发行版:Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain(蝶变)、Fedora、SuSE、OpenSUSE
Linux和Unix的关系
vm和Linux的安装
VM15.5下载
安装步骤
- 去BIOS里修改设置开启虚拟化设备支持(安装不成功再检查是否开启)
- 安装虚拟机软件
网络连接的三种方式
- 桥接模式:虚拟系统可以和外部系统通讯,但是容易造成IP冲突
- NAT模式:网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突
- 主机模式:独立的系统,不和外部进行通讯
克隆与快照
克隆
- 方式一:直接拷贝一份完好的虚拟机文件
- 方式二:使用vm的克隆操作。注意:克隆时,需要先关闭Linux服务器
快照
如果在使用虚拟机的时候,想要回到原先的状态,就可以使用快照管理
直接使用vm操作即可
vmtools
- vmtools安装后,可以在Windows下更好的管理vm虚拟机
- 可以设置Windows和centos的共享文件夹
安装步骤
- 进入centos
- 点击vm菜单的install vmware tools
- centos会出现一个vm的安装包,xx.tar.gz
- 拷贝到/opt
- 使用解压命令tar,得到一个安装文件
- 进入vm解压的目录,/opt目录下
- 安装./vmware-install.pl
- 全部使用默认设置即可
- 注意:安装vmtools,需要有gcc
Linux目录结构
基本介绍
- Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录
- 在Linux世界里,一切皆文件(也会把硬件映射为文件进行管理)
具体结构
- bin(/usr/bin、/usr/local/bin):是Binary的缩写,存放最常使用的命令
- sbin(/usr/sbin、/usr/local/sbin):存放系统管理员使用的系统管理程序
- home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般目录名是以用户名命名
- root:系统管理员目录,也称作超级权限者的用户主目录
- lib:系统开机所需要最基本的动态连接共享库,作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
- lost+found:这个目录下一般是空的,在系统非法关机后,就会存放一些文件
- etc:所有的系统管理所需要的配置文件和子目录,比如安装mysql的my.conf
- usr:这是一个非常重要的目录,用户的很多应用程序都放在这个目录下,类似于Windows下的program files目录
- boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- proc:是一个虚拟目录,是系统内存的映射,访问这个目录来获取系统信息
- srv:service缩写,存放一些服务启动后需要提取的数据
- sys:这是Linux2.6内核的一个很大的变化,安装了2.6内核中新出现的一个文件系统sysfs
- tmp:存放临时文件的目录
- dev:类似于Windows的设备管理器,把所有的硬件用文件的形式存储
- media:Linux系统会自动识别一些设备,例如:U盘,光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下
- mnt:系统提供该目录是为了让用户挂在临时文件系统的,我们可以将外部的存储挂载在mnt上,然后进入该目录就可以查看里面的内容了
- opt:这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可以放到该目录下,默认为空
- usr/local:这是另一个主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
- var:存放着不断扩充着的东西,习惯被修改的目录放在这个目录下,包括各种日志文件
- selinux:是一种安全子系统,能控制程序只能访问特定文件,有三种工作模式,可自行设置
实际操作篇
- 如需远程连接,可以使用XShell、SecureCRT、FinalShell等软件进行连接
- 需要知道对应的Linux服务器ip,在终端使用
ifconfig
可以进行查询 - 查询到Linux服务器IP后,在Windows命令行下使用ping指令可以判断是否连通,如果无法连通,则一定无法进行远程连接,就需要进行检查后连接
vi和vim编辑器
- Linux会内置vi文本编辑器
- Vim具有程序编辑的能力,可以看作是vi的增强版,可以主动的以文字颜色辨别语法的正确性,方便程序设计。代码补全,编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用
三种模式
正常模式
- 以vim打开一个档案就直接进入一般模式了(默认的模式)
- 在这个模式中,可以使用【上下左右】按键来移动光标
- 可以使用【删除字符】或【删除整行】来处理档案内容
- 也可以使用【复制、粘贴】来处理文件的数据
- 按
:
进入命令行模式
插入模式
- 按下i、I、o、O、a、A、r、R等任何一个字母之后才会进入编辑模式
- 一般来说按i即可
- 输入
Esc
,再输入:
进入命令行模式
命令行模式
- 在这个模式中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作
:wq
:保存退出:q
:不保存退出,:q!
强制退出,并且不保存
快捷键
正常模式
- 拷贝当前行:
yy
,拷贝当前行向下的n行:nyy
,粘贴:p
- 删除当前行
dd
,删除当前行向下的n行:ndd
- 到该文档最末行:
G
,最首行:gg
- 撤销操作:
u
- 将光标移动到指定位置:
行号 shift g
命令行模式
- 在文件中查找某个单词:
/关键字
,回车 查找;输入n
就是查找下一个 - 设置文件行号:
:set nu
,取消文件行号::set nonu
关机重启和登录注销
关机重启
基本介绍
shutdown -h now
:立刻进行关机shutdown -h 1
:1分钟后关机shutdown -r now
:现在重启计算机halt
:关机,作用和上面一样reboot
:现在重启计算机sync
:把内存的数据同步到磁盘
注意细节
- 不论是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中
- 目前的shutdown/reboot/halt等命令均已经在关机前进行了sync
登录注销
基本介绍
- 登陆时尽量少使用root账号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登陆后使用
su -用户名
命令来切换身份(-可以省略) - 在提示符下输入logout即可注销用户
使用细节
- logout注销指令在图形运行级别无效,在运行级别3下有效
用户管理
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统
添加用户
- 基本语法:
useradd 用户名
细节说明
- 当创建用户成功之后,会自动的创建和用户同名的家目录
- 也可以通过
useradd -d 指定目录 用户名
,给新创建的用户指定家的目录
指定/修改密码
- 基本语法:
passwd 用户名
细节说明
- 如果不写用户名的话默认修改当前登录的用户密码
删除用户
- 基本语法:
userdel 用户名
细节说明
userdel -r 用户名
:删除用户及其家目录- 不加
-r
只删除用户,保留家目录 - 一般情况下,建议保留家目录
查询用户
- 基本语法:
id 用户名
细节说明
- 当用户不存在时,返回无此用户
切换用户
- 在操作Linux时,如果当前用户的权限不够,可以通过
su -
指令,切换到高权限用户,比如root - 基本用法:
su - 用户名
细节说明
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 当需要返回到原用户时,使用
exit/logout
指令
查看当前用户信息
- 基本语法:
whoami/who am i
细节
- 如果通过切换用户指令切换后,使用该指令查询的是第一次登录时的用户
用户组
- 类似于角色,系统可以对有共性的多个用户进行统一的管理
- 新增组:
groupadd 组名
- 删除组:
groupdel 组名
- 增加用户时直接加上组:
useradd -g 用户组 用户名
- 修改用户组:
usermod -g 用户组 用户名
细节
- 如果在新增用户时,没有指定分组,会默认新建一个与用户同名的组并将该用户加入对应的组
用户和组相关文件
/etc/passwd
- 用户(user)的配置文件,记录用户的各种信息
- 每行的含义:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow
- 口令的配置文件
- 每行的含义:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group
- 组(group)的配置文件,记录Linux包含的组的信息
- 每行的含义:
组名:口令:组标识号:组内用户列表
实用指令
运行级别
基本介绍
运行级别说明
- 关机
- 单用户【找回丢失密码】
- 多用户状态没有网络服务
- 多用户状态有网络服务
- 系统未使用保留给用户
- 图形界面
- 系统重启
常用运行级别是3和5,也可以指定默认运行级别
- 通过
init [0~6]
可以切换上面的运行级别
如果输入
init 3
将进入命令行界面,init 0
关机,init 6
重启......在centos7以前,在
/etc/inittab
文件中进行修改
默认运行级别
- 查询当前默认运行级别:
systemctl get-default
- 修改默认运行级别为3级别:
systemctl set-default multi-user.target
- 在修改后,重启将进入所设置的默认运行级别
找回root密码(centos 7.6)
- 启动系统,在开机界面按
e
进入编辑界面 - 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以“Linux 16”开头内容所在的行数,在行的最后输入:
init=/bin/sh
(进入单用户运行级别) - 完成输入后,直接按快捷键
ctrl + x
进入单用户模式 - 接着,在光标闪烁位置输入:
mount -o remount,rw /
(注意,各个单词间有空格),完成后按键盘的回车键(Enter) - 再在新的一行最后输入:
passwd
,完成后按键盘的回车键。输入密码,然后再次确认密码即可,密码修改成功后,会显示passwd.....的样式,说明密码修改成功 - 接着,在鼠标闪烁的位置中(最后一行),输入
touch /.autorelabel
,完成后按回车键 - 继续在光标闪烁的位置处,输入
exec /sbin/init
,按回车,等待系统自动修改密码(过程时间可能有点长,耐心等待)。完成后,系统自动重启,新的密码就生效了
帮助指令
- man:
man [命令或配置文件]
(功能描述:获得帮助信息) - help:
help 命令
(获得shell内置命令的帮助信息) - 百度搜索更直接
在查看帮助信息时,一页展示不下的话,按空格键会继续向下走
文件目录指令
目录操作
- pwd指令:
pwd
(显示当前工作目录的绝对路径) ls指令:
ls [选项] [目录或是文件]
-a
:显示当前目录所有的文件和目录,包括隐藏的-l
:以列表的方式显示信息(ll
指令作用相同)-lh
:便于查看,文件大小将展示为k
cd指令:
cd [参数]
(切换到指定目录)cd ~
或者cd
:回到自己的家目录,比如你是root,cd ~
就会回到/rootcd ..
:回到当前目录的上一级目录
文件操作
mkdir指令:
mkdir [选项] 要创建的目录
(用于创建目录)-p
:创建多级目录
rmdir指令:
rmdir [选项] 要删除的空目录
(用于删除目录)- rmdir删除的是空目录,如果目录下有内容时无法进行删除
- 要删除非空目录,需要使用
rm -rf 要删除的目录
- touch指令:
touch 文件名称
(创建空文件)
功能指令
cp指令:
cp [选项] 源文件 目的地
(拷贝文件到指定目录)-r
:递归复制整个文件夹- 强制覆盖不提示的方法:
\cp
rm指令:
rm [选项] 要删除的文件或目录
(移除文件或目录)-r
:递归删除整个文件夹-f
:强制删除不提示
mv指令(移动文件与目录或重命名)
mv 旧文件名 新文件名
(重命名)mv 源文件 目的地
(移动文件)
查看指令
cat指令:
cat [选项] 要查看的文件
(查看文件内容)-n
:显示行号- cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上
管道命令 | more
- 例如:
cat -n /etc/profile | more
more指令:是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键
- 基本语法:
more 要查看的文件
- 空格:向下翻一页
- 回车:向下翻一行
- q:立即离开more,不再显示该文件内容
- Ctrl + F:向下滚动一屏
- Ctrl + B:返回上一屏
- =:输出当前的行号
:f
:输出文件名和当前行的行号
- 基本语法:
less指令:less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
- 基本语法:
less 要查看的文件
- 空格:向下翻一页
- pagedown:向下翻一页
- pageup:向上翻一页
- /字串:向下搜寻【字串】。n向下查找,N向上查找
- ?字串:向上搜寻【字串】。n向上查找,N向下查找
- 基本语法:
- q:离开less这个程序
- echo指令:
echo [选项] [输出内容]
(输出内容到控制台) head指令:用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
head 文件
:查看文件头10行内容head -n 5 文件
:查看文件头5行内容,5可以是任意行数
tail指令:用于输出文件中尾部的内容,默认情况下tail指令显示文件末尾10行内容
tail 文件
:查看文件尾10行内容tail -n 5 文件
:查看文件尾5行内容,5可以是任意行数tail -f 文件
:实时追踪该文档的所有更新
> 指令和 >> 指令
>
:输出重定向(覆盖原内容)>>
:追加(不覆盖原内容)基本语法
ls -l > 文件
:列表的内容写入a.txt中,覆盖写ls -al >> 文件
:列表的内容追加到aa.txt的末尾cat 文件1 > 文件2
:将文件1的内容覆盖到文件2echo "内容" >> 文件
cal >> /home/date.txt
:将日历信息追加到data.txt中(文件不存在自动创建)
在追加内容时,如果目标文件不存在,将会自动创建出来
cal
:显示当前日历信息
其他指令
ln指令:软链接也称为符号链接,类似于Windows里的快捷方式,主要存放了链接其他文件的路径(link)
- 基本语法:
ln -s [原文件或目录] [软链接名]
(给原文件创建一个软链接) - 当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
- 删除软链接:和删除文件一样(
rm 软链接名
) - 创建软链接时最好使用绝对路径,否则会出现符号连接的层数过多等问题
- 基本语法:
history指令:查看已经执行过的历史命令,也可以执行历史命令
- 基本语法:
history
(查看执行过的历史命令) history n
:查看最近执行的n条指令!5
:执行曾经执行过的第5条指令
- 基本语法:
时间日期指令
- date指令:显示当前日期
显示日期
date
:显示当前时间date +%Y
:显示当前年份date +%m
:显示当前月份date +%d
:显示当前是哪一天date "+%Y-%m-%d %H:%M:%S"
:显示年月日时分秒
设置日期
date -s 字符串时间
:设置系统当前时间
cal指令
- 查看日历指令
- 基本语法:
cal [选项]
(不加选项,显示本月日历) cal 2022
:显示2022年全年日历
查找指令
find指令
- 将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
- 基本语法:
find [搜索范围] [选项]
-name<查询方式>
:按照指定的文件名查找模式查找文件-user<用户名>
:查找属于指定用户名所有文件-size<文件大小>
:按照指定的文件大小查找文件(单位:k,M,G)- 在home下查找hello.txt文件:
find /home -name hello.txt
- 查找整个Linux下大于200M的文件(+n大于,-n小于,n等于):
find / -size +200M
locate指令
- locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新Locate时刻
- 基本语法:
locate 搜索文件
- 由于locate指令基于数据库进行查询,所以在第一次运行前,必须使用
updatedb
指令创建locate数据库
which指令
- 可以查看某个指令在哪个目录下,比如查看ls指令:
which ls
grep指令和管道指令|
- grep过滤查找,管道符
|
,表示将前一个命令的处理结果输出传递给后面的命令处理 基本语法:
grep [选项] 查找内容 源文件
-n
:显示匹配行及行号-i
:忽略字母大小写
压缩和解压
gzip/gunzip指令
- gzip用于压缩文件,gunzip用于解压缩
基本语法
gzip 文件
:压缩文件,只能将文件压缩为*.gz文件gunzip 文件.gz
:解压缩文件命令
zip/unzip指令
- zip用于压缩文件,unzip用于解压文件,这个在项目打包发布中很常用
基本语法
zip [选项] xxx.zip 将要压缩的内容
:压缩文件和目录的命令-r
:递归压缩,即压缩目录
unzip [选项] xxx.zip
:解压缩文件-d 目录
:指定解压后文件的存放目录
tar指令
- tar指令是打包指令,最后打包成的文件是.tar.gz的文件
tar [选项] xxx.tar.gz 打包的内容
:打包目录,压缩后的文件格式.tar.gz-c
:产生.tar打包文件-v
:显示详细信息-f
:指定压缩后的文件名-z
:打包同时压缩-x
:解包.tar文件
案例
- 压缩多个文件:
tar -zcvf ab.tar.gz a.txt b.txt
- 压缩目录:
tar -zcvf home.tar.gz /home
- 解压到当前目录:
tar -zxvf ab.tar.gz
- 解压到指定目录:
tar -zxvf ab.tar.gz -C /root
- 压缩多个文件:
使用gzip压缩会删除源文件,使用其他两个指令进行压缩不会删除源文件