linux学系笔记
1 pwd 打印当前目录位置
2 mkdir 创建目录
-p 递归创建未存在的父目录
-m 设置目录的属性权限
mkdir -m 777 testa # 创建以777为权限的testa目录
3 rmdir 删除空目录
-p 递归删除上层空目录
rmdir -p /testa/testb #同时删除 testa testb连个空目录
4 $PATH 可执行文件路径的变量,每个目录用冒号隔开
echo $PATH #输出变量
5 ls 显示文件或者目录信息
[root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目录名称.. [root@study ~]# ls [--color={never,auto,always}] 文件名或目录名称.. [root@study ~]# ls [--full-time] 文件名或目录名称.. 选项与参数: -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用) -A :全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录 -d :仅列出目录本身,而不是列出目录内的文件数据(常用) -f :直接列出结果,而不进行排序 (ls 默认会以文件名排序!) -F :根据文件、目录等信息,给予附加数据结构,例如: *:代表可可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件; -h :将文件大小以人类较易读的方式(例如 GB, KB 等等)列出来; -i :列出 inode 号码,inode 的意义下一章将会介绍; -l :长数据串行出,包含文件的属性与权限等等数据;(常用) -n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!) -r :将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小; -R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来; -S :以文件大小大小排序,而不是用文件名排序; -t :依时间排序,而不是用文件名。 --color=never :不要依据文件特性给予颜色显示; --color=always :显示颜色 --color=auto :让系统自行依据设置来判断是否给予颜色 --full-time :以完整时间模式 (包含年、月、日、时、分) 输出 --time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime) 而非内容变更时间 (modification time)
6 cp 复制文件或目录,创建链接
[root@study ~]# cp [-adfilprsu] 来源文件(source) 目标文件(destination) [root@study ~]# cp [options] source1 source2 source3 .... directory 选项与参数: -a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用)注:复制时,尽可能保持原文件按属性 -d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身; -f :为强制(force)的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;注:若文件存在,则删除该文件 -i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)注:最好 将-i 选项置成别名 -l :进行硬式链接(hard link)的链接文件创建,而非复制文件本身; -p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用); -r :递回持续复制,用于目录的复制行为;(常用) -s :复制成为符号链接文件 (symbolic link),亦即“捷径”文件; -u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。 --preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。 最后需要注意的,如果来源文件有两个以上,则最后一个目的文件一定要是“目录”才行!
7 rm 删除文件或目录,删除目录时加上 -r 选项
[root@study ~]# rm [-fir] 文件或目录 选项与参数: -f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息; -i :互动模式,在删除前会询问使用者是否动作 -r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!
8 mv
[root@study ~]# mv [-fiu] source destination [root@study ~]# mv [options] source1 source2 source3 .... directory 选项与参数: -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会更新 (update)
9 文件内容查阅指令
cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 less 与 more 类似,但是比 more 更好的是,他可以往前翻页! head 只看头几行 tail 只看尾巴几行 od 以二进制的方式读取文件内容!
cat (concatenate) 由第一行开始显示文件内容
[root@study ~]# cat [-AbEnTv] 选项与参数: -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已; -b :列出行号,仅针对非空白行做行号显示,空白行不标行号! -E :将结尾的断行字符 $ 显示出来; -n :打印出行号,连同空白行也会有行号,与 -b 的选项不同; -T :将 [tab] 按键以 ^I 显示出来; -v :列出一些看不出来的特殊字符
tac (反向列示)
从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl (添加行号打印)显示的时候,顺道输出行号!
[root@study ~]# nl [-bnw] 文件 选项与参数: -b :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出行号(类似 cat -n); -b t :如果有空行,空的那一行不要列出行号(默认值); -n :列出行号表示的方法,主要有三种: -n ln :行号在屏幕的最左方显示; -n rn :行号在自己字段的最右方显示,且不加 0 ; -n rz :行号在自己字段的最右方显示,且加 0 ; -w :行号字段的占用的字符数
more (一页一页翻动)一页一页的显示文件内容
空白键 (space):代表向下翻一页; Enter :代表向下翻“一行”; /字串 :代表在这个显示的内容当中,向下搜寻“字串”这个关键字; :f :立刻显示出文件名以及目前显示的行数; q :代表立刻离开 more ,不再显示该文件内容。 b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less (一页一页翻动) less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
空白键 :向下翻动一页; [pagedown]:向下翻动一页; [pageup] :向上翻动一页; /字串 :向下搜寻“字串”的功能; ?字串 :向上搜寻“字串”的功能; n :重复前一个搜寻 (与 / 或 ? 有关!) N :反向的重复前一个搜寻 (与 / 或 ? 有关!) g :前进到这个数据的第一行去; G :前进到这个数据的最后一行去 (注意大小写); q :离开 less 这个程序;
head (取出前面几行)
[root@study ~]# head [-n number] 文件 选项与参数: -n :后面接数字,代表显示几行的意思
tail (取出后面几行)
[root@study ~]# tail [-n number] 文件 选项与参数: -n :后面接数字,代表显示几行的意思 -f :表示持续侦测后面所接的文件名,要等到按下[ctrl]-c才会结束tail的侦测
[root@study ~]# tail /etc/man_db.conf # 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@study ~]# tail -n 20 /etc/man_db.conf
范例一:如果不知道/etc/man_db.conf有几行,却只想列出100行以后的数据时?
[root@study ~]# tail -n +100 /etc/man_db.conf
范例二:持续侦测/var/log/messages的内容
[root@study ~]# tail -f /var/log/messages <==要等到输入[crtl]-c之后才会离开tail这个指令的侦测!
od 读取非纯文本文件
[root@study ~]# od [-t TYPE] 文件 选项或参数: -t :后面可以接各种“类型 (TYPE)”的输出,例如: a :利用默认的字符来输出; c :使用 ASCII 字符来输出 d[size] :利用十进制(decimal)来输出数据,每个整数占用 size Bytes ; f[size] :利用浮点数值(floating)来输出数据,每个数占用 size Bytes ; o[size] :利用八进位(octal)来输出数据,每个整数占用 size Bytes ; x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size Bytes ;
范例一:请将/usr/bin/passwd的内容使用ASCII方式来展现! [root@study ~]# od -t c /usr/bin/passwd 0000000 177 E L F 002 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000020 003 \0 > \0 001 \0 \0 \0 364 3 \0 \0 \0 \0 \0 \0 0000040 @ \0 \0 \0 \0 \0 \0 \0 x e \0 \0 \0 \0 \0 \0 0000060 \0 \0 \0 \0 @ \0 8 \0 \t \0 @ \0 035 \0 034 \0 0000100 006 \0 \0 \0 005 \0 \0 \0 @ \0 \0 \0 \0 \0 \0 \0 .....(后面省略).... # 最左边第一栏是以 8 进位来表示Bytes数。以上面范例来说,第二栏0000020代表开头是 # 第 16 个 byes (2x8) 的内容之意。 范例二:请将/etc/issue这个文件的内容以8进位列出储存值与ASCII的对照表 [root@study ~]# od -t oCc /etc/issue 0000000 134 123 012 113 145 162 156 145 154 040 134 162 040 157 156 040 \ S \n K e r n e l \ r o n 0000020 141 156 040 134 155 012 012 a n \ m \n \n 0000027 # 如上所示,可以发现每个字符可以对应到的数值为何!要注意的是,该数值是 8 进位喔! # 例如 S 对应的记录数值为 123 ,转成十进制:1x8^2+2x8+3=83。
10 touch 修改文件时间或创建新文件,touch 这个指令最常被使用的情况是: 创建一个空的文件; 将某个文件日期修订为目前 (mtime 与 atime)
[root@study ~]# touch [-acdmt] 文件 选项与参数: -a :仅修订 access time; access time (atime): 当“该文件的内容被取用”时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的 atime 了。 -c :仅修改文件的时间,若该文件不存在则不创建新文件; status time (ctime): 当该文件的“状态 (status)”改变时,就会更新这个时间,举 例来说,像是权限与属性被更改了,都会更新这个时间啊。 -d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间" -m :仅修改 mtime ; modification time (mtime): 当该文件的“内容数据”变更时,就会更新这个时间!内 容数据指的是文件的内容,而不是文件的属性或权限喔! -t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
11 chattr (设置文件隐藏属性)
[root@study ~]# chattr [+-=][ASacdistu] 文件或目录名称 选项与参数: + :增加某一个特殊参数,其他原本存在参数则不动。 - :移除某一个特殊参数,其他原本存在参数则不动。 = :设置一定,且仅有后面接的参数 A :当设置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime 将不会被修改, 可避免 I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目) S :一般文件是非同步写入磁盘的(原理请参考[前一章sync](../Text/index.html#sync)的说明),如果加上 S 这个属性时, 当你进行任何文件的修改,该更动会“同步”写入磁盘中。 a :当设置 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设置这属性 c :这个属性设置之后,将会自动的将此文件“压缩”,在读取的时候将会自动解压缩, 但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!) d :当 dump 程序被执行的时候,设置 d 属性将可使该文件(或目录)不会被 dump 备份 i :这个 i 可就很厉害了!他可以让一个文件“不能被删除、改名、设置链接也无法写入或新增数据!” 对于系统安全性有相当大的助益!只有 root 能设置此属性 s :当文件设置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间, 所以如果误删了,完全无法救回来了喔! u :与 s 相反的,当使用 u 来设置文件时,如果该文件被删除了,则数据内容其实还存在磁盘中, 可以使用来救援该文件喔! 注意1:属性设置常见的是 a 与 i 的设置值,而且很多设置值必须要身为 root 才能设置 注意2:xfs 文件系统仅支持 AadiS 而已
范例:请尝试到/tmp下面创建文件,并加入 i 的参数,尝试删除看看。 [root@study ~]# cd /tmp [root@study tmp]# touch attrtest <==创建一个空文件 [root@study tmp]# chattr +i attrtest <==给予 i 的属性 [root@study tmp]# rm attrtest <==尝试删除看看 rm: remove regular empty file `attrtest'? y rm: cannot remove `attrtest': Operation not permitted # 看到了吗?呼呼!连 root 也没有办法将这个文件删除呢!赶紧解除设置! 范例:请将该文件的 i 属性取消! [root@study tmp]# chattr -i attrtest
12 lsattr (显示文件隐藏属性)
[root@study ~]# lsattr [-adR] 文件或目录 选项与参数: -a :将隐藏文件的属性也秀出来; -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名; -R :连同子目录的数据也一并列出来! [root@study tmp]# chattr +aiS attrtest [root@study tmp]# lsattr at
13 Set UID
SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将具有该程序拥有者 (owner) 的权限。
14 Set UID
SGID 对二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持!
当一个目录设置了 SGID 的权限后,他将具有如下的功能:
使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录;
使用者在此目录下的有效群组(effective group)将会变成该目录的群组;
用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文 件,该新文件的群组与此目录的群组相同。
15 Sticky Bit 这个 Sticky Bit, SBIT 目前只针对目录有效,对于文件已经没有效果了。SBIT 对于目录的作用 是:
当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;
当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件
16 SUID/SGID/SBIT 权限设置
4 为 SUID
2 为 SGID
1 为 SBIT
用chmod xxxx filename 来设置 ,而除了数字法之外,你也可以通过符号法来处理喔!其中 SUID 为 u+s ,而 SGID 为 g+s , SBIT 则是 o+t 啰!
17 file 观察文件类型 p336
查看当前目录下所有文件的类型
file ./*
18 which (寻找“可执行文件”)
[root@study ~]# which [-a] command 选项或参数: -a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称 范例一:搜寻 ifconfig 这个指令的完整文件名
19 whereis (由一些特定的目录中寻找文件文件名) 文件文件名的搜寻
[root@study ~]# whereis [-bmsu] 文件或目录名 选项与参数: -l :可以列出 whereis 会去查询的几个主要目录而已 -b :只找 binary 格式的文件 -m :只找在说明文档 manual 路径下的文件 -s :只找 source 来源文件 -u :搜寻不在上述三个项目当中的其他特殊文件
20 locate / updatedb 文件文件名的搜寻
[root@study ~]# locate [-ir] keyword 选项与参数: -i :忽略大小写的差异; -c :不输出文件名,仅计算找到的文件数量 -l :仅输出几行的意思,例如输出五行则是 -l 5 -S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等 -r :后面可接正则表达式的显示方式
21 find 文件文件名的搜寻
[root@study ~]# find [PATH] [option] [action] 选项与参数: 1\. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明 -mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。 -newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名
选项与参数: 2\. 与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在 /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在 /etc/group,相关的介绍我们会第四篇说明~ -user name :name 为使用者帐号名称喔!例如 dmtsai -group name:name 为群组名称喔,例如 users ;
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人! -nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件! 当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者, 这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
选项与参数: 3\. 与文件权限及名称有关的参数: -name filename:搜寻文件名称为 filename 的文件; -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有: c: 代表 Byte, k: 代表 1024Bytes。所以,要找比 50KB 还要大的文件,就是“ -size +50k ” -type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f), 设备文件 (b, c), 目录 (d), 链接文件 (l), socket (s), 及 FIFO (p) 等属性。 -perm mode :搜寻文件权限“刚好等于” mode 的文件,这个 mode 为类似 chmod 的属性值,举例来说, -rwsr-xr-x 的属性为 4755 ! -perm -mode :搜寻文件权限“必须要全部囊括 mode 的权限”的文件,举例来说, 我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744, 当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来, 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。 -perm /mode :搜寻文件权限“包含任一 mode 的权限”的文件,举例来说,我们搜寻 -rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw------- 也会被列出来,因为他有 -rw.... 的属性存在!
选项与参数: 4\. 额外可进行的动作: -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。 -print :将结果打印到屏幕上,这个动作是默认动作! 范例八:将上个范例找到的文件使用 ls -l 列出来~ [root@study ~]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \; # 注意到,那个 -exec 后面的 ls -l 就是额外的指令,指令不支持命令别名, # 所以仅能使用 ls -l 不可以使用 ll 喔!注意注意! 范例九:找出系统中,大于 1MB 的文件 [root@study ~]# find / -size +1M
22 文件系统
inode 的内容在记录文件的权限与相关属性,至于 block 区块则是在 记录文件的实际内容
inode table (inode 表格) 再来讨论一下 inode 这个玩意儿吧!如前所述 inode 的内容在记录文件的属性以及该文件实 际数据是放置在哪几号 block 内! 基本上,inode 记录的文件数据至少有下面这些:[4] 该文件的存取模式(read/write/excute); 该文件的拥有者与群组(owner/group); 该文件的容量; 该文件创建或状态改变的时间(ctime); 最近一次的读取时间(atime); 最近修改的时间(mtime); 定义文件特性的旗标(flag),如 SetUID...; 该文件真正内容的指向 (pointer); inode 的数量与大小也是在格式化时就已经固定了,除此之外 inode 还有些什么特色呢? 每个 inode 大小均固定为 128 Bytes (新的 ext4 与 xfs 可设置到 256 Bytes); 每个文件都仅会占用一个 inode 而已; 承上,因此文件系统能够创建的文件数量与 inode 的数量有关; 系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与使用者是否符合,若符 合才能够开始实际读取 block 的内容。
Superblock 是记录整个 filesystem 相关信息的地方, 没有 Superblock ,就没有这个 filesystem 了。他记录的信息主要有: 鸟哥的 Linux 私房菜:基础学习篇 第四版 7.1 认识 Linux 文件系统 349 block 与 inode 的总量; 未使用与已使用的 inode / block 数量; block 与 inode 的大小 (block 为 1, 2, 4K,inode 为 128Bytes 或 256Bytes); filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间 等文件系统的相关信息; 一个 valid bit 数值,若此文件系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。
22 范例:鸟哥的一块 1GB ext4 文件系统内容 [root@study ~]# blkid <==这个指令可以叫出目前系统有被格式化的设备
23 df:列出文件系统的整体磁盘使用量;
[root@study ~]# df [-ahikHTm] [目录或文件名] 选项与参数: -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统; -k :以 KBytes 的容量显示各文件系统; -m :以 MBytes 的容量显示各文件系统; -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -H :以 M=1000K 取代 M=1024K 的进位方式; -T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出; -i :不用磁盘容量,而以 inode 的数量来显示
24 du
[root@study ~]# du [-ahskm] 文件或目录名称 选项与参数: -a :列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已。 -h :以人们较易读的容量格式 (G/M) 显示; -s :列出总量而已,而不列出每个各别的目录占用容量; -S :不包括子目录下的总计,与 -s 有点差别。 -k :以 KBytes 列出容量显示; -m :以 MBytes 列出容量显示;
25 Hard Link (实体链接, 硬式链接或实际链接) 在前一小节当中,我们知道几件重要的信息,包括: 每个文件都会占用一个 inode ,文件内容由 inode 的记录来指向; 想要读取该文件,必须要经过目录记录的文件名来指向到正确的 inode 号码才能读取。所以简单的 说:hard link 只是在某个目录下新增一笔文件名链接到某 inode 号码的关连记录而已。
[root@study ~]# ll -i /etc/crontab 34474855 -rw-r--r--. 1 root root 451 Jun 10 2014 /etc/crontab [root@study ~]# ln /etc/crontab . <==创建实体链接的指令 [root@study ~]# ll -i /etc/crontab crontab 34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab 34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab
Symbolic Link (符号链接,亦即是捷径) 相对于 hard link , Symbolic link 可就好理解多了,基本上, Symbolic link 就是在创建一个 独立的文件,而这个文件会让数据的读取指向他 link 的那个文件的文件名!由于只是利用文 件来做为指向的动作, 所以,当来源文件被删除之后,symbolic link 的文件会“开不了”, 会 一直说“无法打开某文件!”。实际上就是找不到原始“文件名”而已啦
[root@study ~]# ln [-sf] 来源文件 目标文件 选项与参数: -s :如果不加任何参数就进行链接,那就是hard link,至于 -s 就是symbolic link -f :如果 目标文件 存在时,就主动的将目标文件直接移除后再创建!
25 lsblk 列出系统上的所有磁盘列表
[root@study ~]# lsblk [-dfimpt] [device] 选项与参数: -d :仅列出磁盘本身,并不会列出该磁盘的分区数据 -f :同时列出该磁盘内的文件系统名称 -i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用) -m :同时输出该设备在 /dev 下面的权限数据 (rwx 的数据) -p :列出该设备的完整文件名!而不是仅列出最后的名字而已。 -t :列出该磁盘设备的详细数据,包括磁盘伫列机制、预读写的数据量大小等
26 blkid 列出设备的 UUID 等参数 虽然 lsblk 已经可以使用 -f 来列出文件系统与设备的 UUID 数据,不过,鸟哥还是比较习惯直 接使用 blkid 来找出设备的 UUID 喔! 什么是 UUID 呢?UUID 是全域单一识别码 (universally unique identifier),Linux 会将系统内所有的设备都给予一个独一无二的识别 码, 这个识别码就可以拿来作为挂载或者是使用这个设备/文件系统之用了。
parted 列出磁盘的分区表类型与分区信息
[root@study ~]# parted device_name print 范例一:列出 /dev/vda 磁盘的相关数据 [root@study ~]# parted /dev/vda print Model: Virtio Block Device (virtblk) # 磁盘的模块名称(厂商) Disk /dev/vda: 42.9GB # 磁盘的总容量 Sector size (logical/physical): 512B/512B # 磁盘的每个逻辑/物理扇区容量 Partition Table: gpt # 分区表的格式 (MBR/GPT) Disk Flags: pmbr_boot Number Start End Size File system Name Flags # 下面才是分区数据 1 1049kB 3146kB 2097kB bios_grub 2 3146kB 1077MB 1074MB xfs 3 1077MB 33.3GB 32.2GB lvm
27 磁盘分区: gdisk/fdisk
[root@study ~]# parted device_name print 范例一:列出 /dev/vda 磁盘的相关数据 [root@study ~]# parted /dev/vda print Model: Virtio Block Device (virtblk) # 磁盘的模块名称(厂商) Disk /dev/vda: 42.9GB # 磁盘的总容量 Sector size (logical/physical): 512B/512B # 磁盘的每个逻辑/物理扇区容量 Partition Table: gpt # 分区表的格式 (MBR/GPT) Disk Flags: pmbr_boot Number Start End Size File system Name Flags # 下面才是分区数据 1 1049kB 3146kB 2097kB bios_grub 2 3146kB 1077MB 1074MB xfs 3 1077MB 33.3GB 32.2GB lvm
磁盘分区 留空
28 mount 文件系统挂载与卸载 我们在本章一开始时的挂载点的意义当中提过挂载点是目录, 而这个目录是进入磁盘分区 (其实是文件系统啦!)的入口就是了。
不过要进行挂载前,你最好先确定几件事: 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
磁盘的分区、格式化、检验与挂载 389 单一目录不应该重复挂载多个文件系统;
要作为挂载点的目录,理论上应该都是空目录才是。
[root@study ~]# mount -a [root@study ~]# mount [-l] [root@study ~]# mount [-t 文件系统] LABEL='' 挂载点 [root@study ~]# mount [-t 文件系统] UUID='' 挂载点 # 鸟哥近期建议用这种方式喔! [root@study ~]# mount [-t 文件系统] 设备文件名 挂载点 选项与参数: -a :依照配置文件 [/etc/fstab](../Text/index.html#fstab) 的数据将所有未挂载的磁盘都挂载上来 -l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称! -t :可以加上文件系统种类来指定欲挂载的类型。常见的 Linux 支持类型有:xfs, ext3, ext4, reiserfs, vfat, iso9660(光盘格式), nfs, cifs, smbfs (后三种为网络文件系统类型) -n :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序的运行。 但在某些情况下(例如单人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选项。 -o :后面可以接一些挂载时额外加上的参数!比方说帐号、密码、读写权限等: async, sync: 此文件系统是否使用同步写入 (sync) 或非同步 (async) 的 内存机制,请参考[文件系统运行方式](../Text/index.html#harddisk-filerun)。默认为 async。 atime,noatime: 是否修订文件的读取时间(atime)。为了性能,某些时刻可使用 noatime ro, rw: 挂载文件系统成为只读(ro) 或可读写(rw) auto, noauto: 允许此 filesystem 被以 mount -a 自动挂载(auto) dev, nodev: 是否允许此 filesystem 上,可创建设备文件? dev 为可允许 suid, nosuid: 是否允许此 filesystem 含有 suid/sgid 的文件格式? exec, noexec: 是否允许此 filesystem 上拥有可执行 binary 文件? user, nouser: 是否允许此 filesystem 让任何使用者执行 mount ?一般来说, mount 仅有 root 可以进行,但下达 user 参数,则可让 一般 user 也能够对此 partition 进行 mount 。 defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async remount: 重新挂载,这在系统出错,或重新更新参数时,很有用!
29 umount (将设备文件卸载)
[root@study ~]# umount [-fn] 设备文件名或挂载点 选项与参数:
-f :强制卸载!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
-l :立刻卸载文件系统,比 -f 还强!
-n :不更新 /etc/mtab 情况下卸载。
30 开机挂载 /etc/fstab 及 /etc/mtab
根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。 其它 mount point 必须为已创建的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构 原则 (FHS) 所有 mount point 在同一时间之内﹐只能挂载一次。 所有 partition 在同一时间之内﹐只能挂载一次。 如若进行卸载﹐您必须先将工作目录移到 mount point(及其子目录) 之外。
[设备/UUID等] [挂载点] [文件系统] [文件系统参数] [dump] [fsck]
第一栏:磁盘设备文件名/UUID/LABEL name:
这个字段可以填写的数据主要有三个项目:
文件系统或磁盘的设备文件名,如 /dev/vda2 等 文件系统的 UUID 名称,如 UUID=xxx
文件系统的 LABEL 名称,例如 LABEL=xxx
第二栏:挂载点 (mount point)
第三栏:磁盘分区的文件系统:
第四栏:文件系统参数
第五栏:能否被 dump 备份指令作用:
第六栏:是否以 fsck 检验扇区: 471
31 RPM 默认安装的路径
/etc 一些配置文件放置的目录,例如 /etc/crontab /usr/bin 一些可可执行文件案 /usr/lib 一些程序使用的动态函数库 /usr/share/doc 一些基本的软件使用手册与说明文档 /usr/share/man 一些 man page 文件
rpm 安装
[root@study ~]# rpm -ivh package_name 选项与参数: -i :install 的意思 -v :察看更细部的安装信息画面 -h :以安装信息列显示安装进度
可下达的选 项代表意义 --nodeps 使用时机:当发生软件属性相依问题而无法安装,但你执意安装时 危险 性: 软件会有相依性的原因是因为彼此会使用到对方的机制或功能,如 果强制安装而不考虑软件的属性相依, 则可能会造成该软件的无法正常 使用! --replacefiles 使用时机: 如果在安装的过程当中出现了“某个文件已经被安装在你的系 统上面”的信息,又或许出现版本不合的讯息 (confilcting files) 时,可 以使用这个参数来直接覆盖文件。危险性: 覆盖的动作是无法复原的! 所以,你必须要很清楚的知道被覆盖的文件是真的可以被覆盖喔!否则会 欲哭无泪! --replacepkgs 使用时机: 重新安装某个已经安装过的软件!如果你要安装一堆 RPM 软 件文件时,可以使用 rpm -ivh *.rpm ,但若某些软件已经安装过了, 此 时系统会出现“某软件已安装”的信息,导致无法继续安装。此时可使用这 个选项来重复安装喔! --force 使用时机:这个参数其实就是 --replacefiles 与 --replacepkgs 的综合体! --test 使用时机: 想要测试一下该软件是否可以被安装到使用者的 Linux 环境 当中,可找出是否有属性相依的问题。范例为: rpm -ivh pkgname.i386.rpm --test --justdb 使用时机: 由于 RPM 数据库破损或者是某些缘故产生错误时,可使用这 个选项来更新软件在数据库内的相关信息。 --nosignature 使用时机: 想要略过数码签章的检查时,可以使用这个选项。 --prefix 新路 径使用时机: 要将软件安装到其他非正规目录时。举例来说,你想要将某 软件安装到 /usr/local 而非正规的 /bin, /etc 等目录, 就可以使用“ --prefix /usr/local ”来处理了。 --noscripts 使用时机:不想让该软件在安装过程中自行执行某些系统指令。说明: RPM 的优点除了可以将文件放置到定位之外,还可以自动执行一些前置 作业的指令,例如数据库的初始化
RPM 升级与更新 (upgrade/freshen)
- Uvh 后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装 过旧版,则系统自动更新至新版; - Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只 有已安装至你 Linux 系统内的软件会被“升级”!
RPM 查询 (query)
[root@study ~]# rpm -qa <==已安装软件 [root@study ~]# rpm -q[licdR] 已安装的软件名称 <==已安装软件 [root@study ~]# rpm -qf 存在于系统上面的某个文件名 <==已安装软件 [root@study ~]# rpm -qp[licdR] 未安装的某个文件名称 <==查阅RPM文件 选项与参数: 查询已安装软件的信息: -q :仅查询,后面接的软件名称是否有安装; -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称; -qi :列出该软件的详细信息 (information),包含开发商、版本与说明等; -ql :列出该软件所有的文件与目录所在完整文件名 (list); -qc :列出该软件的所有配置文件 (找出在 /etc/ 下面的文件名而已) -qd :列出该软件的所有说明文档 (找出与 man 有关的文件而已) -qR :列出与该软件有关的相依软件所含的文件 (Required 的意思) -qf :由后面接的文件名称,找出该文件属于哪一个已安装的软件; -q --scripts:列出是否含有安装后需要执行的脚本档,可用以 debug 喔! 查询某个 RPM 文件内含有的信息: -qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出 某个 RPM 文件内的信息,而非已安装的软件信息!注意!
RPM 反安装与重建数据库
# 1\. 找出与 pam 有关的软件名称,并尝试移除 pam 这个软件: [root@study ~]# rpm -qa | grep pam
32 利用 yum 进行查询、安装、升级与移除功能
[root@study ~]# yum [option] [查询工作项目] [相关参数] 选项与参数: [option]:主要的选项,包括有: -y :当 yum 要等待使用者输入时,这个选项可以自动提供 yes 的回应; --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径 [查询工作项目] [相关参数]:这方面的参数有: search :搜寻某个软件名称或者是描述 (description) 的重要关键字; list :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa; info :同上,不过有点类似 rpm -qai 的执行结果; provides:从文件去搜寻软件!类似 rpm -qf 的功能!
浙公网安备 33010602011771号