Linux
Vmware创建Linux
虚拟机三种网络形式的说明
1 是网关
255是广播地址
模式 | |
---|---|
桥接模式 | LInux可以和其他的系统通信, 但是可能造成IP冲突 |
NAT模式 | 网络地址转换方式, LInux可以访问外网, 不会造成IP冲突 |
仅主机模式 | 你的Linux是一个独立的主机, 不能访问外网 |
Linux最基本的三个分区
/boot | Linux启动的引导文件 |
swap | 当系统内存不够用的时候, 可以用swap暂时替代内存 |
/ | 根分区 |
Linux目录结构
Linux的文件系统是采用的级层式的树状目录结构, 在此结构中的最上层是根目录'/', 然后在此目录下在创建其他的目录
在Linux世界里, 一切皆为文件
目录 | |
---|---|
/dev | 设备, 类似Windows的设备管理器, 把所有的硬件用文件的形式存储 |
/media | Linux系统会自动识别一些设备, 例如U盘, 光驱等等, 当识别后, linux会把识别的设备挂载到这个目录下 |
/mnt | 系统提供该目录是为了让用户临时挂载别的文件系统的, 我们可以将外部的存储挂载在/mnt/上, 然后进入该目录就可以查看内容了 |
/bin | 是Binary的缩写, 这个目录存放着最经常使用的命令 |
/sbin | s就是Super User的意思, 这里存放的是系统管理员使用的系统管理程序 |
/home | 存放普通用户的主目录, 在Linux中每个用户都有自己一个自己的目录, 一般该目录名是以用户的账号命名的 |
/root | 该目录为系统管理员, 也称为超级权限者的用户目录 |
/lib | 系统开机所需要最基本的动态连接共享库, 其作用类似于Windows 里面的DLL 文件, 几乎所有的应用程序都需要用到这些共享库 |
/lost+found | 这个目录一般情况下是空的, 当系统非法关机后, 这里就存放了一些文件 |
/etc | 所有的系统管理所需要的配置文件和子目录 |
/usr | 这是一个非常重要的目录, 用户的很多应用程序和文件都放在这里目录下, 类似于windows下的program files目录 |
/boot | 存放的是启动Linux目录使用的一些核心文件, 包括一些链接文件以及镜像文件 |
/proc | 这个目录是一个虚拟的目录, 它是系统内存的映射, 访问这个目录来获取系统信息(别动) |
/srv | service缩写, 该目录放一些服务启动之后需要提取数据(别动) |
/sys | 这是LInux2.6内核的一个很大变化, 该目录下安装了2.6内核中新出的一个文件系统sysfs(别动) |
/tmp | 这个目录是用来存放一些临时文件的 |
/opt | 这是给主机额外安装软件所摆放的目录, 如Oracle数据库就可放到该目录下, 默认为空 |
/usr/local | 这是另一个给主机安装软件的安装目录, 一般是通过编译源码方式安装的程序 |
/var | 这个目录中存放着不断扩充的东西, 习惯将经常被修改的目录放在这个目录下, 包括各种日志文件 |
/selinux | selinux是一种安全子系统, 它能控制程序只能访问特定文件 |
- linux的目录中有且只有一个根目录
- linux的各个目录存放的内容是规划好的, 不用乱放文件
- linux是以文件的形式管理我们的设备, 因此linux系统, 一切皆为文件
Linux工具连接
service sshd status
查看sshd是否开启
如果需要xshell连接LInux系统, 需要一个前提就是Linux启动了SSHD服务, 该服务会监听22号端口, 一个电脑最多65535个端口
Linux的Vim和Vi编辑器
所有的Linux系统都会内建Vi编辑器
Vim具有程序编辑的能力, 可以看做是Vi的增强版本, 可以主动的以自提颜色辨别语法的正确性, 方便程序设计, 代码补全, 编译及错误跳转等
Vim和Vi的三种模式
- 正常模式(默认模式)
- vim打开一个文档就进入正常模式了
- 插入模式, 编辑模式
- 按下i, I, o, O, a A, r, R等任何一个字母之后才会进入编辑模式, 一般来说按I即可
- 命令行模式
- 可以提供你相关的命令, 完成读取, 存盘, 替换, 你开VIM, 显示行号等动作
行为 | |
---|---|
:!q | 打开做了修改, 不想保存退出 |
:q | 没有做修改, 退出 |
:wq | 保存并退出 |
设置永久显示行号
/etc/vimrc 是系统范围的初始化配置
~/.vimrc 个人的vim初始化位置
vim ~/.vimrc
set number 或者 set nu
如果你已经进行了恢复,请删除交换文件 ".HelloWorld.java.swp"
vim -r 显示交换文件
rm 文件
Linux开机, 重启, 用户登录注销
关机&重启命令
- shutdown
- shutdown -h now: 表示立即关机
- shutdown -h 1: 表示1分钟后关机
- shutdown -r now: 立即重启
- halt
- 直接使用, 效果等价于关机
- reboot
- 就是重启系统
- sync
- 把内存的数据同步到磁盘
- **注意点: ** 关机之前一定要执行sync命令, 把没有保存的数据保存的磁盘上
用户的登录和注销
基本介绍
- 登录时尽量少用root账号登录, 因为它是系统管理员, 最大的权限, 避免操作失误, 可以利用普通用户登录, 登录后再用 su -用户名命令切换成系统管理员身份
- 在提示符舒服logout即可注销用户
- 注销指令在图形运行级无效, 在运行级别3下有效
用户管理
基本介绍
Linux系统是一个多用户用任务的操作系统, 任何一个要使用系统资源的用户, 都必须首先向系统管理员申请一个账号, 然后以这个账号的身份进入系统
LInux用户需要至少属于一个组
添加账号
useradd [选项] 用户名
添加用户时直接加上组
useradd -g 用户组 用户名
修改密码
passwd [选项] 用户名
删除用户
userdel [选项] 用户名
-
删除用户, 保留home目录
userdel 用户名
-
删除用户, 不保留home目录
userdel -r 用户名
查询用户信息
id [选项] 用户名
切换用户
su [选项] 用户名
exit 返回上一个用户
查看当前用户/登录用户
whoami/who am I
细节说明:
- 当创建创建用户成功, 会自动创建和用户同名的家目录
- 也可以通过useradd -d 指定目录, 新的用户名, 给新创建的用户指定家目录, 在指定目录的时候, 不要事先创建起来
- 如果没有指定组, 就会创建跟用户名相同的组, 并把用户放进这个组里面
- 一般来讲不会删除用户的/home目录
用户组
基本介绍
类似于角色, 系统可以对有共性的多个用户进行统一的管理
常用命令
创建组
groupadd [选项] 组名
删除组
groupdel [选项] 组名
修改用户组
usermod -g 用户组 用户名
usermod -d 目录名 用户名 改变该用户登录的初始目录
用户配置文件
文件目录 | |
---|---|
/etc/passwd | 用户配置文件(用户信息) |
/etc/group | 组配置信息(组信息) |
/etc/shadow | 口令配置文件(密码和登录信息, 是加密) |
/etc/passwd
- 用户配置文件, 记录用户的各种信息
- 每行含义: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
/etc/shadow
- 口令配置文件
- 每行的含义: 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件
- 组(group)的配置文件: 记录Linux包含的组的信息
- 每行含义: 组名:口令:组标识号:组内用户列表
- 一般来说组内用户列表是看不到的
Linux常用命令
运行级别 | |
---|---|
0 | 关机 |
1 | 单用户级别, 找回密码的时候有用 |
2 | 多用户无网络服务 |
3 | 多用户有网络服务 |
4 | 保留运行级别 |
5 | 图形化运行级别 |
6 | 重启 |
常用的运行级别是3和5, 要修改默认的运行级别可改文件
/etc/inittab的id:5:initdefault:这一行的数字
切换运行级别
init[0123456]
CentOS8
-
systemctl get-clefault
查看默认运行级别
-
systemctl isolate multi-user.target
切换到字符界面
-
systemctl isolate graphical.target
切换到 图形化界面
-
systemctl set-default multi-user.target
设置默认运行级别 3 为 字符
-
systemctl set-default graphical.target
设置默认运行级别 5 为 图形化
找回root密码
如何找回root密码
进入到单用户模式, 然后修改root密码, 因为进入单用户模式, root不需要密码就可以登录
开机 在引导时输入回车键, 进入设置页面, 设置引导运行的级别
进入单用户模式, 然后用passwd修改密码
帮助指令
当我们 某个指令不熟悉的时候, 我们可以使用Linux提供的帮助指令来了解这个指令的使用方法
基本语法
man[命令或配置文件] (功能描述, 获得帮助信息)
help 命令(功能描述, 获取shell内置命令的帮助信息)
文件目录类指令
指令 | 功能描述 |
---|---|
pwd |
显示当前工作目录的绝对路径 |
ls |
查看当前目录的所有内容 |
cd |
切换到指令目录 |
touch |
创建空文件 |
cp |
拷贝文件到指定目录 |
cat |
只能浏览文件, 而不能修改文件, 为了浏览方便, 一般会带上管道命令 |
more |
是一个基于VI编辑器的文本过滤器, 以全屏幕的方式按页显示文本文件的内容 |
less |
用来分屏查看文件内容, 它的功能与more指令类似 |
> |
输出重定向, 覆盖写 |
>> |
追加 |
echo |
输出内容到控制台 |
head |
用于显示文件的开头部分内容, 默认情况下显示文件的前10行内容 |
tail |
用于输出文件中尾部的内容, 默认情况下显示文件的后10行内容 |
ln |
软连接, 类似于windows 里面的快捷方式, 主要存放了链接其他文件的路径 |
history |
查看已经执行的历史命令, 也可以执行历史命令 |
date |
显示当前日期 |
cal |
查看日历 |
pwd指令
基本语法
- pwd(功能描述, 显示当前工作目录的绝对路径)
ls指令
基本语法
ls [选项] [目标或是文件]
常用选项
- -s: 显示当前目录所有的文件和目录, 包括隐藏的
- -l: 以列表的方式显示信息
cd指令
基本语法
cd [参数] 切换到指令目录
常用参数
绝对路径和相对路径
绝对路径: /home即从根目录开始定位
相对路径: ../home, 从当前工作目录开始定位到需要的目录去
cd ~ 或者cd : 回到自己的家目录 (CentOS8里面 直接cd就可以回到home)
cd .. 回到当前目录的上一级目录
touch指令
touch指令创建空文件
基本语法
touch 文件名1 文件名2...
cp指令
拷贝文件到指定目录
基本语法
cp [选项] source dest
常用选项
cp -r source dest 递归复制整个文件夹
使用细节
强制覆盖不提示的方法:
\cp
cat指令
查看文件内容
只能浏览文件, 而不能修改文件, 为了浏览方便, 一般会带上管道命令 | more
基本语法
cat [选项] 要查看的文件
常用选项
cat -n 要查看的文件 显示行号查看
cat -n 要查看的文件 | more 分页查看文件内容
more命令
是一个基于VI编辑器的文本过滤器, 它以全屏幕的方式按页显示文本文件的内容
基本语法
more 要查看的文件
less指令
用来分屏查看文件内容, 它的功能与more指令类似, 但是比more指令更加强大, 支持各种显示终端. less指令在显示文件内容时, 并不是一次将整个文件加载之后显示, 而是根据显示需要加载内容, 对于显示大型文件具有较高的效率
基本语法
less 要查看的文件
>
命令
输出重定向
基本语法
ls -l > 文件 列表的内容写入文件a.txt中, 覆盖写
ls -al > 文件 列表的内容追加到文件aa.txt的末尾
cat 文件1 > 文件2 将文件1的内容覆盖到文件2
echo "内容" > 文件
>>
命令
追加
基本语法
ls -l >> 文件 列表的内容写入文件a.txt中, 覆盖写
ls -al >> 文件 列表的内容追加到文件aa.txt的末尾
cat 文件1 >> 文件2 将文件1的内容覆盖到文件2
echo "内容" >> 文件
echo指令
输出内容到控制台
基本语法
echo [选项] [输出内容]
应用
输出环境变量
echo $PATH
head
指令
head用于显示文件的开头部分内容, 默认情况下head指令显示文件的前10行内容
基本语法
head 文件 查看文件头10行的内容
head -n 5 文件 查看文件头5行的内容, 5可以是任意行数
应用
head /etc/profile 的前面5行代码
tail
指令
用于输出文件中尾部的内容, 默认情况下tail指令显示文件的后10行内容
基本语法
tail 文件 查看文件后10行的内容
tail -n 5 文件 查看文件后5行的内容, 5可以是任意行数
tail -f 文件 实时追踪该文档的所有更新
ln
指令
基本语法
ln -s [原文件或目录][软链接名] 给原文件创建一个软链接
rm -rf [软链接名] 删除软链接名, 后面不要带/, 会把软链接原有的内容删掉
软链接是存放的另一个文件的路径
硬链接是以文件的副本的形式存在
history
指令
查看已经执行过的历史命令
基本语法
history 查看已经执行过的历史命令
history 查看最近使用过的10个命令
!编号 执行编号为多少的指令
时间日期类
date指令
显示当前日期
基本语法
date 显示当前时间
date "+%Y" 显示当前年份
date "+%m" 显示当前月份
date "+%d" 显示当前是那一天
date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
操作
设置日期
基本语法
date -s "字符串时间"
date -s "2020-11-11 11:22:22" 设置系统当前时间
cal
指令
基本语法
cal [选项] 不加选项, 显示本月日历
cal 年份 显示一个年份的日历
搜索查询类
find
指令
find指令将从指定目录向下递归地遍历各个子目录, 将满足条件的文件或者目录显示在终端
基本语法
find [搜索范围] [选项] 文件名
选项说明
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
应用实例
按文件名: 根据名称查找/home目录下的hello.txt文件
find /home -name hello.txt
按拥有者: 查找/opt目录下, 用户名称为root
的文件
find /opt -user root
查找整个linux系统下大于20M的文件(+n大于 -n小于 n等于)
find / -szie +20M (kb要用小写的k)
查询 /
目录下, 所有.txt的文件
find / -name *.txt
locate
指令
locate指令可以快速定位文件路径. locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件. locate指令无需遍历整个文件系统. 查询速度较快, 为了保证查询结果的精准度, 管理员必须定期更新locate时刻
特别说明: 由于locate指令基于数据库进行查询, 所以第一次运行前, 必须使用updatedb指令创建locate数据库
updatedb 创建后者更新locate数据库
基本用法
locate 搜索文件
grep
指令
过滤查找
基本语法
grep [选项] 查找内容 源文件
选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
-i | 忽略字母大小写 |
实例:
请在hello.txt
文件中, 查找yes所在的行, 并显示行号
grep -n yes /home/hello.txt
cat hello.txt | grep -n yes
cat hello.txt | grep -ni yes
|
指令
表示将前一个命令的处理结果输出传递给后面的命令处理
压缩和解压类指令
gzip/gunzip
指令
用于解压缩文件
基本语法
gzip 文件 压缩文件, 只能将文件压缩为*.gz文件=
gunzip 文件.gz 解压缩文件命令
细节说明
当我们吧使用gzip对文件进行压缩后, 不会保留原来的文件, gunzip也一样
zip/unzip
指令
基本语法
zip [选项] XXX.zip 将要压缩的内容 压缩文件和目录的命令
zip -r XXX.zip 将要压缩的内容 递归压缩, 即压缩目录
unzip [选项] XXX.zip 解压缩文件
unzip -d<目录> XXX.zip 指定解压后的文件存放目录
tar
指令
tar指令是打包指令, 最后打包的文件是.tar.gz的文件
基本语法
tar [选项] XXX.tar.gz 打包内容 打包目录, 压缩后的文件格式.tar.gz
选项 | 功能 |
---|---|
-c |
产生tar打包文件 |
-v |
显示详情信息 |
-f |
指定压缩后的文件名 |
-z |
打包同时压缩 |
-x |
解压.tar文件 |
压缩多个文件
tar -zcvf a.tar.gz hello.txt hello2.txt
将/home的文件夹, 压缩成myhome.tar.gz
tar -zcvf myhome.tar.gz /home/*
将a.tar.gz 解压到当前目录
tar -zxvf myhome.tar.gz
将myhome.tar.gz 解压到/opt/tmp2目录下
tar -zxvf myhome.tar.gz -C /opt/tmp2/
指定解压的目录事先要存在
Linux组管理
Linux组基本介绍
在Linux中的每个用户必须属于一个族, 不能独立于组外, 在LInux中的每个文件的所有者, 所在组, 其他组的概念
- 所有者
- 所在组
- 其他组
- 改变用户所在的组
文件/目录的所有者
一般为文件的创建者, 谁创建了该文件, 就自然的成为该文件的所有者
其他组
除文件的所有者和所在组的用户外, 系统的其他用户都是文件的其他组
查看文件的所有者
ls -ahl
修改文件所有者
chown 用户名 文件名
修改文件所在的组
chgrp 组名 文件名
修改文件的所有者和所有组
chown newowner:newgroup file
如果是目录,则使其下所有的子文件或目录递归生效
chown -R newowner:newgroup file
Linux权限管理
ls -l详解
drwx------. 3 markerccc markerccc 78 11月 29 13:10 markerccc
0-9位说明
-
第0位确定文件类型(d, -, l, c, b)
-
文件类型 内容 - 普通文件 d 目录 c 字符设备(键盘, 鼠标) b 块文件(硬盘)
-
-
第1-3位确定所有者 (该文件的所有者) 拥有该文件的权限 –User
-
权限 内容 r 读 w 写 x 执行 - 没有权限
-
-
第4-6位确定所属的组(同用户的组) 拥有该文件的权限 –Group
-
组 内容 r-- 不与该文件拥有者同组的其他用户的权限是读不能写和执行 rwx 文件拥有者的权限是读, 写和执行 rw- 与文件拥有者统一组的用户的权限是读, 但是不能执行
-
-
第7-9位确定其他用户拥有该文件的权限 –Other
-
其他组 内容 r-- 不与该文件拥有者同组的其他用户的权限是读不能写和执行 rwx 文件拥有者的权限是读, 写和执行 rw- 与文件拥有者统一组的用户的权限是读, 但是不能执行
-
数字3
类型 | 含义 |
---|---|
文件 | 如果是文件表示硬链接 |
目录 | 表示该目录的子目录个数 |
数字78
表示文件大小, 如果是目录, 统一是4096 (CentOS6)
时间
表示文件的最后的修改时间
rwx权限详解
文件
权限 | 内容 |
---|---|
[r] | 表示可读(read), 可以读取, 查看 |
[w] | 表示可写(write), 可以修改, 但是不代表可以删除该文件, 删除一个文件的前提条件是对该文件所在目录有写权限, 才能删除该文件 |
[x] | 代表执行[execute]: 可以被执行 |
目录
权限 | 内容 |
---|---|
[r] | 代表可读(read),可以读取, ls查看目录内容 |
[w] | 代表可写(write): 可以修改, 目录内创建+删除+重命名目录 |
[x] | 代表可执行(execute): 可以进入目录 |
可以用数字表示为
权限 | 数字 |
---|---|
r | 4 |
w | 2 |
x | 1 |
因此rwx=4+2+1=7
文件类型 | 属主权限 | 属主权限 | 属主权限 | 属组权限 | 属组权限 | 属组权限 | 其他用户权限 | 其他用户权限 | 其他用户权限 |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
d | r | w | x | r | - | x | r | - | x |
目录文件 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
修改权限
chmod
指令
通过chmod
指令, 可以修改文件或者目录的权限
第一种方式
变更 | 内容 |
---|---|
+ | 增加权限 |
- | 去掉权限 |
= | 赋予权限 |
选项 | 内容 |
---|---|
u | 所有者 |
g | 所有组 |
o | 其他人 |
a | 所有人 |
基本语法
chmod u=rwx,g=rx,o=x 文件目录名
chmod o+w 文件目录名 给这个文件其他的用户增加一个写的权限
chmod a-x 文件目录名 给这个文件所有用人减掉一个执行的权限
案例
给abc文件的所有者读写执行的权限, 给所在组读执行的权限, 给其他组读执行的权限
chmod u=rwx,g=rx,o=rx abc
给abc文件的所有者去除执行权限, 增加组写的权限
chmod u-x,g+w abc
给abc文件的所有用户添加读的权限
chomd a+r abc
第二种方式
通过数字变更权限
chmod u=rwx,g=rx,o=x 文件目录名
chmod 751 文件目录名