linux命令sync 查看文件大小的Linux命令

如何在Linux上使用sync命令

sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息。 在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。用户通常不需执行sync命令,系统会自动执行update或bdflush操作,将缓冲区的数据写 入磁盘。只有在update或bdflush无法执行或用户需要非正常关机时,才需手动执行sync命令。

成都创新互联长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为承德企业提供专业的成都网站制作、成都网站设计、外贸营销网站建设承德网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

语法 sync(选项) 选项 --help:显示帮助; --version:显示版本信息。

buffer与cache buffer:为了解决写磁盘的效率 cache:为了解决读磁盘的效率 linux系统为了提高读写磁盘的效率,会先将数据放在一块buffer中。在写磁盘时并不是立即将数据写到磁盘中,而是先写入这块buffer中了。此时如果重启系统,就可能造成数据丢失。 sync命令用来flush文件系统buffer,这样数据才会真正的写到磁盘中,并且buffer才能够释放出来,flush就是用来清空buffer。sync命令会强制将数据写入磁盘中,并释放该数据对应的buffer,所以常常会在写磁盘后输入sync命令来将数据真正的写入磁盘。

通过sync命令,能够释放数据中的buffer,加快Linux磁盘的读写速度,以达到提高磁盘读写效率的目的。

linux下清理内存以及swap

第一步:先执行sync命令

#sync

sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息,以防止释放,sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。

第二步:清理linux内存缓存

#echo 3 /proc/sys/vm/drop_caches

一般系统是不会自动释放内存的

关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:

0 – 不释放

1 – 释放页缓存

2 – 释放dentries和inodes

3 – 释放所有缓存

此指令输入立即生效,意在释放所有缓存。

第三步:关闭swap,再开启swap

(如果只是清理swap,第二部可以不用进行操作,因为操作了第二步关闭swap时会使用更长的时间)

#swapoff -a  这一步因为是后台 在一点一点的释放,如果配置的swap超大,这里就等待得超久一些

#swapon -a  再开启

linux什么时候开始使用虚拟内存(swap)

A.[root@wenwen ~]# cat /proc/sys/vm/swappiness

60

上面这个60代表物理内存在使用60%的时候才会使用swap

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

通常情况下:

swap分区设置建议是内存的两倍 (内存小于等于4G时),如果内存大于4G,swap只要比内存大就行。另外尽量的将swappiness调低,这样系统的性能会更好。

B.修改swappiness参数

临时性修改:

[root@wenwen ~]# sysctl vm.swappiness=10

vm.swappiness = 10

[root@wenwen ~]# cat /proc/sys/vm/swappiness               

10

永久性修改:

[root@wenwen ~]# vim /etc/sysctl.conf

加入参数:

vm.swappiness = 35

然后在直接:

[root@wenwen ~]# sysctl -p

查看是否生效:

cat /proc/sys/vm/swappiness

35

总结 - sync 命令,简洁不简单

强制将内存中的文件缓冲写入磁盘,更新块信息。

在 linux/unix 系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。

sync 命令则可用来强制将内存缓冲区中的数据立即写入磁盘。用户通常无需执行 sync 命令,系统会自动执行 update 或 bdflush 操作,将缓冲区的数据写入磁盘。

那么什么是缓冲(buffer)、缓存(cache),二者又有什么关系及区别呢?

简单的理解为: buffer 是即将要被写入磁盘的,而 cache 是被从磁盘中读出来的。

缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux 有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过 sync 命令手动清空缓冲。

没有找到具体的命令查看有那些文件处于缓冲状态,也就无法看到运行 sync 命令后的效果。网上甚至看到为保险起起见执行 2 次还是 4 次 sync 命令的讨论。

缓存(cache)其实全称叫高速缓存,是位于 CPU 与主内存间的一种容量较小但速度很高的存储器。

由于 CPU 的速度远高于主内存,CPU 直接从内存中存取数据要等待一定时间周期,cache 中保存着 CPU 刚用过或循环使用的数据,当 CPU 再次使用该部分数据时可从 cache 中直接调用,这样就减少了 CPU 的等待时间,提高了系统的效率。

cache 经常被用在磁盘的 I/O 请求上,如果有多个进程都要访问某个文件,于是该文件便被写入 cache 以方便下次被访问,以此提高系统性能。

内存与缓存都是宝贵且配置有限的,如何根据需要来手工清除释放缓存呢?

有三种选项清除缓存而无需中断任何进程或服务:

可以配合 free 命令查看清理缓存的效果,相当的立竿见影。

sync 命令虽然重要,但针对缓冲的作用以及具体操作都比较单一,倒被缓存这个概念喧宾夺主了,这篇笔记显然有些跑题。


当前名称:linux命令sync 查看文件大小的Linux命令
文章URL:http://abwzjs.com/article/doshijc.html