Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。
目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。
巴西联邦政府由于支持 Linux 而世界闻名。
有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。
印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。
中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。
在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。
葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。
法国和德国同样开始逐步采用 Linux。
linux是自由的,包括它的名字,无论怎么说都是对的
Linux的一切都是由文件组成的,任何操作实际上都是在对文件进行操作
本文所使用的Linux运行环境如下:
linux系统中:当你使用命令行输入命令后,系统没有任何回复则代表命令行使成功,若出现报错则代表失败
Linux跟Windows一样也是树形目录:(Linux的一切资源都挂载在 / 根节点下)
根节点的下一级目录都分别有着自己的作用:
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/srv:该目录存放一些服务启动之后需要提取的数据。
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
/tmp:这个目录是用来存放一些临时文件的。
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin: 系统用户使用的应用程序。
/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src: 内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
辅助命令:man + 命令名称,可以查看该命令的使用文档
sync # 将数据由内存同步到硬盘中。
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
shutdown –h now # 立马关机
shutdown –h 20:25 # 系统会在今天20:25关机
shutdown –h +10 # 十分钟后关机
shutdown –r now # 系统立马重启
shutdown –r +10 # 系统十分钟后重启
reboot # 就是重启,等同于 shutdown –r now
halt # 关闭系统,等同于shutdown –h now 和 poweroff
PS1:无论什么时候,在使用关机或重启命令的时候,都需要先运行sync命令,将数据从内存同步到硬盘中,在进行关机或者重启。
PS2:如果是使用云服务器的话,最好不要使用关机或重启命令,因为我们的服务是需要一直运行的,一般都不需要关机。
hostname命令:可以更改主机名称
如:hostname xiafan 则现在的主机名称为xiafan
ls命令:直接使用可查看当前文件夹的文件结构(也就是当前文件夹的目录)
参数:
pwd命令:返回当前用户所在的目录
cd命令:切换目录
知识补充:关于绝对路径和相对路径
绝对路径:与目前的所在的目录无关,无论何时路径都不会发生改变,如:C:\TENCENT
相对路径:与目前所在的目录有关,是基于目前所在的目录产生的路径,如:…/user
常见的相对路径: ./ 当前目录、…/ 上一级目录、/根目录
参数:
mkdir命令:创建文件夹
参数:
rmdir命令:删除空文件夹
参数:
cp命令:复制文件
命令语法:cp 要复制的文件 目的路径
若重复复制同一个文件名的文件到同一个目的路径,系统会提示你是否要覆盖文件。输入y代表yes,输入n代表no。
rm命令:删除文件或目录
参数:
关键命令:奥义之删库跑路
rm -rf / 和rm -rf /*
/代表根目录 /*代表根目录下的所有文件
如果使用了这种命令,则会直接导致系统瘫痪,慎用!除非想念牢饭的味道了
mv命令:1.移动文件或目录 2.重命名文件
移动文件或目录
命令语法: mv 要移动的文件或目录 目的路径
重命名文件
命令语法: mv 要重命名的文件或目录名 想要更改的文件或目录名
参数:
在我们使用ls -ll命令后会出现如下的文件信息(不包含隐藏文件的信息),下面,我们来解读这些信息代表什么(以第一行为例)
这一列信息,对应了以下的表
第一个字符是文件类型:
d:代表是一个目录
-:代表是一个文件
l:代表是一个链接文档(可以理解成Windows中的快捷方式)
b:代表装置文件里面的可供储存的接口设备(可随机存取装置)
c:代表装置文件里面的串行端口设备,例如键盘、鼠标( 一次性读取装置)
其中d、-、l比较常见
之后每三个字符代表一个权限组:
从左到右为:属主权限、属组权限、其他用户权限
这个属性非常好理解,多少个子目录就是多少个
标识文件创建者和其所在的组
第一个为文件创建者,第二个为文件创建者所在的用户组
文件大小
表示文件占用的空间大小(不包括子文件),单位为B(即字节)
最后访问时间
记录最后一次访问该文件的时间
文件名
文件名为bin,后面的->usr/bin表示它是一个链接文档(可以理解成Windows中的快捷方式),也就是打开它会自动指向->后面的目录
chgrp命令:更改文件的属组(不加参数时只改变指定文件,并不改变其下的文件)
命令语法:chgrp 新的属组名 文件名
参数:
chown命令:更改文件属主,也可以同时更改文件属组(不加参数时只改变指定文件,并不改变其下的文件)
命令语法:
参数:
chmod命令==(重要)==:更改文件的九个属性
命令语法:chmod xyz
参数:
这里的xyz,每一个字母都代表了一个权限组的权限(顺序和文件属性中的权限组一样,从左往右为:属主权限、属组权限、其他用户权限)
这里的输入的xyz应该是三个数字,数字的说明如下:
可读r的权重为4,可写w的权重为2,可执行x的权重为1
假设本来是0,表示不可读不可写不可执行,如果要设置为可读,则要设置为4,如果要设置为可读可写,则要设置为6,如果要可读可写可执行,则要设置为7
例如:
命令 chmod 777 代表将该文件设置为所有用户均可读可写可执行的状态,以此类推
cat命令(常用):由第一行开始从上往下显示文件内容,适合用来读配置文件或者文章
tac命令:顾名思义,是cat反过来,也就是由最后一行开始从下往上显示文件内容
nl命令(常用):和cat命令相同,但是会显示行号,适合查看代码
more命令:显示的内容只会填满当前页面,如果要阅读剩下的内容,按下空格代表阅读下一页,按下回车代表阅读下一行
less命令:与more命令类似,但是它不止能有more的功能,还能用↑键和↓键进行上下翻动
PS:more和less在查询的过程和查询完毕后并不会退出到终端控制台
与more和less搭配使用的命令:
q命令:有些查看命令在查看完毕后不会跳出到控制台,需要使用q命令跳出
/命令:/+所要查找的字符串,可以在当前的文件查看位置向下查询想要的字符串,对其标亮
?命令:?+所要查找的字符串,可以在当前的文件查看位置向上查询想要的字符串,对其标亮
head命令:从上往下查看几行
参数:
tail命令:从下往上查看几行
参数:
head和tail命令的语法:head/tail -n 查看的行数 查看的文件
PS:/etc/sysconfig/network-scripts 是网络配置目录
ping命令:查看与相关IP网络是否连通,和windows的ping一样
ifconfig命令:相当于windows的ipconfig,查看当前系统的网络情况
关于硬链接和软链接的释义:
硬链接:源文件和链接文件的内容相同。如果删除了源文件,则链接文件并不会失效,还会保存着原来的信息。源文件更新了,链接文件会同步更新。相当于一个同步更新的复制文件,在重要的文件上可以使用硬链接,防止不小心删除源文件。其本质还是一个文件(d),而不是一个链接文件(l)
软链接:就是我们前面提到的链接文件(l),类似于Windows的快捷方式,源文件被删除则链接文件会直接失效。
touch命令:创建文件
命令语法:touch 创建的文件名
echo命令:输入字符串,可以输入到文件中
ln命令(重要):创建一个硬链接
参数:
命令语法:
演化历史:Vi->Vim
使用过Unix的用户应该都有接触过VI编辑器,这是Unix最初的编辑器,使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。当然它的复杂化让人厌恶,但是其大量特性支撑着Unix系统,而在Linux中vi得到改进,也就是接下来要讲的vim编辑器。
Vim是从vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说,vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim则可以说是程序开发者的一项很好用的工具。
通过一些插件,可以使Vim跟我们平时使用的IDE拥有一样的功能来编辑代码
Vi或Vim都有三种模式:分别为命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
Vim的工作模式如图所示:
Vim 文件名:创建一个新文件或打开一个已存在的文件进行编辑
通过该命令进入文件后,我们处于命令模式中,各模式常用的命令和键盘按键作用如下:
命令模式:
i命令:切换到输入模式
x命令:删除当前光标所在的字符(防止输错命令后无法更改)
:命令:进入底线命令模式
输入模式中比较常用的键盘按键:
底线命令模式:
常用用法::wq可以保存文件并返回终端
其他按键的说明(无需记忆,需要用到的时候再查表就可以):
第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等。
第二部分:一般模式切换到编辑模式的可用的按钮说明。
第三部分:一般模式切换到指令行模式的可用的按钮说明。
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
●用户账号的添加、删除与修改。
●用户口令的管理。
●用户组的管理。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录ShelI等资源。
这里可以通过参数来帮助指定用户的属组等属性,但不作演示,请有兴趣的朋友自行了解
该命令有多个参数,这里只给最常用的-m和-g参数
-m:其作用是:创建用户,并自动创建该用户的主目录,对其他参数感兴趣的话可以自行搜索了解
-g:其作用是:设置用户的用户组,并自动创建该用户的主目录,对其他参数感兴趣的话可以自行搜索了解
如:useradd -m xiafan 则会创建一个xiafan用户,并在/home目录下自动创建一个/xiafan的用户主目录
该命令有多个参数,这里只给最常用的-r参数,其作用是:删除用户,并自动删除该用户的主目录,对其他参数感兴趣的话可以自行搜索了解
如:userdel -r xiafan 则会删除一个xiafan用户,并在/home目录下自动删除一个/xiafan的用户主目录
该命令有多个参数,这里只给最常用的-d参数,其作用是:修改用户的主目录
如:usermode -d /home/xf xiafan
root用户和其他用户的区别:root用户在终端时,命令最前面会是#符号,二其他用户则是$符号
passwd命令:有关密码的设置(密码要超过8位,而且不能过于简单)
命令语法为:passwd 用户名或直接用passwd
PS:在Linux中,密码是不会显示的,并不是系统不响应键盘输入
如果是root用户:
密码设置过程如下:
passwd xiafan //(设置密码命令)
new password://(输入用户密码)
re password: //(验证密码)
如果是普通用户:
密码设置过程如下:
passwd
(current)UNIX password: //(输入你当前用户的密码)
new password: //(输入用户新密码)
re password: //(验证密码)
命令1:passwd -l 用户名,冻结用户
如:passwd -l xiafan,会将xiafan用户锁定冻结,无法再登录
命令2:passwd -d 用户名,用户密码清空(用户没有密码是无法登录的,算是曲线救国式的冻结)
如:passwd -d xiafan,则xiafan用户无法再登录
我们在第一章就提过了,Linux中的一切都是以文件形式存在的,所以所谓的账号也是以文件的形式存在的,当我们创建账户的信息的时候,实际上是在/etc/passwd文件下“注册”了一个用户,而所谓的增删改,就是在对该文件中与该用户有关的信息进行更新,并以此实现了账号的管理
关于/etc/passwd文件:
如:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JYLcCPdf-1637138663490)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20211116221418642.png)]
其含义为:用户名:口令(登录密码,我们不可见) :用户标识号:组标识号:注释性描述:主目录:登录Shell
各用户加密后的密码存储在/etc/shadow文件中
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维)。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理和我们上面所说的账号管理其实是相当类似的,都有增删改的操作
命令语法:groupadd 用户组名
如:groupadd xiafan,会增加一个名为xiafan的用户组
如果不指定用户组的id的话,一般Linux系统会从1000开始自动递增赋值
该命令有多个参数,这里只给最常用的-g参数,其作用是:指定用户组id
如:groupadd -g 369 xiafan 则会创建一个xiafan用户组,且id为369
命令语法:groupdel 用户组名
如:groupdel xiafan 则会删除一个xiafan用户组
命令语法:groupmod 参数 修改后的信息… 原用户组名
参数-g可以修改用户组id,参数-n可以修改用户组名称
如:groupmod -g 666 -n xf xiafan,则会把xiafan用户组改名为xf,并将用户组id改为666
先登录用户,再使用newgrp命令更改用户组
更改命令为:newgrp 更改后的用户组
如:newgrp root
同账号管理的本质一样,用户组管理的本质也是在一个文件中“注册”了用户组的信息,而这个文件就是/ect/group文件,增删改的操作也就是更新这个文件的相应内容
直接使用df就可以列出文件系统整体的磁盘使用量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aw7xhdzB-1637138663492)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20211116222933647.png)]
使用-h参数,会将内存单位设为M
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lvGlcdrV-1637138663493)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20211116222939523.png)]
du命令可以直接查看当前目录下的磁盘空间使用量(不包括隐藏文件)
使用-a参数可以查看出包括隐藏文件的当前目录下的磁盘空间使用量
ps命令:查看当前系统上正在运行的各种进程信息
参数:
常用命令: ps -aux 可以查看当前所有的进程,一般会搭配grep命令来使用
补充:在Linux系统中 | 符号被当作管道符,如A|B,所谓管道符就是把A查询到的信息,传入到B中进行操作,|相当于一个管道
grep命令:查找符合条件的字符串,常与ps命令搭配查找想要查看的进程信息
如:ps -aux|grep mysql,则可以查看与mysql相关的进程信息
pstree命令:可以查看进程树结构目录
参数:
常用命令:pstree -up
kill命令:强制结束进程
命令语法:kill -9 进程id,-9参数是固定的,必须要有