美文网首页
day-6 常用命令

day-6 常用命令

作者: 恩楠 | 来源:发表于2019-07-31 15:42 被阅读0次

文件属性

[root@node2 ~]# ll -d /etc/hosts /tmp /bin/ls  /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log-rwxr-xr-x.  1 root root 117680 Oct 31  2018 /bin/ls
# 权限   被链接次数 所属人  所属组  大小    创建时间  文件名
srw-rw-rw-.    1   root   root      0 Jul 31 08:21 /dev/log
brw-rw----.    1   root   disk   8, 0 Jul 31 08:21 /dev/sda
crw--w----.    1   root   tty    4, 1 Jul 31 08:23 /dev/tty1
lrwxrwxrwx.    1   root   root     22 Jul 24 23:32 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--.    1   root   root    158 Jun  7  2013 /etc/hosts
drwxrwxrwt.   12   root   root   4096 Jul 31 09:47 /tmp

第一列 srw-rw-rw-首个字符详解
在文件权限的一列中,首个字符代表着不同的意义
- 文件
d 目录,类似于Windows的文件夹
l 链接文件
s socket 本地 进程与进程的一种通信方式
b block 块设备文件,例如光盘、硬盘、分区等
c 字符设备,用于提供用户的输入和输出

对于一些文件无法准确的区分类型,可以使用file命令查看
查看文件的类型

[root@node2 ~]# file 123.rar access.log anaconda-ks.cfg test.txt th.jpg 123.zip 
123.rar:         RAR archive data, v80, flags: Archive volume, Locked, Solid, Authenticated,
# RAR文件
access.log:      ASCII text, with very long lines
# text文件
anaconda-ks.cfg: ASCII text
# text文件
test.txt:        ASCII text
# text文件
th.jpg:          JPEG image data, JFIF standard 1.01
# JPEG文件
123.zip:         Zip archive data, at least v2.0 to extract
# Zip文件

软链接和硬链接

我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。下图展示了通过文件名打开文件的过程


通过文件名打开文件

硬链接指向原文件inode的指针,硬链接文件与原始文件其实就是同一个文件。我们每添加一个硬链接,该文件的inode连接数就会增加1,由于此特性,即便原始文件被删除,依然可以通过硬链接文件来访问。硬链接就是同一个文件使用了多个别名。
软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。

软连接与硬链接

ln常用选项及说明

选项 解释
-s 软链接

软连接:相当于Windows中的快捷方式

[root@node2 ~]# cat file
abc
[root@node2 ~]# ln -s /root/file /root/file_soft_1
[root@node2 ~]# ll
total 0
-rw-r--r--. 1 root root  0 Jul 31 14:48 file
lrwxrwxrwx. 1 root root 10 Jul 31 14:49 file_soft_1
# 通过修改软链接的内容,原文件内容也会发送改变
# 通过修改原文件的内容,软连接的内容也会发生改变
[root@node2 ~]# cat >> file_soft_1 << EOF
> Hello
> EOF
[root@node2 ~]# cat file_soft_1 
abc
Hello

[root@node2 ~]# rm -f file
[root@node2 ~]# cat file_soft_1 
# 删除原文件后,软连接失效
cat: file_soft_1: No such file or directory

软链接的应用场景

  1. 软件升级与软件回退
# 假设上线qq_v1.1
[root@node2 ~]# mkdir qq_v1.1
[root@node2 ~]# ln -s /root/qq_v1.1/ /root/qq
[root@node2 ~]# [root@node2 ~]# mkdir qq_v1.2
[root@node2 ~]# ll
total 0
lrwxrwxrwx. 1 root root 14 Jul 31 15:20 qq -> /root/qq_v1.1/
drwxr-xr-x. 2 root root  6 Jul 31 15:20 qq_v1.1
drwxr-xr-x. 2 root root  6 Jul 31 15:20 qq_v1.2
# 软件升级,让/root/qq链接到qq_v1.2
[root@node2 ~]# rm -f /root/qq && ln -s /root/qq_v1.2/ /root/qq
[root@node2 ~]# ll
total 0
lrwxrwxrwx. 1 root root 14 Jul 31 15:21 qq -> /root/qq_v1.2/
drwxr-xr-x. 2 root root  6 Jul 31 15:20 qq_v1.1
drwxr-xr-x. 2 root root  6 Jul 31 15:20 qq_v1.2
[root@node2 ~]#
# 软件回退,让/root/qq重新链接至qq_v1.1
[root@node2 ~]# rm -f qq && ln -s /root/qq_v1.1 /root/qq
[root@node2 ~]# ll
total 0
lrwxrwxrwx. 1 root root 13 Jul 31 15:24 qq -> /root/qq_v1.1
drwxr-xr-x. 2 root root  6 Jul 31 15:20 qq_v1.1
drwxr-xr-x. 2 root root  6 Jul 31 15:20 qq_v1.2
  1. 代码升级,秒级回退


    代码升级与回退
  2. 不方便移动的目录

硬链接:相当于给同一个文件,取了多个别名

[root@node2 ~]# cat file 
wuennan
[root@node2 ~]# ln /root/file /root/file_hard
[root@node2 ~]# ll
total 8
-rw-r--r--. 2 root root 8 Jul 31 15:12 file
-rw-r--r--. 2 root root 8 Jul 31 15:12 file_hard
[root@node2 ~]# cat >> file_hard << EOF
> Hello
> EOF
[root@node2 ~]# cat file
wuennan
Hello
# 删除源文件后,硬链接依然生效
[root@node2 ~]# rm file
rm: remove regular file ‘file’? y
[root@node2 ~]# cat file_hard 
wuennan
Hello

软连接和硬链接的区别

  1. ln命令创建硬链接,ln -s命令创建软链接。
  2. 目录不能创建硬链接,并且硬链接不可以跨越分区系统。
  3. 目录软链接特别常用,并且软链接支持跨越分区系统。
  4. 硬链接文件与源文件inode相同,软链接文件与源文件inode不同。
  5. 删除软连接文件,对源文件及硬链接文件无任何影响。
  6. 删除文件的硬链接文件,对源文件无任何影响。
  7. 删除链接文件的源文件,对硬链接无影响,会导致软链接失效。
  8. 删除源文件及起硬链接文件,整个文件会被真正的删除。

命令执行流程[扩展了解]
当我们执行一个命令时,计算机执行流程如下:

  1. 判断命令是否通过绝对路径执行
  2. 判断命令是否存在alias别名
  3. 判断用户输入的是内置命令还是外置命令
  4. Bash内部命令直接执行,外部命令检测是否存在缓存
  5. 通过$PATH变量查找命令,有执行,无报错 command not found

绝对路径-->alias--->hash缓存-->$PATH变量路径--->有执行--->没有 command not found

相关文章

  • day-6 常用命令

    文件属性 第一列 srw-rw-rw-首个字符详解在文件权限的一列中,首个字符代表着不同的意义- 文件d 目录,类...

  • Day-6, Remain

    Day-6, Remain 1- Definition: 老师把进阶篇,讲得特别传神,因为平时我经常在工作中使...

  • Day-6

    文/陈柳彤 中午十二点多醒来,讨论去哪里结果发现时间有点急,最后决定去海洋馆 花了一百人民币,三个人去坐地铁,还是...

  • Day-6

    Day6-6【心态管理—通用胜任力模型】 1、通过学习你如何认识通用胜任力,它对你的工作和生活会有什么帮助? ...

  • DAY-6

    昨天过了一个欢乐的周末,也是人生第一个双十一,为了陪伴萌姐!萌姐昨天的日程已经被安排的满满的,还要充满热情地坚持到...

  • day-6

  • DAY-6

    今天的济南,灰蒙蒙的。 如前天一般,上午燥热晚上风雨瓢泼。还好跟Lunar的饭早早结束,要不然不仅仅是赶不到末班车...

  • Day-6

    今天迎来第六课《用条件格式扮靓报表》 每次看到我们销售报表时 都要羡慕好一会 表格内的色彩与图形 完美融合 什么时...

  • day-6

    今天我想说说专注力的问题,现在有很多人都热衷于学习这个事,特别是看到周围的人在学习这门课程,自己觉得,咦!这...

  • 父子十万个为什么互问互答——DAY6(育儿有效陪伴实验)

    DAY-6(2020年02月26日晚20:10) 河马问:“为什么雪人当太阳出来的时候就融化了?” 答案很简单,一...

网友评论

      本文标题:day-6 常用命令

      本文链接:https://www.haomeiwen.com/subject/zbeorctx.html