记录和分享最近所学的Linux,巩固基础和便于日后查找。文中有不对之处,欢迎指出。 写到一半发现有些知识点比较的片面🤔🤔,就先这样吧! VM版本:15.0.4 build-12990004 Linux:7.9.2009 (Core)
这里的知识点主要是基于一个尚硅谷Linux课程所总结的。
感兴趣的小伙伴可以点这里 尚硅谷韩老师Linux课程
目录
- 3.1 pwd指令
- 3.2 ls指令
- 3.3 cd指令
- 3.4 mkdir指令
- 3.5 rmdir指令
- 3.6 touch指令
- 3.7 cp指令
- 3.8 rm指令
- 3.8 mv指令
- 3.9 cat、more、less指令
- 3.10 >和>>指令
- 3.11 echo、head和tail指令
- 3.12 in指令
- 3.13 history指令
一、Linux介绍
1、Linux简介
严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL协议,允许任何人任意改动。但是,修改后的程序必须遵循GPL协议。
一些组织或厂家将 Linux 内核与GNU软件(系统软件和工具)整合起来,并提供一些安装界面和系统设定与管理工具,这样就构成了一个发型套件,例如Ubuntu、Red Hat、Centos、Fedora、SUSE、Debian、FreeBSD等。相对于内核版本,发行套件的版本号随着发布者的不同而不同,与系统内核的版本号是相对独立的。因此把Red Hat等直接说成是Linux是不确切的,它们是Linux的发行版本,更确切地说,应该叫做“以linux为核心的操作系统软件包”。
2、Linux的特点
- 开放性:挃系统遵循丐界标准规范,特别是遵循开放系统互连(OSI)国际标准。
- 多用户、多任务:多用户是指系统资源可以被不同的用户各自使用,每个用户可以对自己系统的资源有独立的权限,相互并不影响。多任务是指操作系统可以在同一时间运行多个程序,并且各个程序之间互不干扰、独立的运行。
- 良好的用户界面:Linux向用户提供了两种界面:用户界面和系统调用。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚劢条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。
- 设备独立性:操作系统把所有外部设备统一当作成文件来看待,只要安装驱劢程序,任何用户都可以像使用文件一样,操纵、使用这些设备。Linux是具有设备独立性的操作系统,内核具有高度适应能力。
- 可移植性强:所谓移植是指从一个平台跨到另一个平台的能力。而Linux是一种可移植性很强的操作系统,该系统从一个平台转移到其他平台上时仍然可以稳定运行而无需对系统做任何修改,也就是说无论是掌上电脑、个人计算机、小型机还是中型机,甚至是大型机,都可以运行该系统。
- 高安全性:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
- 高稳定性:Linux 内核的源代码是以标准规范的32 位(在64 位CPU上是64 位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux 的稳定,才使得一些安装 Linux 的主机像Unix 机一样常年不关而不曾宕机。
- 丰富的网络功能:完善的内置网络是Linux一大特点。Linux在通信和网络功能方面优越于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。
- 良好的可移植性:将操作系统从一个平台转移到另一个平台使它仍然能挄其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。
3、Linux和其他操作系统的区别
- 从发展背景看
Linux与其他操作系统得区别是,Linux是从一个比较成熟的操作系统发展而来的,其他的操作系统(如Windows等)都是自成体系,无对应相依托的操作系统。 - 从使用费用看
Linux与其他的操作系统最大的区别是,该系统是开放的、免费的、可以自由传播的操作系统,其他的操作系统是封闭的、需要付费的,而且费用很贵。Linux只有极少情况下需要付费 - 从自身特点看
1)优点:Linux是一个真正的多用户、多任务的操作系统,具有良好的兼容性、强大的可移植性、高度稳定性、漂亮的用户界面,有世界公认的较好的语言编辑器和更高效率的开发环境
2)缺点:
① 由于其使用“命令行”的终端机模式进行系统的管理,使其普及率受到了很大的限制
② 没有特定的支持厂商。在Linux上的所有套件几乎都是自由软件,自由软件的开发者大部分都不是盈利型的团体。所以在Linux上面的软件如果发生问题,只能自己寻找解决方案
③ 专业软件支持度不足。很多专业型软件在Linux上无法运行(例如很多市面上的专业绘图软件)
二、虚拟机和Linux系统安装
1、虚拟机安装
1)下载VMware Workstation
2)安装VMware Workstation
由于这基本是傻瓜式安装,而且我已经安装好了,这里就不进行安装演示。具体步骤可以看 安装VMware Workstation
在最后一步时,点击许可证将之前获得的密钥输入一个即可
点击进入VM---->帮助---->关于VMware Workstation(A),查看密钥是否有效。
2、Linux安装
1)下载Centos
上面两个镜像的下载方式都是一样的,且两个下载速度都比较快(可以达到6M左右)。下面是用网易开源镜像下载的过程
2)安装Centos
- 打开虚拟机,点击创建新的虚拟机,下一步
- 选择稍后安装操作系统,下一步
- 选择系统和系统的版本,下一步
- 确定虚拟机名字和安装位置,下一步
- 后续几步
- 编辑虚拟机设置和挂载镜像
设置硬件,记得点确定
挂载镜像,记得点确定 - 开启此虚拟机
- 系统基本设置编辑
在安装前还需对系统进行一些基本设置
分区设置
点击完成后,会出现手动分区的界面;添加/boot、swap、/三个分区
最后一步设置主机名
点击开始安装,终于开始安装了;大概20到30分钟左右,这个电脑配置有关
安装界面出现了用户设置 :Root密码设置、创建用户
设置root密码
创建用户(不一定要创建)
原地等待安装好Centos,重启即可
到此Centos7的安装完成
三、Linux的文件系统目录结构
- Linux的文件系统采用的是级层式的树状目录结构,在此结构中最上层的目录是“ / ”,然后在此目录下创建其他目录。
- Linux系统里,一切皆文件,硬盘、网卡、U盘等都会被映射成一个文件。
1、基本介绍
2、具体目录结构
- /bin
存放最经常使用的指令的,比如说cp,ls,kill - /sbin
存放系统管理员使用的系统管理指令 - /home
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录是以用户的账号命名的 - /root
系统管理员的用户主目录 - /boot
存放的是启动Linux时使用的一些核心文件 - /lib
库文件存放目录 - /etc
存放所有系统管理所需要的配置文件,比如说mysql中的配置文件,my.conf - /usr
用户的很多应用程序和文件都放在这个目录下,有点像Windows下的program files目录 - /proc,别动
这是系统内存的映射 - /srv,别动
service的缩写,存放的是一些服务启动之后需要使用的数据 - /sys,别动
系统相关文件 - /tmp
用来存放临时文件 - /dev
类似于windows的设备管理器,把所有的硬件用文件的形式存储 - /media
Linux会识别一些设备,例如U盘,光驱等等,识别后,Linux会把识别的设备挂载到这个目录下 - /mnt
用于让用户临时挂载别的文件系统,我们可以将外部的存储挂载在/nmt/上,然后进入该目录就可以查看里面的内容的,如我们之前设置的共享文件夹 - /opt
正常这个文件夹是用来放安装包的 - /usr/local
安装后的程序存放的地方 - /var
存放经常需要被修改的文件,比如各种日志文件 - /selinux
全名— security enhanced linux,安全加强linux。这个类似于windows中的杀毒软件,是一种安全系统,比如收到攻击的时候这个文件会被触发
3、注意
- Linux系统只有一个根目录“ / ”
- Linux系统每个目录存放要存放的内容是规划好的,一般不要乱放文件
- Linux以文件的形式来管理我们的设备,因此Linux系统一切皆文件
- 对根目录下的每个子目录要有一定的了解,每个目录用来放什么
四、远程登入和文件上传下载(Xshell Xftp)
先放上资源 Xshell6_Xftrp6免装破解版 提取码:5ybx
解压后打开文件,找到 !绿化.bat 文件并运行,弹出运行框通过按任意键创建快捷方式
注意:进行远程登入和文件上传下载,在联网的情况下才能进行。没有联网可以去右上角的设置中打开。
1、远程登入
一般情况,Linux都会安装在自己电脑的Windows上,但在企业中Linux的服务器一般都不在本机上,这个时候就需要进行远程登入,进行远程操作(使用命令行)
- Xshell是目前最好的远程登入到Linux操作系统的软件(完美的解决了中文乱码问题)
- 安装好Xshell后,需要打开远程服务器的SSHD服务,该服务会监听22号端口
注意:在进行远程登入前,务必将Linux先开启
- 在创建前必须先知道Linux的IP
在Linux的终端输入ifconfig指令(终端框背景默认是白底黑字,可以通过编辑修改) - 打开Xshell,创建新会话
输入你要登入的账户和密码即可,我这里登入的是root账户
2、远程文件上传下载
本机和Linux之间进行文件的上传下载,即进行文件传输
- Xftp 是目前远程传输文件比较好用的软件
有了之前Xshell的操作,这个就简单了,同样创建新会话输入IP
进行连接,现在就可以文件传输了
五、vi和vim编辑器
1、vi和vim基本介绍
- 所有的 Linux 系统都会内建 vi 文本编辑器。
- vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
2、vi和vim的三种常见模式
- 正常模式
在正常模式下,我们可以使用快捷键,以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。 - 插入模式
在这个模式当中,程序员可以输入内容。按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可。 - 命令行模式
在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的。
命令行模式指令 | 功能 |
:wq | 保存退出 |
:q | 退出(未进行编辑的情况下) |
:q! | 强行退出(编辑为保存也会强制退出) |
要求能够熟练三种模式的快速切换
3. 入门案例
- 利用vim编写一个java程序
ll指令查看当前目录有哪些子文件,test01文件已存在;重新打开程序仍在。
六、关机重启、用户登入注销和运行级别
1、关机重启
指令 | 功能 |
shutdown -h now | 立即重启 |
shutdown -h n | n分钟后关机 |
shutdown -h m:n | m小时n分钟后关机 |
shutdown -c | 取消按预定时间关机 |
shutdown -r now | 立即重启 |
reboot | 立即重启 |
halt | 立即挂机 |
sync | 将内存的数据同步到磁盘里 |
注:一般在重启或关机前执行sync命令以同步数据,防止数据丢失
2、用户登入注销
- ①登录时尽量少用 root 帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用”su - 用户名“命令来切换成系统管理员身份。
- ②root切换到普通用户不需要普通用户的密码,返回来需要;普通用户之间切换需要密码。
- ③在提示符下输入 logout 即可注销当前用户
下面使用logout指令进行用户注销,发现注销不了。请记住:logout注销当前用户只在运行级别3下有效
等等?运行级别?运行级别是什么???
3、运行级别
Linux一共有7个运行级别。可以说是Linux的7种状态,根据不同的需求进入相应的级别,比如:一般使用者进入图形级别5;程序员往往进入级别3;远程登入也是进入级别3
上面是在图形界面运行级别5,自然不能注销成功。常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件。
4、Centos6和Centos7的运行级别差别
- CentOS 6 的服务管理机制是 systemv,采用 service 命令来管理所有的服务。
- 从 CentOS 7 开始,服务从原来的由 systemv 管理机制升级到了systemd,统一采用 systemctl 命令来管理所有的服务。
自然而然地,运行级别也有了一定的差异。想要了解清楚,强烈推荐看下面这篇干货!!!!
CentOS 一看就明白的 CentOS 6 和 CentOS 7 运行级别的差异(超!超!超!详细!)
七、用户管理
说明:
- Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
- Linux 的每个用户需要至少要属于一个组,一个组可以有多个用户
用户和组的相关文件
- /etc/passwd文件------------ 用户信息
- /etc/group文件--------------- 组信息
- /etc/shadow文件-------------密码和登入信息(加密的)
1、添加、删除用户
指令 | 功能 |
useradd [ -d /home/指定目录] 用户名 | 创建新用户 |
userdel 用户名 | 删除用户 |
userdel -r 用户名 | 删除用户,/home下的文件也会删除 |
说明:
① 创建新用户时,没指定家目录时会自动创建和用户同名的家目录,没指定组时会自动创建和用户同名的组。
- 下面创建一个xa用户,一个指定家目录是/home/guitar的用户xb
- 删除两个用户
2、用户转换
指令 | 功能 |
su - 要转换到的用户名 | 转换到指定用户 |
exit | 返回到原来的用户 |
说明:
①在原登入用户上使用指令exit。远程上使用连接会断开;在虚拟机的终端上使用会退出终端
3、查看当前用户
指令 | 序号 |
whoami | 方法一 |
who am i | 方法二 |
4、添加组、创建用户时指定组、修改用户组
指令 | 功能 |
groupadd 组名 | 添加用户组 |
useradd -g 组名 用户名 | 创建指定组的用户 |
usermod -g 组名 用户名 | 修改用户组 |
八、实用指令
1、运行级别指令
这部分指令可以看之前的 CentOS 一看就明白的 CentOS 6 和 CentOS 7 运行级别的差异(超!超!超!详细!) 这篇博客比较详细
之前有介绍,单用户可以用修改root密码。在忘记密码无法登入时,就可以通过单用户不登入直接修改密码,下面就进行单用户修改密码操作。
- 进入开机界面 快速按e进行选择
- init=/bin/sh
- mount -o remount,rw /touch /.autorelabelexec /sbin/init疑问1:这个时候可能有人有疑问了,可以直接进入单用户修改密码,能这样改密码,那不就变得很不安全了吗??说明:这种做法只能在服务器(安装Linux的机子上)上操作 所以电影里的黑客都喜欢往机房里跑!!?疑问2:为什么要 “touch /.autorelabel” 这个命令?说明:
- SELinux 它是一个安全增强系统, 其内部有许多安全策略针对一些操作, 如果你做了这些操作, 没有得到策略的放行, 它会给你禁止掉。
- 比如你使用单用户模式修改root密码是不被策略放行的,怎么让 SELinux 策略放行呢?“touch /.autorelabel” 创建这样一个文件其实就是在告诉SELinux放行这个策略,就是通知一下。
2、帮助指令
说白了就是一个这个指令使用说明文档
- man 要查看的指令
- help 要查看的指令
- 直接百度
二者区别:help命令显示shell内部的帮助信息;man命令显示外部命令的帮助信息
其他帮助指令。
3、文件和目录操作指令
3.1 pwd指令
- 功能描述:显示当前工作目录的绝对路径
- 基本语法:pwd
3.2 ls指令
- 功能描述:显示当前目录的所有文件与文件夹
- 基本语法:ls [选项] [目录或文件]
常用选项 | 功能 |
-a | 显示当前目录所有的文件和目录,其中包括所有被隐藏的文件和文件夹 |
-l | 显示不被隐藏的所有文件与文件夹的详细信息,并成列表显示 |
-al | 是-a和-l功能的结合 |
注:ll 指令等价于 ls -l
3.3 cd指令
- 功能描述:用于切换目录
- 基本语法:
1. cd [参数](切换到指定目录)
2. cd ~ 或者 cd (切换到root目录)
3. cd . . (切换到上一级目录) - 常用参数:相对路径、绝对路径
1)利用绝对路径 -------------------- 可以指定到任何一个目录,但需要具体的路径
2) 相对路径------------------------- 可以根据当前目录,向上一级或多级目录跳转而不用知道具体的路径
举个栗子:
①进入/root目录
②利用绝对路径进入根目录root下的huahua目录,再利用相对路径将当前路径切换到家目录/home
③利用绝对路径进入huahua目录下的lie目录,再利用相对路径将当前路径切换到家目录/home
3)进入到当前目录的子目录---- cd 子目录[/子子目录]
3.4 mkdir指令
- 功能描述:用于创建目录
- 基本语法:mkdir [选项] 要创建的目录
常用选项 | 功能 |
-p | 创建多级目录 |
应用实例
1) 创建一个目录/root/dog
2) 创建多级目录/root/animal/tiger
3.5 rmdir指令
- 功能描述:用于删除空目录
- 基本语法:mkdir [选项] 要删除的空目录
应用实例
1) 删除一个目录/root/aa (aa目录下有文件)
2) 删除一个目录/root/cc
3.6 touch指令
- 功能描述:创建空文件
- 基本语法:touch 文件1[ 文件2 文件3 …]
3.7 cp指令
- 功能描述:将指定文件或目录拷贝到指定目录
- 基本语法:cp [选项] source dest
常用选项 | 功能 |
-r | 递归复制整个文件夹 |
应用实例
1) 复制单个文件
2) 复制整个文件夹
此时无法用cp source dest cp:略过目录“bbb/”
使用选项 -r 可以复制文件夹,也可以复制文件
3) 当发现目标目录下有相同文件会提示是否覆盖
3.8 rm指令
- 功能描述:将指定文件或目录拷贝到指定目录
- 基本语法:rm [选项] 要删除的文件或目录
常用选项 | 功能 |
-r | 递归删除整个文件夹 |
-f | 强制删除不提醒 |
应用实例
1)rm 要删除的文件 (加上-f提示不会显示)
2)rm -rf 要删除的文件夹或文件 (-rf recursion force 递归 强制)
3.8 mv指令
- 功能描述:文件与目录的移动或重命名
- 基本语法:mv old new
说明:old、new分别表示 要移动的文件/目录 和 文件/目录所要移到的目录或文件
总结:mv old new
- new 存在
old | new | 效果 |
文件 | 文件 | old移动到在new的当前文件下,覆盖new |
文件 /目录 | 目录 | old移动到new目录的目录下 |
- new 不存在
old | new | 效果 |
文件 | 文件 | old移动到new当前目录,再将old的名字改为new的名字 |
目录 | 目录 | old移动到new当前目录,再将old的名字改为new的名字 |
注:在当前目录下进行文件或目录的mv,可以理解为new不存在,即相当于重命名
3.9 cat、more、less指令
- 功能描述:查看文件内容
- 常用指令
常用指令 | 功能 |
cat [-n] 文件名 | 浏览文件 [带选项n会显示行号] |
cat [-n] 文件名 l more | 为了更好的观察,cat往往带上管道服务 l more,会将内容进行分页按空格切换到下一页 |
more 文件 | 浏览文件, 会将内容进行分页 |
less 文件 | 浏览文件, 会将内容进行分页 |
说明:cat、more、less三种指令都是用来浏览文件
- more 指令比cat更强大,可对内容分页,是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键
- less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
more快捷键
操作 | 功能说明 |
空白键 | 向下翻一页 |
回车 | 向下翻一行 |
q | 离开more |
Ctrl+F | 向下翻一页 |
Ctrl+B | 向上翻一页 |
= | 输出当前行的行号 |
:f | 输文件名和出当前行的行号 |
less快捷键
操作 | 功能说明 |
空白键 | 向下翻一页 |
pagedown | 向下翻一页 |
pageup | 向上翻一页 |
/字串 | 向下搜寻[字串]的功能 |
?字串 | 向上搜寻[字串]的功能 |
q | 离开less |
3.10 >和>>指令
- 功能描述:将内容写入文件
- 常用指令:内容 >/>> 文件
区别:>是一覆盖原文件的方式写入;>>是以追加的方式写入。
应用实例
1)现在将利用ll指令得到的/home下子目录写入a.txt文件中
3.11 echo、head和tail指令
- echo (用于输出内容到控制台)
echo 内容 - head(用于显示文件的开头部分内容,默认显示前10行)
head [-n] 文件 - tail(用于显示文件的结尾部分内容,默认显示最后10行)
tail [-n] 文件
3.12 in指令
- 功能描述:给原文件创建软连接/符号链接,类似windows里的快捷方式,主要存放链接其他目标文件的路径
- 基本语法:ln -s [原文件或目录] [软连接名]
应用实例
1) 在/home目录下创建一个软连接 linkToRoot,连接到 /root 目录
进入软连接文件, 会自动切换到软连接指向的文件
3.13 history指令
- 功能描述:操作最近使用的指令
- 基本语法:
1. history(查看所有历史指令)
2. history num(查看最近使用的num个指令)
3. ! num (执行编号为num的指令)
4、时间日期指令
4.1 date指令
- 功能描述:显示当前的时间信息
- 常用指令
常用指令 | 功能 |
date | 当前时间 |
date +%Y | 当前年份 |
date +%m | 当前月份 |
date +%d | 当前哪一天 |
date +%H | 当前小时 |
date +%M | 当前分钟 |
date +%S | 当前秒 |
date +%Y-%m-%d %H:%M:%S" | 显示年月日时分秒 |
说明:自定义设置显示信息时,%Y、%m、%d、%H、%M、%S可以组合使用,但date后面的表达式要用 ""括起来
4.2 cal指令
- 功能描述:显示日历
- 基本语法:cal [year]
说明:cal会显示当前月份的日历信息;若增加一个year选项,显示year年的所有月份信息
5、 搜索查询指令
5.1 find指令
- 功能描述:在文件树中查找符合条件的文件,并作出相应的处理
- 基本语法:find 搜索范围 [选项] [-print -exec -ok …]
常用选项 | 功能 |
-name 文件名 | 按照文件名来查 |
-user 用户名 | 按照文件归属用户来查 |
-size +n/-n/n | 按照文件大小来查 大于n 小于n 等于n(可以在n后面直接加单位M、k;默认是k;1M=1024k) |
命令 | 功能 |
find命令将匹配的文件输出到标准输出 | |
-exec | find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为 -exec command {} \ ; ,注意 { } 和\;之间的空格 |
-ok | 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 |
这里在补几个基础通配符,在查询文件时可以使用通配符匹配文件名
命令 | 功能 |
* | 表示一串任意的字符串 |
? | 表示一个任意的字符 |
[list] | 表示list中的任意单一字符 |
{string1, string2, … } | 表示 string1 或 string2 …中的任意一个字符串 |
应用实例
1)使用 -size 选项和 -print 命令
2)利用通配符匹配文件名,根据关键字匹配查找
注意:/表示根目录,. 表示当前目录;
5.2 locate指令
- 功能描述:可以快速定位到文件路径
- 基本语法:locate [选项] [搜索字符串]
常用选项 | 功能 |
-i | 查询时忽略大小写区别 |
-n / l num | -n 或者 -l, 至多显示 num 个输出 |
-c | 不输出文件名,仅计算找到的文件数量 |
-r | 使用正规运算式 做寻找的条件 |
-e | 只显示当前存在的文件条目 |
说明:
- locate命令是基于数据库查询的,要比find快得多。
- locate可能会找不到最近才建立或刚更名的文件。因为locate所查询的数据库由updatedb程序每天自动更新一次,updatedb是由cron daemon周期性建立,所以在使用locate前最好使用updatedb指令对数据库进行更新。
- locate 命令使用了十分复杂的匹配语法,也可以使用特殊字元(如 * 和 ? )来指定需要查找的样本。
应用实例
1)搜索包含某个字符串的相关文件
2)搜索 etc 目录下所有以 sh 开头的文件
3)搜索 etc 目录下所有以 sh 开头的文件的数量
4)搜索 etc 目录下文件名包含 lou 的文件
5)搜索 etc 目录下以 se 开头的文件下包含 lou 的文件,最多显示两条
6)新建的文件,更新数据库后才能查询到
7)查找文件时,不区分大小写
8)使用正则表达式
总结locate和find:
locate:
- 模糊查找命令,查找的是linux系统每天特点时间自动索引备份到系统数据库中的文件。
- 优点:查找文件速度快
- 缺点:查找到的结果不是实时结果(必要时,可手动执行updatedb命令索引文件到数据库,但是相当耗时。)
find:
- 通过遍历指定的目标目录查找文件,可以进行文件实时查找
- 优点:查找到的结果保证是实时结果
- 缺点:查找速度不如locate快
注:find功能比locate强大很多(这里只是简单介绍了下find),但强大的同时,也存在着弊端,它比locate要耗费更多的系统资源,它会扫描你要查询的目录,而这个目录越大,它耗费的资源和需要的时间也就越多。所以,在服务器上应该避免甚至禁止直接find 查询根目录,能用locate查询的,我们要尽量用locate去查询。
5.3 grep指令和管道|
- 管道
前面有使用过管道。管道可以把一个进程的输出通过管道连接到另一个进程的输入,也就是将前一个命令处理的结果传递给后面的命令处理 - grep指令
这是一个起过滤作用的指令,常常和 | 结合起来用,将前一个命令的结果通过 | 传递给grep进行过滤 - 基本语法:grep [选项] 查找内容 源文件
常用选项 | 功能 |
-i | 查询时忽略大小写区别 |
-n | 显示匹配行行数 |
应用实例
hello.txt文件有这些内容,下面结合grep | 操作该文件
1)利用grep,查看hello.txt中的“yes”所在行
2)通过| grep,grep对cat获得的文件内容进行过滤。下面是查找"yes"所在行一系列操作
3)grep 结合 | 查询/root中.txt文件
6、压缩和解压缩指令
这类指令一共有三种: gzip和gunzip、zip和unzip、tar
6.1 gzip和gunzip
功能描述:gzip压缩;gunzip解压
常用指令:
常用指令 | 功能 |
gzip 要压缩的文件 | 将一个文件压缩 |
gunzip 要压缩的文件 | 解压.gz文件到当前目录 |
应用实例
1)将/root下的OK.txt进行压缩,在解压
2)将/root下的cc文件夹进行压缩
6.2 zip和unzip
功能描述:zip压缩;unzip解压
常用指令 | 功能 | |
zip XXX.zip 要压缩的文件或目录 | 压缩一个文件或目录 | |
zip -r XXX.zip 要压缩的文件或目录 | 递归压缩,即压缩目录 | |
unzip XXX.zip | 解压.zip文件 | |
unzip -d 指定解压文件存放的目录 XXX.zip | 解压.zip到指定文件 |
应用实例
1)将/root下的OK.txt进行压缩,在解压
2)将/root的aa文件夹(含有几个文件)压缩,再解压
6.3 tar
- 功能描述:tar是打包指令,打包后的文
常用选项 | 功能 |
-c | 产生.tar包 |
-x | 解包.tar文件 |
-v | 显示详细内容 |
-f | 指定压缩后的文件 |
-z | 有gzip属性的 |
-C | 指定解压路径 |
注:打包不是压缩,下面是一些常见的解压/压缩命令
tar
解包:tar -xvf XXX.tar
打包:tar -cvf XXX.tar DirName
.tar.gz
解压:tar -zxvf XXX.tar.gz [ -C DirName ]
压缩:tar -zcvf XXX.tar.gz DirName
总结:
- gzip/gunzip,可以压缩解压 .gz 的文件,不能对文件夹操作
- zip/unzip,可以压缩解压 .zip 的文件或目录,注意-r递归压缩
- 关于tar , 用上面的常用指令即可
九、组管理
1、Linux组的基本介绍
在Linux中每一个用户必须属于一个组,不能独立于组外。
在Linux中每个文件、有 所有者、所在组、其他组的概念。
- 文件/目录 所有者,一般文件的所有者就是创建该文件的用户
- 文件/目录 所在组,一般文件的所在组就是创建该文件用户的所在组
- 文件/目录 其他组,除了文件的所有者和所有组的用户外,系统的其它用户都是文件的其他组
2、查看和修改所有者和所在组
- 查看 使用ls -la指令
- 修改
- 修改所有者:chown 新文件所有者 原件名
- 修改所在组:chgrp 新文件所在组 原件名
- 两个一起修改:chown 新文件所有者:新文件所在组 原文件
- -r : 可以将目录中的文件进行递归修改
3、文件、目录的权限
先看看下面这张图
图中的rwx权限中,r表示读的权限;w表示写的权限;x表示可执行权限。可以从红框框中看出:所有者用户拥有rw;所在组用户只有r;其他组用户可只有r。
4、修改文件/目录权限
十、定时任务调度
任务调度:指系统在某个时间执行的特定的命令和程序
任务调度分类
系统工作:有些重要的工作必须周而复始地执行。如病毒扫描
个人用户工作:个人用户可能在一些特殊时间段执行某些程序。如mysql的备份
- 基本语法:crontab [选项]
常用选项 | 功能 |
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
应用实例
1)每小时的每分钟向/root下的to.txt文件追加当前时间
- 输入命令 crontab -e 编辑定时任务,回车后会进入编辑器
- 编辑任务代码,退出编辑器后任务同时开始进行
- 看到提示正在进行;crontab -l查看所有任务;cat 查看to.txt文件
- 退出任务 crontab -r
想要弄清楚 */1 * * * * date >> /root/to.txt 的意思,请看下面
项目 | 含义 | |
/右边第一个 * | 一小时的第几分钟 | 0-59 |
/右边第二个 * | 一天中的第几小时 | 0-23 |
/右边第三个 * | 一个月中的第几天 | 1-31 |
/右边第四个 * | 一年中的第几月 | 1-12 |
/右边第五个 * | 一周中的的星期几 | 0-7(0、7都表示星期天) |
总的来说调度指令可以看作 */时间分配表达式 命令
2)每隔一分钟,就将当前的日期信息追加到/tmp/mydate文件中(使用shell脚本写)
- 编写一个文件 /home/mytask1.sh;写入脚本内容:date >> /temp/mydate
- 给mytask1.sh一个可执行权限
- crontab -e 编译定时任务并启动
十一、磁盘分区和挂载
1、了解分区
分区方式:
- mbr分区
①最多支持四个主分区
②系统只能安装在主分区,扩展分区要占一个主分区
③MBR最大只支持2TB,但拥有最好的兼容性
④LEGACY启动过程:开机 => BIOS初始化 => BIOS自检 => 引导操作系统 => 进入系统 - gtp分区
①支持无限多个主分区(但操作系统可能限制,比如windows下最多128个分区)
②最大支持18EB的大容量(1EB=1024 PB,1PB=10247B )
③windows764位以后支持gtp
④UEFI启动过程:开机 => UEFI初始化 => 引导操作系统 => 进入系统 比LEGACY少了两个步骤,所以启动系统的速度更快
Linux分区原理:
- Linux来说无论有几个分区, 分给哪一-目录使用,它归根结底就只有一个根目录,一个独立且唯一-的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫 “载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,具将一个分区和一一个目录联系起来。这时要载入的一一个分区将使它的存储空间在一个目录下获得。
在Linux中,磁盘的各个分区、U盘、手机设备等,都会挂载到一个根目录下的一个文件。这一特性使得Linux系统一切皆为文件。
Linux硬盘说明:
- Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上都是SCSI硬盘
- 对 于IDE硬盘,驱动器标识符为“hdx~",其中“hd"表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“ ~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
- 对于SCSI硬盘则标识为“sdx~", SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
lsblk -f 指令:查看系统的分区和挂载情况
可以发现,显示的分区情况、分区类型、挂载点和之前自定义设置是一致的。
2、挂载新磁盘
当磁盘空间不够用时,就需要去挂载新的磁盘!
需求:现在给Linux增加一块新的磁盘,并挂载到/home/newdisk目录下
增加一块硬盘的步骤
- 虚拟机增加硬盘
- 分区 fdisk /dev/sdb
- 格式化 mkfs -t xfs /dev/sdb1 (这里是格式化成xfs文件类型)
- 挂载 mount /dev/sdb1 /home/newdisk (将分区和文件形成一种联系)
- 设置可以自动挂载
可以结合下面的图再理解下Linux的分区挂载
1) 点击虚拟机---->设置,进入虚拟机设置添加硬盘
接下来 虚拟磁盘选推荐的SCSI---->创建新虚拟磁盘---->最大磁盘大小设为2G---->点击完成即可
使用reboot命令重启虚拟机更新系统消息,再次查看系统的分区和挂载情况
2)将sdb盘进行分区
- fdisk /dev/sdb
- m 获得帮助
- 选择命令操作 n 增加一个p分区(主分区)并编辑分区信息;w 写入分区的信息 。---->至此分区完成
3)分区格式化
mkfs -t xfs /dev/sdb1
4)分区挂载
mount /dev/sdb1 /home/newdisk
5)设置永久挂载
第四步虽然挂载成功,但系统重启这种挂载就会消失,即是一种临时挂载。
- vim /etc/fstab 进行配置文件
- mount -a 设置为自动挂载
到此,挂载新磁盘完成
十二、磁盘使用情况查询
实际工作中,需要不定时的查看磁盘使用空间情况,当空间不足时,及时添加磁盘。
1、df
df(disk filesystem)命令用来获取磁盘文件系统的整体使用情况
基本语法:df [选项]
常用选项 | 功能 |
-l | 以字节的单位来显示文件系统使用情况 |
-i | 以inode数量来显示系统使用情况 |
-h | 以KB、MB、GB的单位来显示系统使用情况 |
-a | 显示所有的文件系统使用情况 |
常用指令
- df
- df -l
- df -h 比较人性化、也比较常用
- df -i
- df -a
- df [选项] 文件目录
在后面指定一个文件或目录,会显示这个文件所在分区的使用情况
2、du
du 命令显示目录的磁盘使用空间情况
基本语法:du [选项] [目录]
常用选项 | 功能 |
-a | all 显示所有目录或文件的大小 |
-b | byte为单位,显示目录或文件的大小 |
-c | 显示目录或文件的的大小和总计数 |
-s | 仅显示目录或文件的总计数值 |
–max-depth=n | 表示只深入到第n层目录,此处设置为0,即表示不深入到子目录。 |
- du -a
- du -b
- du -hc 和 du -s
十三、Linux网络配置原理和说明、网络配置
1、Linux的三种网络连接
- 桥连接 MNnet0
1)桥连接的Linux就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。占有一个真实的ip地址,这也导致可能出现ip不够用,造成ip冲突。在桥接模式下,你需要手工为 虚拟系统配置 IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。
2)利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。 - 主机模式 MVnet1(虚拟网卡)
1)Linux是一个独立的主机,可以和主机相互通讯,但无法访问其他机器、公网。
2)利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,建议采用host-only模式。 - NAT MVnet8 (虚拟网卡)
1)虚拟系统会借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。使用一个虚拟ip ,不占用真实ip地址,不会造成ip冲突。
2)利用VMWare安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议采用NAT模式。
在前面安装Centos7的时候,选择的是NAT网络连接,所以下面简单地说明下NAT模式的原理,结合下面的图一起。
- 两个主机都使用教师网络资源,他们的网段都是192.168.1,网段相同可以通信。主机1和主机2通过网关可以和因特网进行通信。
- 主机1有两个ip,一个来自真实网卡,一个来自虚拟网卡;Linux虚拟机上会得到一个虚拟网卡分发的ip,这个ip和Windows上的虚拟ip属于同一网段192.168.144,进而Windows和Linux通过虚拟网卡构成了网络,可以进行通信。Linux还能借助Windows上的真实网卡和外网通信。
下面我们来看看Linux、Windows的ip情况
- Linux----------执行命令 ifconfig
- Windows-----执行cmd命令打开命令窗口-----输入命令 ipconfig
往下翻
可以看出Linux的ip和虚拟网卡上的ip的网段一样
查看Centos的网关
点击 编辑---->虚拟网络编辑器
检验是否进行通信:ping ip
- Linux是否通Windows
貌似没有反应,如果出现这种情况,是因为Windows防火墙的问题。关闭防火墙步骤:控制面板—>系统和安全—>Windows 防火墙—>打开或关闭防火墙—>关闭window公用网络设置防火墙—>确定
关闭后,立马就可以通了!! - Linux是否通外网
尝试着连接百度,成功 - Windows是否通Linux,成功
2、网络环境配置
之前已经联网了,为什么还要进行网络配置呢?Linux获取ip有两种方式: ①动态获取,每次获取的ip可能不一样 ②静态获取,每次获取静态指定的ip。当在进行远程登入,我们是不会希望ip改变的吧,不然每次还得去改增加麻烦;还有服务器的ip是必须固定的。
1)自动获取
CentOs7可以直接在右上角的设置中设置
2)静态获取
直接编辑配置文件来指定一个ip,注意:指定的ip要和Windows上的虚拟ip网段一致,确保可以正常通信。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
3)配置文件编辑好后
输入重启网络服务指令:systemctl restart network
十四、进程管理
1、进程基本介绍
- 在 Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。
- 系统启动之后的第一个进程由系统来创建,其余的进程都必须由已存在的进程来创建,新创建的进程叫做子进程,而创建子进程的进程叫做父进程。在系统启动及完成初始化之后,Linux自动创建的进程叫做根进程。根进程是Linux中所有进程的祖宗,其余进程都是根进程的子孙。具有同一个父进程的进程叫做兄弟进程。
- 每个进程都可能以两种方式存在的。前台与后台,前台进程就是用户目前的屏幕上可以进行操作的;后台进程则是实际在操作,由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
2、查看系统执行的进程
1)ps指令
常用选项 | 功能 |
-a | 显示当前终端所有进程 |
-u | 以用户的格式显示所有进程 |
-x | 显示后台进程 |
-f | 显示进程序列间的关系(查看父进程) |
- ps -u user
显示指定用户的所有进程 - ps -aux
显示比较详细的信息 - ps -aux | grep xxx
结合grep过滤 - ps -ef
显示父进程
2)tree指令
可以更加直观地来看消息(绿状)
常用选项 | 功能 |
-p | 显示进程的PID |
-u | 显示进程的用户id |
3、终止进程
常用选项 | 功能 |
kill [选项] 进程号 | 通过进程号杀死进程 |
killalll 进程名字 | 通过进程名字杀死进程,也支持通配符 |
kill常用 -9 强迫进程立即停止
应用实例
- 阻止远程非法用户登入
远程非法登入xh用户,在服务器上找到进程sshd服务对应的进程号,杀死
4、服务管理
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd ,防火墙等),因此我们又称为守护进程。
例如:sshd就会监听22号端口,远程登入就是通过连接22号端口,和sshd发生了关联
4.1 基本操作
- 基本语法:systemctl [选项] 服务名
针对某个具体服务
常用选项 | 功能 |
start | 开启服务 |
stop | 关闭服务 |
restart | 重启服务 |
status | 查看服务当前状态 |
enable | 设为开机自启动 |
disable | 设为开机不自启动 |
reload | 重新加载配置文件 |
管理命令
常用选项 | 功能 |
list-units --type=service | 显示所有已启动的服务 |
list-units --type service --all | 显示已加载但无效的服务 |
list-unit-files | 所有已安装的unit文件,而不仅仅是加载的服务 |
reboot | 重启 |
poweroff | 系统关机 |
应用实例
1)查看当前防火墙状态,关闭和重启防火墙
- 查看状态
- 关闭防火墙
- 重启
2)检测防火墙端口是否生效
- 在Windows的cmd窗口下执行 telnet ip 端口
注意:telnet不是Linux的内部指令,可能需要去控制面板中找到windows服务里的telnet终端,打勾
3)查看当前所有服务的自启动
- systemctl list-unit-files
4)利用管道服务 查看单个自启动
- systemctl list-unit-files | grep XXX
相对于Centos7,在Centos6中每一个服务的运行级别都会设置一个是否自启动这一项,在查看服务自启动情况中呈现的十分清晰;通过上面看出,Centos7似乎淡化了这点。下面的命令已经不适用于Centos7。
- Centos6中
- 查看当前所有服务的各个运行级别的自启动情况
chkconfig --list - 利用管道服务 查看单个运行级别的自启动情况
chkconfig --list | grep XXX - 关闭或打开服务
chkconfig --level num 服务名 on/off 【不写 – level num 表示在所有运行级别下】
4.2 动态监控进程
1)top指令
功能描述:top与ps命令很相似,都用来显示正在执行的进程。top是动态的,会实时更新进程的状态。
- 基本语法:top [选项]
常用选项
常用选项 | 功能 |
-d | 指令top每隔几秒更新。默认3秒 |
-i | 不显示任何闲置或僵死进程 |
-p | 通过进程id监控某个进程 |
交互操作
操作 | 功能 |
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序(进程号) |
q | 退出 |
应用实例
- top
- 指定特定用户
top----->按’ u ’ , 在输入用户名 回车
2)nestat
功能描述:查看系统网络情况
- 基本语法:nestat [选项]
- 常用选项
1)-an 按一定顺序排列输出
2)-p 显示哪个进程在调用
查看系统所有网络服务
查看sshd的服务信息
十五、RPM和yum
1、RPM
rpm(redhat package manager)是一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中,它生成具有.RPM 扩展名的文件。 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎,逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
1.1 查询
查看系统安装rpm包的情况
RPM的查询功能是极为强大,下面只举了几个常用的用法
- 基本语法:rpm [选项] [包]
常用选项 | 功能 |
-q | 查询已安装软件包,显示包名 、版本号、发行号 |
-a | 查询所有安装的包 |
-i | 查询包信息,包括名字、版本、以及描述 |
-l | 查询rpm包中文件列表 |
-R | 查询该包所依赖的别的包 |
-f | 查询拥有文件 file 的包 |
-c | 只列出配置文件(隐含-l选项) |
-d | 只列出文档文件(隐含-l选项) |
说明:一般,选项都会和 -q 结合一起使用,q是大红人
常用指令
- rpm -q 软件名
查看指定已安装软件包的包名 、版本号、发行号 - rpm -qa
查看所有已安装包的包名 、版本号、发行号;一般结合管道服务,分页或指定查询; - rpm -qi 软件名
查看指定已安装软件包详细信息 - rpm -ql 软件名
查看指定已安装软件包的文件 - rpm -qR 软件名
查询已安装软件所依赖的软件包及文件 - 查询未安装的包
在之前有些指令的选项多加一个 p 即可
1)rpm -qpl file.rpm
2)rpm -qpi file.rpm
3)rpm -qpR file.rpm
4) rpm -qpc file.rpm
5)rpm -qpd file.rpm
1.2 删除
卸载指定包
- 基本语法:rpm -e 软件名 [–nodeps]
注:当有其他的软件包依赖于该软件包,则卸载时会产生错误;而 --nodeps 可以强行删除此包,但一般不建议。
1.3 安装和升级
常用指令 | 功能 |
rpm -vih file.rpm | 安装一个新的rpm 包; |
rpm -ivh --relocate file.rpm | 软件包指定安装目录; |
rpm -Uvh file.rpm | 升级一个rpm 包; |
i=install v=verbose h=hash U=update
下面进行firefox浏览器的安装
- 先把fixfox删除
- 找到firefox包
需要先挂载上centos的iso文件,然后在文件挂载点下去找。点击虚拟机---->设置
此时桌面上出现镜像文件,进入终端找firefox包
注意:一般不在挂载点文件中安装,先把包复制到其他目录下再安装,如复制到/opt下
2、yum
yum是一个Shell前端软件管理器。基于RPM包管理,能够从指定的服务器自动下载包并安装,可以自动解决依赖关系,并一次安装所有的依赖软件包。
说明:
- yum很好的解决了包依赖问题,这是rpm所不及的,使用rpm必须手动解决。
- 使用yum必须联网,从服务器下载资源,下载并自动安装;rpm用于安装本地已有包。
- 常用指令:
- yum list | grep xxx
查询yum服务器上是否有指定的软件 - yum install xxx
下载并安装指定的软件