今天写了一个简单的脚本,需要在断电前通过脚本修改Linux的文件,但是开机后发现,shell脚本的所有文件操作都没有保存。
解决方法在shell脚本的文件操作后面加 sync命令
sync也是一个linux同步命令,含义为迫使缓冲块数据立即写盘并更新超级块。在linux系统中,为了加快数据的读取速度,默认情况下,某些数据将不会直接写入硬盘,而是先暂存内存中,如果一个数据被重复写,这样速度一定快,但存在一个问题,万一重新启动,或者是关机,或者是不正常断电的情况下,由于数据还没来得及存入硬盘,会造成数据更新不正常,这时需要命令sync进行数据的写入,即#sync,在内存中尚未更新的的数据会写入硬盘中。所以在关机或者开机之前最好多执行这个几次,以确保数据写入硬盘。
——百度百科
应该说不仅仅是shell脚本的文件操作会如此,shell脚本实际上就是命令行的命令集合,所以如果在命令行进行了文件操作,且没有在数据更改后使用sync进行数据同步,而是立刻拔掉机器电源(无掉电保护功能),这时,刚才修改的数据可能就直接丢失了。
怪不得我经常遇到U盘拷贝数据失败的现象------复制Linux的文件到U盘,然后立刻拔出,发现U盘里没有出现复制的文件。



