Linux文件删除?

Linux文件删除?,第1张

1、删除文件命令

rm -f 文件名

将会强行删除文件,且无提示

需要注意:

使用rm -rf要格外注意,linux中没有回收站,慎重删除

2、删除文件夹以及文件夹中的所有文件命令:

rm -rf 目录名字

其中:

-r:向下递归删除

-f:直接强行删除,且没有任何提示

扩展资料

1、删除文件夹实例:

rm -rf /var/log/httpd/access

将会删除/var/log/httpd/access目录以及其下所有文件、文件夹

2、删除文件使用实例:

rm -f /var/log/httpd/access.log

将会强制删除/var/log/httpd/access.log这个文件

Linux是一套免费使用和自由传播的类Unix *** 作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的 *** 作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络 *** 作系统。

Linux *** 作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的 *** 作系统。

Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、 *** 作系统、进程等等对于 *** 作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。

linux下删除文件的命令是rm;

以下分两种介绍删除方法:

对于目录文件的删除:

#rf -rf filename

对于非目录文件的删除:

#rf filename

之所以对于目录文件的删除加上了强制参数是因为在linux对目录文件的删除是递归式的;

rm 的参数如下所示:

OPTIONS

     Remove (unlink) the FILE(s).

     -f, --force

            ignore nonexistent files, never prompt

     -i     prompt before every removal

     -I     prompt once before removing  more  than  three  files,  or  when

            removing  recursively.  Less intrusive than -i, while still giv-

            ing protection against most mistakes

     --interactive[=WHEN]

            prompt according to WHEN: never,  once  (-I),  or  always  (-i).

            Without WHEN, prompt always

     --one-file-system

            when  removing  a hierarchy recursively, skip any directory that

            is on a file system different from  that  of  the  corresponding

            command line argument

     --no-preserve-root

            do not treat ‘/’ specially

     --preserve-root

            do not remove ‘/’ (default)

     -r, -R, --recursive

            remove directories and their contents recursively

     -v, --verbose

            explain what is being done

     --help display this help and exit

     --version

            output version information and exit

我们在Linux上创建或删除一个文件或文件夹,都习以为常,但这背后的实现原理是什么呢?

imap:inode map映射表

bmap:block map映射表

假如要存储a.txt到/tmp目录下。

当a.txt文件要存储到/tmp下时:

1) 元数据区分配node id :从元数据区的inode table中找一个空闲的inode号分配给a.txt,如2222。再将imap表中2222这个inode号标记为已使用。

2) 数据区添加记录 :在/tmp的data block中添加一条a.txt文件的记录。该记录中包括一个指向inode号的指针,例如"0x2222"。

3) 元数据区分配data block(每段空间)并写数据到数据区data block :从元数据区bmap中找出空闲的data block,并开始将a.txt中的数据写入到data block中。每写一段空间( ext4每次分配一段空间 )就从bmap中找一次空闲的data block,直到存完所有数据。

4) 元数据区设置inode id的data block point :元数据区在inode table中设置关于2222这条记录的data block point指针,通过该指针可以找到a.txt使用了哪些data block。

当要删除a.txt文件时:

1) 元数据区取消inode id的data block  point :在inode table中删除指向a.txt的data block指针。这里只要一删除,外界就找不到a.txt的数据了。但是这个文件还存在,只是它是被"损坏"的文件,因为没有任何指针指向数据块。

2) 元数据区释放node id :在imap中将2222的inode号标记为未使用。这个inode号就被释放,可以被后续的文件重用。

3) 数据区删除记录 :删除父目录/tmp的data block中关于a.txt的记录。这里只要一删除,外界就看不到也找不到这个文件了。

4) 元数据区释放data block :在bmap中将a.txt占用的block标记为未使用。这里被标记为未使用后,这些data block就可以被后续文件覆盖重用。

考虑一种情况,当一个文件被删除时,但此时还有进程在使用这个文件,这时是怎样的情况呢?外界是看不到也找不到这个文件的,所以删除的过程已经进行到了第(3)步。但进程还在使用这个文件的数据,也能找到这个文件的数据,是因为进程在加载这个文件的时候就已经获取到了该文件占用哪些data block,虽然删除了文件,但bmap中这些data block还没有标记为未使用。

详细分析du和df的统计结果为什么不一样


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8945195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存