Linux
1. Linux介绍
- Linux是一款操作系统,免费,开源,安全,高效,稳定,处理高并发非常强悍,现在很多企业级的项目都部署到Linux/unix服务器运行
- 主要发行版本:CentOSE,Redhat,Ubuntu,Suse,红旗Linux
2.虚拟机
- 虚拟机的三种网络连接:
- 桥连接:Linux可以和其他的系统通信,但是可能造成IP冲突。
- NAT:网络地址转换方式,Linux可以访问外网,不会造成IP冲突。
- 主机模式:你的Linux是一个独立的主机,不能访问外网。
- vmtools
- 共享剪贴板
- 共享文件夹
3.Linux目录结构
-
linux的文件系统是采用级层式的树状目录结构,在此结构3上最上层是根目录“/”
-
在Linux世界里,一切皆文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PZauE3RQ-1584094488211)(C:\Users\apple\AppData\Roaming\Typora\typora-user-images\image-20200310232559711.png)]
-
具体的目录结构
- /bin(/usr/bin, /usr/local/bin)
- 是Binary的缩写,这个目录存放着最经常使用的命令
- /sbin(/usr/sbin, /usr/local/sbin)
- s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /home
- 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /root
- 该目录为系统管理员,也称作超级权限者的用户主目录。
- /lib:
- 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件几乎所有的应用程序都需要用到这些共享库。
- /lost+found:
- 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /etc:
- 所有的系统管理所需要的配置文件和子目录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[security-enhanced linux]360
- SELinux是一种安全子系统,它能控制程序只能访问特定文件
- /bin(/usr/bin, /usr/local/bin)
-
总结
- Linux的目录中有且只有一个根目录
- Linux的各个目录存放的内容是规划好,不能乱放文件
- Linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件
- Linux的各个文件目录下存放什么内容,必须有一个认识
4.vi和vim编辑器
-
三种常见模式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83hTu1aR-1584094488214)(C:\Users\apple\AppData\Roaming\Typora\typora-user-images\image-20200311132005959.png)]
- 正常模式:在正常模式下,我们可以使用快捷键,以vim打开一个文档就直接进入一般模式了。在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制,粘贴】来处理你的文件数据。
- 插入模式/编辑模式:在模式下,可以输入内容。按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式,一般按i
- 命令行模式:在这个模式中,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号等的动作则是在此模式中完成的
-
常用快捷键的使用
- 粘贴 p
- 拷贝当前行 yy;拷贝当前行向下的5行 5yy;
- 删除当前行 dd; 删除当前行向下的5行 5dd;
- 在文件中查找某个单词:命令行输入 /(查找内容),按n查找下一个
- 设置文件行号:set nu,取消文件行号:set nonu
- 编辑文件,正常模式下使用快捷键到达文档最末行:G,最首行:gg
- 撤销输入:在正常模式下输入u
- 编辑文件,光标移动到某行:shift+g
- 显示行号:set nu
- 输入行号这个数
- 输入shift+g
5.开机,重启和用户登录注销
-
shutdown:
- shutdown -h now:表示立即关机
- shutdown -h 1:表示1分钟后关机
- shutdown -r now:立即重启
-
halt:就是直接使用,效果等价于关机
-
reboot:就是重启系统
-
syn:把内存的数据同步到磁盘;建议每次关机或重启前都使用
-
登录是尽量不要用root账号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用“su-用户名”命令来切换成系统管理员身份
-
输入logout即可注销用户
6.用户管理
-
了解
- Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号进入系统
- Linux的用户需要至少属于一个组
-
添加用户
- 命令行指令:useradd [选项] 用户名【eg:useradd cat】
- 细节:
- 当创建用户成功后,会自动的创建和用户同名的家目录
- 也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录【eg:useradd -d /home/animal dog】
-
给用户指定或添加密码
- 命令行指令:passwd 用户名【eg: passwd cat】
-
删除用户
- 命令行指令(保留家目录):userdel 用户名【eg: userdel cat】
- 命令行指令(不保留家目录):userdel -r 用户名【eg: userdel -r cat】
- 在删除用户时,一般不建议删除家目录
-
查询用户信息
- 命令行指令:id 用户名【eg: id cat】
- 细节:
- 当用户不存在是返回无此用户
-
切换用户
- 在Linux中,如果当前用户的权限不够,可以通过su - 指令,切换到高权限用户
- 命令行指令:su - 用户名[su - dog]
- 细节:
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 当需要返回到原来用户时,使用exit指令
-
用户组
- 类似于角色,系统可以对有共性的多个用户进行统一的管理
- 增加组:groupadd 组名【eg:groupadd animal】
- 删除组:groupdel 组名【eg:groupdel animal】
-
增加用户时直接加上组
- 命令行指令:useradd -g 用户组 用户名【eg: useradd -g wudang zwj】
-
修改用户组
- 命令行指令:usermod -g 用户组 用户名【eg: usermod -g shaolin zwj】
-
/etc/passwd 文件
- 用户(user)的配置文件,记录用户的各种信息。
- 每行的含义:用户名:口令:用户标识号:注释性描述:主目录:登录shell
-
/etc/shadow 文件
- 口令配置文件
- 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
/etc/group 文件
- 组(group)的配置文件,记录Linux包含的组的信息。
- 每行含义:组名:口令:组标识号:组内用户列表
7.实用指令
-
指定运行级别(7个级别)
-
关机
-
单用户【找回丢失密码】
-
多用户状态没有网络服务
-
多用户状态有网络服务
-
系统未使用保留给用户
-
图形界面
-
系统重启
-
-
系统的运行级别配置文件:/etc/inittab
-
切换到指定运行级别的指令:init [012356]
-
面试题:如何找回丢失的root密码?:进入到单用户模式,然后修改root密码。因为进入单用户模式,root不需要密码就可以登录。【开机->在引导时输入 回车键->看到一个界面输入 e->看到一个新的界面,选中第二行(编辑内核),再输入 e->在这行最后输入 1,再输入 回车键->再输入b,这时就会进入到单用户模式,使用passed来修改root密码。】
-
帮助指令:
- man [命令或配置文件]
- help
-
文件目录类
-
pwd:Print Working Directory,显示当前工作目录的绝对路径.
- 使用:pwd
-
ls:list 查看当前目录所有的信息
- ls -a:显示当前目录所有的文件和目录,包括隐藏的;
- ls -l:以列表的方式显示信息。
-
cd:Change Directory切换指令
-
cd 参数 :
- 参数:绝对路径或相对路径
- cd ~:回到自己的家目录
- cd …:回到上一级目录
-
-
mkdir:创建目录,默认创建一级目录
- mkdir [选项] 目录名;
- 选项:-p :创建多级目录
- mkdir [选项] 目录名;
-
rmdir:删除目录,默认删除空目录
- rmdir [选项] 目录名;
- 删除非空目录:rm -rf 目录名
-
touch:创建一个空文件
- touch 文件名称;
- 可以一次创建多个文件
-
cp:拷贝文件到指定目录
- cp [选项] source dest;
- 选项: -r:递归复制整个文件夹
- \cp -r source dest:强制覆盖原来的文件
- 一定要注意当前目录位置,然后确定源目录和目标目录
- cp [选项] source dest;
-
rm:移除文件或目录
- rm [选项] 要删除的文件或目录
- 选项:
- –rf:强制删除不提示,递归删除整个整个文件夹
- -f:强制删除不提示
- 选项:
- rm [选项] 要删除的文件或目录
-
mv:移动文件与目录或重命名
- mv oldNameFile newNameFile
-
cat:查看文件内容,只能浏览文件,而不能修改文件
- cat [选项] 查看的文件
- 选项:-n:显示行号
- 结尾加上 | more:分页显示,不会全部一下显示完。
- cat [选项] 查看的文件
-
more:是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more还内置了很多快捷键:
-
more 查看的文件
-
操作 功能说明 空白键(Space) 向下翻一页 Enter 向下翻一行 q 立刻离开more,不再显示该文件内容 Ctrl + F 向下滚动一屏 Ctrl + B 返回上一屏 = 输出当前行的行号 :f 输出文件名和当前行的行号
-
-
less:用来分屏查看文件内容,与more相似,但是更强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容。对于显示大型文件具有较高的效率。
- less 查看的文件
-
>
指令:输出重定向。如果不存在会创建文件,否则会将原来的文件内容覆盖。- ls -l > 文件;将列表的内容写入文件中覆盖
- cat 文件1 > 文件2 ; 将文件1的内容覆盖到文件2
-
>>
指令:追加。如果不存在会创建文件,否则不会覆盖原来的文件内容,而是追加到文件的尾部- ls -l > >文件;将列表的内容写入文件中追加
- echo “内容” >> 文件;将内容追加到文件
-
echo:输出内容到控制台
- echo [选项] 输出内容‘
-
head:用于输出文件中首部的内容,默认情况下显示前10行内容
- head [选项] 文件名;
- 选项:-n 数字;显示自定义数行
- head [选项] 文件名;
-
tail:用于输出文件中尾部的内容,默认情况下显示后10行内容
- tail [选项] 文件名;
- 选项:
- -n 数字;显示自定义数行
- -f; 实时追踪文档更新
- 选项:
- tail [选项] 文件名;
-
ln:软连接也叫符号连接,类似于Windows里的快捷方式,主要存放了链接其他文件的路径
- ln -s [源文件或目录] [软连接名]
-
history:查看已经执行过历史命令,也可以执行历史指令
- history [选项]
- 选项:数量;看前多少个指令
- history [选项]
-
-
时间日期类:
- 基本语法:
- date : 显示当前时间
- date+%Y:显示当前年份
- date+%m:显示当前月份
- date+%d:显示当前是哪一天
- date “+%Y-%m-%d %H:%M:S”:显示年月日时分秒
- 设置日期
- date -s 字符串时间;【eg : date -s “2020-4-2 00:00:00”】
- cal:查看日历
- cal [选项]
- 选项:指定一年的日历
- cal [选项]
- 基本语法:
-
搜索查找类
- find:从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端
- find (搜索范围) -name (文件名):按照指定的文件名查找模式查找文件。
- find (搜索范围) -user (用户名):按照指定的用户名查找模式查找文件。
- find (搜索范围) -size (+多少/-多少/多少):按照指定的文件大小查找模式查找文件(大于多少/小于多少/等于多少)
- 查询 /目录下所有.txt的文件:find / -name *.txt
- locate
- 可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
- 在第一次运行之前,必须使用updatedb指令创建locate数据库。
- grep:过滤查找,管道符,“|” 表示将前一个命令的处理结果输出传递给后面的命令处理。经常跟管道一起使用。
- grep [选项] 查找内容 源文件
- -n:显示匹配行及行号。
- -i:忽略大小写字母。
cat hello.txt | grep yes
- find:从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端
-
压缩和解压类
- gzip/gunzip :gzip压缩文件,gunzip解压缩
- gzip 文件; [原来文件不保留。]
- gunzip 文件.gz; [同样也不保留源文件]
- zip/unzip:压缩文件/解压
- zip [选项] XXX.zip 将要压缩的内容
- 选项:-r :递归压缩,即压缩目录
- unzip [选项] XXX.zip
- 选项:-d<目录> :指定解压后文件的存放目录
- zip [选项] XXX.zip 将要压缩的内容
- gzip/gunzip :gzip压缩文件,gunzip解压缩
-
tar :是打包指令,最后打包后的文件是tar.gz文件
- tar [选项] XXX.tar.gz 打包的内容(可是多个)
- 选项:
- -c:产生.tar打包文件
- -v:显示详细信息
- -f:指定压缩后的文件名
- -z:打包同时压缩
- -x:解压.tar文件
- 压缩:tar -zcvf (压缩后文件名) (要压缩的文件)
- 解压:tar -zxvf (要解压的文件)
- 解压到指定目录:tar -zxvf (要解压的文件) -C (指定目录),指定解压到的目录要存在。
- 选项:
8.组管理和权限管理
-
文件:
- 所有者
- 所在组
- 其他组
- 改变用户所在组
-
文件/目录所有者:
- 一般为文件的创建者,谁创建了该文件,就自然的称为该文件的所有者。
- 查看文件所有者:ls -ahl
- 修改文件所有者:chown (用户名) (文件名)
- 文件所在组不一定是文件所有者。
-
组的创建
- groupadd (组名)
-
文件/目录所在组
- 修改文件所在组:chgrp (组名) (文件名)
-
其他组
- 除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
-
改变用户所在组
- 在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组
- 改变用户所在组:usermod -g 组名 用户名
- 改变用户登录的初始目录:usermod -d 目录名 用户名
-
文件基本介绍:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jmxPs9tu-1584094488215)(C:\Users\apple\AppData\Roaming\Typora\typora-user-images\image-20200312210013000.png)]
-
rwx权限详解
- rwx作用到文件:r:read,可读。读取查看。
- w:write,可以修改。但不代表可以删除该文件。删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
- x:execute,可执行。可以被执行。
- rwx作用到目录:
- r:可以读取,ls查看目录内容。
- w:可以修改,目录内创建+删除+重命名目录。
- x:可执行,可以进入该目录
- rwx作用到文件:r:read,可读。读取查看。
-
修改权限 chmod
- 修改文件或者目录的权限
- u:所有者;g:所在组;o:其他人;a:所有人(u、g、o的总和
- chmod u=rwx,g=rx,o=x 文件目录名:分别权限
- chmod o+w 文件目录名:给其他人都增加写的权限
- chmod a-x 文件目录名:给所有的用户都减掉执行权限
-
通过数字变更权限
- 规则:r=4 w=2 x=1 rwx=4+2+1=7
- chmod u=rwx,g=rx,o=x 文件目录名 等价于 chmod 751 文件目录名
-
修改文件所有者 chown
- chown newowner file:改变文件的所有者
- chown newowner:newgroup file:改变用户的所有者和所在组
- -R:如果是目录,则使其下所有子文件或目录递归生效
-
修改文件所在组 chgrp
- chgrp newgroup file:改变文件的所有组
- -R:如果是目录,则使其下所有子文件或目录递归生效
9.RPM
- RPM:RedHat Package Manager,红帽软件包管理工具。
- RPM查询已安装的rpm列表:rpm -qa | grep xx
- rpm包的其它查询指令:
- rpm -qa:查询所安装的所有rpm软件包
- rpm -qa | more
- rpm -qa | grep xx
- rpm -q xx:查询xx软件包是否安装
- rpm -qi xx:查询软件包信息
- rpm -ql xx:查询软件包中的文件
- rpm -qf 文件全路径名:查询文件所属的软件包
- 卸载rpm包:rpm -e 软件包名称
- 删除时可能会发生依赖错误,忽视依赖强制删除的方法:rpm -e --nodeps软件包名称
- 安装rpm包:rpm -ivh 软件包全路径名称
- i=install:安装
- v=verbose:提示
- h=hash:进度条
10.YUM
- YUM:是一个shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用yum的前提是联网。
- yum list | grep xx:查询yum服务器是否有需要安装的软件
- yum install xx:安装指定的yum包
- yum -y remove xx:卸载指定的yum包
- tar [选项] XXX.tar.gz 打包的内容(可是多个)