问题原因与分析:
1、在linux系统中,由于相对于内存来说硬盘的读写数据很慢,为了保证系统效率,在默认情况下某些已经加载到内存中的数据在任务执行过程中将不会直接写回硬盘,而是先暂存在内存中;
如果是正常重启reboot,系统调用内核级sys_reboot函数执行关闭操作,参照内核里对sys_reboot()的注释,在使用它之前首先要使用sync(flush file system buffers)命令同步磁盘,否则磁盘上的文件系统可能会有所损坏。
2、linux为多用户多任务操作系统,在某一时刻,系统中可能存在多个用户的多个任务在执行,内存与硬盘数据交互平凡;
3、当系统断电或不正常关机时,内存中很可能有数据尚未写回硬盘,此时很容易造成系统文件系统损坏,从而可能造成数据丢失、系统无法正常开机等。
正确的关机与重启:
1、首先应当了解当前系统状态,如:who查看目前在线用户,netstat查看系统网络连接状态,ps查看系统目前运行任务等,综合各种情况,评估重启或关机可能带来的影响;
2、通知在线用户,统一关机或重启时刻,让其他用户有充分的时间来结束目前的工作;
3、执行命令关机或重启,命令:sync;sync;sync;halt或sync;sync;sync;shutdown -h now或sync;sync;sync;reboot等,在系统关机或重启前,多次执行命令sync是一个良好的习惯。