Linux
Linux 系统启动过程
Linux 关机
不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。
关机的命令有 shutdown –h now ,halt, poweroff 和 init 0 , 重启系统的命令有 shutdown –r now ,reboot ,init 6。
图形模式与文字模式的切换方式
命令窗口切换的快捷键为 Alt + Space + F1~F6. 如果在图形界面下按Alt + Shift + Ctrl + F1~F6 切换至命令窗口。
当进入命令窗口界面后再返回图形界面,按下Ctrl + Alt + F7 。
Linux 系统目录结构
系统启动必须:
/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中。
指令集合:
/bin:存放着最常用的程序和指令
/sbin:只有系统管理员能使用的程序和指令。
外部文件管理:
/dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件:
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
/tmp:这个目录是用来存放一些临时文件的。
账户:
/root:系统管理员的用户主目录。
/home:用户的主目录,以用户的账号命名的。
/selinux 存放selinux相关的文件(Selinux 是一个安全机制,类似于 windows 的防火墙)。
/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序与指令。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
运行过程中要用:
/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
/proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展用的:
/opt:默认是空的,我们安装额外软件可以放在这个里面。
/srv:存放服务启动后需要提取的数据(不用服务器就是空)
Linux 文件基本属性
显示一个文件的属性以及文件所属的用户和组 的命令:
ll 或ls -l
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为 d 则是目录;
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
r=4 w=2 x=1
修改文件或目录的所属用户与权限 的两个命令:
chown (change owner) : 修改所属用户与组
chmod (change mode) : 修改用户的权限
chgrp 更改文件或目录属组
chgrp [-cfhRv] [--help] [--version] [所属群组] [文件和目录]
-c 或 --changes:效果类似"-v"参数,但仅回报更改的部分。
-f 或 --quiet 或 --silent:不显示错误信息。
-h 或 --no-dereference:只对符号连接的文件作修改,而不改动其他任何相关文件。
-R 或 --recursive:递归处理,将指定目录下的所有文件及子目录一并处理。
-v 或 --verbose:显示指令执行过程。
--help:在线帮助。
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
--version:显示版本信息。
chown 设置文件所有者和文件关联组
使用权限 : root
chown [-cfhvR] [--help] [--version] user[:group] file
user : 新的文件拥有者的使用者 ID
group : 新的文件拥有者的使用者组(group)
-c : 显示更改的部分的信息
-f : 忽略错误信息
-h :修复符号链接
-v : 显示详细的处理信息
-R : 处理指定目录以及其子目录下的所有文件
--help : 显示辅助说明
--version : 显示版本
chmod 控制用户对文件的权限的命令
chmod [-cfvR] [--help] [--version] mode file
mode : 权限设定字串
[ugoa] [[+-=] [rwxX]...]
其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
Linux文件与目录管理
ls 列出目录
-a:全部文件,连同隐藏文件
-d:仅列出文件本身,而不是列出目录内的文件数据
-l:长数据串列出,包含文件属性与权限等
cd 切换目录
pwd 显示目前所在目录
-p:显示确实路径,而非链接路径
mkdir 创建新目录
-m:配置文件权限 例,[root@www tmp]# mkdir -m 711 test
-p:将所需要的目录递归创建出来,可创建多层目录
rmdir 删除空的目录
-p:从目录起,删除多级空目录
cp 复制文件或目录
[root@www ~]# cp [-adfilprsu] 来源档 目标档
-a:相当于-pdr,用于复制文件或目录时保留更多的属性信息
- -p:保留原文件的修改时间、访问时间和权限。(备份常用)
- -d:若源文件为链接文件,则复制链接文件本身而非链接指向的文件。
- -r:递归地复制整个目录
-f: 为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次
-i:若目标档已经存在,再覆盖时候会先询问动作的进行
-l: 进行硬式链接的链接档创建,而非复制文件本身
-s:复制成为符号链接档(软连接),即捷径文件
-u:若目标档比来源档旧,会进行升级
rm 删除文件或目录
rm [-fir] 文件或目录
-f: 忽略不存在的文件,不会出现警告信息
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除
mv 移动文件或目录,及修改名称
[root@www ~]# mv [-fiu] 来源档 目标档
[root@www ~]# mv 原名称 更改名
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件已经存在时,就会询问是否覆盖
-u :若目标文件已经存在,且源文件比较新,可以覆盖目标文件。
Linux 文件内容查看
cat [-AbEnTv]
由第一行开始显示文件内容
-A: 相当于-vET
-b:列出行号,空白行不标号
-E:将结尾的断行字节 $ 显示出来
-n:列出行号,空白行也算
-T:将 [tab] 按键以 ^I 显示出来
-v :列出一些看不出来的特殊字符
tac
与cat命令刚好相反,文件内容从最后一行开始显示
nl
显示行号
nl [-bnw] 文件
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号
-b t :如果有空行,空的那一行不要列出行号(默认值)
-n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示
-n rn :行号在自己栏位的最右方显示,且不加 0
-n rz :行号在自己栏位的最右方显示,且加 0
-w :行号栏位的占用的位数
more
一页一页翻动
space:代表向下翻一页
Enter:代表向下翻一行
/字串:向下搜寻『字串』这个关键字
:f :立刻显示出档名以及目前显示的行数
q:立刻离开more,不再显示该文件内容
b:往回翻页,只对文件有用,对线管无用
less
一页一页翻动
空白键 :向下翻动一页
[pagedown]:向下翻动一页
[pageup] :向上翻动一页
/字串 :向下搜寻『字串』的功能
?字串 :向上搜寻『字串』的功能
n:重复前一个搜寻 (与 / 或 ? 有关)
N:反向的重复前一个搜寻 (与 / 或 ? 有关)
q:离开 less 这个程序
head
取文件前几行
head [-n number] 文件
-n:后接数字,代表显示几行
默认的情况中,显示前面 10 行
tail
取文件后几行
tail [-n number] 文件
-n:后接数字,代表显示几行
-f:表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
Linux磁盘管理
Linux 磁盘管理常用三个命令为 df、du 和 fdisk。
df(英文全称:disk free):列出文件系统的整体磁盘使用量
du(英文全称:disk used):检查磁盘空间使用量
fdisk:用于磁盘分区
关于df(disk free)
df [-ahikHTm] [目录或文件名]
只输入df 会将系统内所有文件系统列出来
-a:显示所有文件系统,包括虚拟文件系统
-h:以人类可读方式显示输出结果
-i:显示inode使用情况
-k:以KB作为单位显示
-m:以MB作为单位显示
-H:使用1000字节作为基本单位
-T:显示文件系统的类型
-t:只显示指定类型的文件系统
关于du(disk used)
du [-ahskm] 文件或目录名称
只输入du 会分析当前所在目录里的子目录所占用的硬盘空间
-a 列出所有的文件与目录容量
-h 以人类可读方式显示输出结果
-s 仅显示指定目录下的所有文件夹容量
-S 包括子目录下的总计,与 -s 有点差别
-k 以KB作为单位显示
-m 以MB作为单位显示
关于fdisk
fdisk [-l] 装置名称
-l :输出后面接的装置所有的分区内容
磁盘格式化(make filesystem)
mkfs [-t 文件系统格式] 装置文件名
-t:可以借文件系统格式
-
查看mkfs支持的文件格式
mkfs [tab] [tab]
磁盘检验(file system check)
fsck [-t 文件系统] [-ACay] 装置名称
-t:给定档案系统的型式,若在/etc/fstab中已有定义或kernel本身已有支援则不需要加上此参数
-s:依序一个一个地执行fsck的指令来检查
-A:对/etc/fstab中所有列出来的分区做检查
-C:显示完整的检查进度
-d:打印出e2fsck的debug结果
-p:同时有 -A 条件时,同时有多个 fsck 的检查一起执行
-R : 同时有 -A 条件时,省略 / 不检查
-V:详细显示模式
-a:如果检查有错则自动修复
-r: 如果检查有错则由使用者回答是否修复
-y:选项指定检测每个文件是自动输入yes,在不确定那些是不是正常的时候,可以执行 # fsck -y 全部检查修复
-f:强制检查,会显示检查过程
磁盘挂载与卸除
磁盘挂载:
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
磁盘卸载:
umount [-fn] 装置文件名或挂载点
-f:强制卸除
-n:不升级/etc/mtab的情况下卸除
Linux vi/vim
命令模式
用户刚刚启动 vi/vim,便进入了命令模式
i:切换到输入模式,在光标当前位置输入文本
o:当前行的下方插入一个新行,并进入输入模式
O:在当前行的上方插入一个新行,并进入输入模式
a:进入插入模式,在光标下一个位置开始输入文本
::切换到底线命令模式,以最底一行输入命令
x:删除光标所在处的字符
dd:剪切当前行
yy:复制当前行
p:粘贴剪贴板的内容到光标下方
P:粘贴剪贴板的内容到光标上方
u:撤销上一次操作
Ctrl+r:重做上一次撤销的操作
:w:保存文件
:q:退出
:q!:强制退出,不保存修改
命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令
输入模式
Shift+字符:输入字符
Enter:换行
BACK SPACE:退格键,删除光标前一个字符
DEL:删除键,删除光标后一个字符
方向键:在文本中移动光标
HOME/END:移动光标到行首/行尾
Page Up/Page Down:上/下翻页
Insert:切换光标为输入/替换模式,光标将变成竖线/下划线
ESC:退出输入模式,切换到命令模式
底线命令模式
命令模式下按下 :(英文冒号)就进入了底线命令模式
:w:保存文件
:q:退出 Vim 编辑器
:wq:保存文件并退出 Vim 编辑器
:q!:强制退出Vim编辑器,不保存修改
按 ESC 键可随时退出底线命令模式
其他
Linux系统的启动5个阶段:
内核的引导
运行 init
系统初始化
建立终端
用户登录系统
复制链接档与复制文件
复制链接档和复制文件本身的区别主要在于链接的类型不同,导致操作的结果和机制也不同。 复制链接档通常是指创建软链接(符号链接),而复制文件本身则是直接复制文件的内容和元数据。
复制文件本身的操作会:
产生新的Inode:复制文件本身会在磁盘上创建一个新的文件,具有全新的内容和独立的Inode。修改其中一个文件不会影响另一个
保留元数据:复制文件时,会保留原文件的元数据(如权限、所有权等),但内容是完全独立的
复制链接档的操作则:
不复制内容:创建软链接时,实际上并不复制文件内容到新位置,只是创建一个指向原文件路径的引用。修改原文件会影响通过软链接访问的内容
保留元数据:软链接保留了原文件的路径信息,但本身不包含任何原文件的内容
线管
Linux管线(Pipe)是用竖杠(|)表示的一种特殊符号,管道符的作用是将前一个命令的标准输出作为后一个命令的标准输入进行处理
管道命令的执行流程是单向的、先进先出的,它是一个无结构的、固定大小的字节流。写进程在管道的尾端写入数据,读进程在管道的首端读出数据。数据一旦被读出,就会从管道中移除,其他进程不能再读取这些数据。管道提供了简单的流控制机制,当管道没有数据可读时,读进程会阻塞,直到有数据写入;当管道已满时,写进程会阻塞,直到管道中有空间可写
less和more的区别
功能差异:
less:支持向前和向后滚动查看文件内容,支持搜索、跳转等功能,显示效果会根据屏幕大小自动调整,更加友好和美观。
more:只能向前滚动查看文件内容,不支持向后滚动,功能相对简单,显示效果是将整个文件铺满屏幕。
操作方式:
less:可以使用方向键进行滚动,支持搜索、跳转等功能。
more:只能使用空格键向前翻页,使用b键向后翻页。
关于对链接档的理解
1).删除符号连接f3,对f1,f2无影响
2).删除硬连接f2,对f1,f3也无影响
3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效
4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除
关于inode
文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
inode的内容
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据块的位置
df和du的区别
df 命令检查文件系统的磁盘空间占用情况
du 命令是对文件和目录在磁盘中使用的空间的查看
目录项
目录是个文件,持久化存储在磁盘,而目录项是内核一个数据结构,缓存在内存。目录项这个数据结构不只是表示目录,也是可以表示文件的。
超级用户的切换
1.切换为root超级用户的命令为:
sudo su
2.切换普通用户的命令为
su username
绝对路径和相对路径
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。
Linux 下的连接档种类
Linux 下的连接档有两个种类。一个是类似于 win 电脑的快捷方式,称为软连接,软连接也可以叫做符号链接。另一种是通过文件系统的 inode 连接来产生的,类似于 win 电脑的复制,但是不产生新的文件,称为硬链接。硬链接也可以称作为实体连接。
移除文件与删除文件
移除文件通常指的是将文件从目录中移除,但文件数据仍然保留在硬盘上,只是变得不可见而已。而删除文件则是将文件从文件系统中彻底移除,数据也会被清除。
递归
递归是一种编程技巧,指一个过程或函数在其定义中直接或间接调用自身的方法。 递归在程序设计语言中广泛应用,通过将一个大问题分解为小问题来解决,最终达到解决问题的目的
标签:文件,--,文件系统,目录,Linux,链接 From: https://www.cnblogs.com/xmt123/p/18549905