目录
一、Linux文件系统
1. Linux文件类型
Linux 支持很多文件类型,其中非常重要的文件类型有: 普通文件,目录文件,链接文件,设备文件,管道文件,Socket 套接字文件等。
- 普通文件(-) : 用于存储信息和数据, Linux 用户可以根据访问权限对普通文件进行查看、更改和删除。比如:图片、声音、PDF、text、视频、源代码等等。
- 目录文件(d,directory file) :目录也是文件的一种,用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名。打开目录事实上就是打开目录文件。
- 符号链接文件(l,symbolic link) :保留了指向文件的地址而不是文件本身。
- 字符设备(c,char) :用来访问字符设备比如键盘。
- 设备文件(b,block) : 用来访问块设备比如硬盘、软盘。
- 管道文件(p,pipe) : 一种特殊类型的文件,用于进程之间的通信。
- 套接字(s,socket) :用于进程间的网络通信,也可以用于本机之间的非网络通信。
2. Linux目录树
所有可操作的计算机资源都存在于目录树这个结构中,对计算资源的访问,可以看做是对这棵目录树的访问。
系统启动相关
-
/boot: 这里存放的是启动 Linux 时使用的一些核心文件,是引导程序,内核等存放的目录。这个目录,包括了在引导过程中所必需的文件,引导程序的相关文件。
-
/etc: etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件。
/etc/profile 系统的每个用户设置环境变量信息,此文件的修改会影响到所有用户
-
/lib: lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。此目录下包含系统引导和在根用户执行命令时候所必需用到的共享库。
rpm(包的安装)、 firewalld(防火墙)
-
/sys: 虚拟⽂件系统,数据保存在内存中,主要保存于内存相关信息。
指令集合
-
/bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。比如cp、mv、mkdir、chmod、chown
-
/sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。reboot、shutdown
大多数涉及系统管理的命令都存放在/sbin目录中,它是超级权限用户 root 的可执行命令存放地,普通用 户 无权限执行这个目录下的命令,凡是目录 sbin 中包含的命令都是 root 权限才能执行的
比如:shutdown,reboot,ifconfig
-
/usr/bin:系统用户使用的应用程序与指令。是你在后期安装的一些软件的运行脚本
-
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
外部文件管理
-
/media: linux 系统挂载媒体设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
-
/dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
-
/mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
临时文件
-
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
-
/tmp: tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
用户账户
-
/root:
系统管理员的用户主目录。
-
/home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
-
/usr: usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
-
/usr/src: 内核源代码默认的放置目录。
/bin 实际是个软连接(理解为 windows 的快捷方式),链接到 /usr/bin。里面都是一些二进制的执行文件。我们常用的 yum su sudo cp 都在这个目录下。通常我们安装的程序,可以在这里访问到。
/sbin 也是一个软连接,链接到 /usr/sbin 存放二进制文件,管理员可执行的命令。
运行过程中要用
-
/var: var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
-
/proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展使用
-
/opt: opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
-
/srv:存放服务启动后需要提取的数据(不用服务器就是空)
3. Linux文件基本属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
-
chown (change owner) : 修改所属用户与组。
-
chmod (change mode) : 修改用户的权限。
实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件
-
当为 d 则是目录
-
当为 - 则是文件;
-
若是 l 则表示为链接文档(link file);(快捷方式类型)
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第 4-6 位确定属组(所有者的同组用户)拥有该文件的权限,第 7-9 位确定其他用户拥有该文件的权限。
在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
对于 root 用户来说,一般情况下,文件的权限对其不起作用。
4. 更改文件属性
1. chgrp:更改文件属组
chgrp -R [组名] [文件名]
2. chown:更改文件署主(也可以改组)
chown -R [主名] [文件名]
chown -R [主名:] [组名] [文件名]
3. chmod:更改文件权限
各权限的分数对照表如下:
-
r:4
-
w:2
-
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的
例如当权限为: -rwxrwx--- 分数则是:
-
owner = rwx = 4+2+1 = 7
-
group = rwx = 4+2+1 = 7
-
others= --- = 0+0+0 = 0
chmod -R 777 [文件或目录]
5. 文件及目录管理
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
在开始本教程前我们需要先知道什么是绝对路径与相对路径。
-
绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
-
相对路径: 路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
二、Linux基本命令
1. 处理目录常用命令
-
ls(英文全拼:list files): 列出目录及文件名 ll列出详细信息
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用) -d :仅列出目录本身,而不是列出目录内的文件数据(常用) -l :长数据串列出,包含文件的属性与权限等等数据;(常用) 或者ll
-
cd(英文全拼:change directory):切换目录
-
pwd(英文全拼:print work directory):显示目前的目录
-
mkdir(英文全拼:make directory):创建一个新的目录
mkdir -mp 目录名 -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~ -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
-
rmdir(英文全拼:remove directory):删除一个空的目录
-p :从该目录起,一次删除多级空目录
-
cp(英文全拼:copy file): 复制文件或目录
cp [-adfilprsu] 来源档(source) 目标档(destination) -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用) -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用); -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身; -r:递归持续复制,用于目录的复制行为;(常用)
-
rm(英文全拼:remove): 删除文件或目录
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息; -i :互动模式,在删除前会询问使用者是否动作 -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
-
mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
2. 文件及文件内容查看
Linux系统中使用以下命令来查看文件的内容:
-
cat 由第一行开始显示文件内容
-b : 列出行号,空白行不标号
-
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
-
nl 显示的时候,顺道输出行号!
-
more 一页一页的显示文件内容
在 more 这个程序的运行过程中,你有几个按键可以按的: - 空白键 (space):代表向下翻一页; - Enter :代表向下翻『一行』; - /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字; - :f :立刻显示出档名以及目前显示的行数; - q :代表立刻离开 more ,不再显示该文件内容。
-
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
空白键 :向下翻动一页; [pagedown]:向下翻动一页; [pageup] :向上翻动一页; /字串 :向下搜寻『字串』的功能; ?字串 :向上搜寻『字串』的功能;
-
head 只看头几行
head [-n 数字] 文件
-
tail 只看尾巴几行
tail [-n number] 文件 -n :后面接数字,代表显示几行的意思
3. 文件压缩命令
1. 文件打包并压缩
Linux 中的打包文件一般是以.tar 结尾的,压缩的命令一般是以.gz 结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
tar -zcvf [压缩后的文件名] [要打包压缩的文件]
-z:调用 gzip 压缩命令进行压缩
-c:打包文件
-v:显示运行过程
-f:指定文件名
2. 文件解压缩
tar -zxvf [压缩文件] -C [指定目录]
- 将 /test 下的 test.tar.gz 解压到当前目录下可以使用命令:
tar -xvf test.tar.gz
- 将 /test 下的 test.tar.gz 解压到根目录/usr 下:
tar -xvf test.tar.gz -C /usr
(- C 代表指定解压的位置)
4. 用户及用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
-
用户账号的添加、删除与修改。
-
用户口令的管理。
-
用户组的管理。
用户账号的管理
用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
1、添加新用户
useradd 选项 用户名
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 /home/用户名
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
2、删除用户
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
userdel 选项 用户名
常用选项是 -r 将用户主目录一并删除
3、修改账户
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
usermod 选项 用户名
常用的选项和 useradd 中一样
4、用户密码(口令)管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd
。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
passwd 选项 用户名
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
用户组的管理
不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
新建、删除、修改用户组属性
groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
groupadd -g 101 group2
此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
groupdel 用户组
groupmod 选项 用户组
groupmod -g 102 group2
此命令将组group2的组标识号修改为102。
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
$ newgrp root
5. 其他常用命令
- sudo + 命令:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
- grep [要搜索的字符串] [要搜索的文件] --color:搜索命令,--color表示高亮显示
- ps -ef / ps -aux:查看当前系统正在运行的进程,两者的区别是显示格式不同,经常结合grep命令查看某进程状态:ps -ef | grep redis
- kill -9 [pid]:杀死进程,-9表示强制终止
- ip addr:查看本机ip地址
- source /etc/profile:修改好环境变量后要source让其生效
Linux 查看端口占用情况
Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。
lsof 查看端口占用语法格式:
lsof -i:端口号
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
- -t (tcp) 仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化为数字
- -l 仅列出在Listen(监听)的服务状态
- -p 显示建立相关链接的程序名
关于防火墙的操作
为了保证系统的安全,不建议全部关闭防火墙,我们可以开放指定端口
-
开放指定端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
-
关闭指定端口:firewall-cmd --zone=public --remove-port=8080/tcp --permanent
-
立即生效:firewall-cmd --reload
-
查看开放的端口:firewall-cmd --zone=public --list-ports
-
查看防火墙状态:systemctl status firewalld
-
暂时关闭防火墙:systemctl stop firewalld
-
永久关闭防火墙:systemctl disable firewalld
-
开启防火墙:systemctl enable firewalld
6. VIM命令
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
7. yum命令
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
1. 列出所有可更新的软件清单命令:yum check-update
2. 更新所有软件命令:yum update
3. 仅安装指定的软件命令:yum install <package_name>
4. 仅更新指定的软件命令:yum update <package_name>
5. 列出所有可安裝的软件清单命令:yum list
6. 删除软件包命令:yum remove <package_name>
7. 查找软件包命令:yum search <keyword>
8. 硬链接和符号链接(软链接)的不同点
-
建立链接之后再删除原文件则符号链接失效,但是硬链接不会失效:符号链接失效的原理与“快捷方式”相同,硬链接不失效是因为已经建立了inode到数据区块的链接;
-
读取权限不同:硬链接的权限和原文件的权限相同,符号链接的权限是777(rwxrwxrwx);
-
文件类型不同:硬链接是普通文件(-),符号链接是链接文件(l);
-
占用空间不同:硬链接不产生inode和数据区块,符号链接会占用inode和区块,因此硬链接不占用任何空间,而符号链接占用的空间大小就是链接的大小(比如’/home/user/'有11个字母,所以相应的符号链接应该占用了11个Byte)
硬链接的限制:
不能链接跨文件系统的文件
不能连接目录:目录中的文件都要建立硬链接。
软链接的限制:
创建软连接的时候最好使用绝对路径创建,这样创建好的软连接,移动到其他目录下依然有效,若用相对路径创建则无效。