WEB开发网
开发学院操作系统Linux/Unix 解决分区卸载问题 阅读

解决分区卸载问题

 2009-12-01 00:00:00 来源:WEB开发网   
核心提示: 这更方便,因为它至少指出了进程是什么程序,解决分区卸载问题(6),在通过 fuser 命令获得 PID 信息之后,可以在终止进程之前结合使用标准的 ps 和 egrep 命令了解尽可能详细的相关信息,lsof 和 fuser 命令有助于识别阻止文件系统卸载的进程,如果情况非常紧急,见 清单 8,

这更方便,因为它至少指出了进程是什么程序。在通过 fuser 命令获得 PID 信息之后,可以在终止进程之前结合使用标准的 ps 和 egrep 命令了解尽可能详细的相关信息,见 清单 8。


清单 8. 在系统上搜索特定的进程
# ps alxww |egrep '23334|23697' 
4 1000 23334 23332 20 0 18148 2076 wait  Ss pts/13 0:00 -bash 
0 1000 23697 23334 20 0 75964 12352 poll_s S+ pts/13 0:00 emacs -nw file2.txt 
0  0 23703 23665 20 0 6060  632 -   R+ pts/16 0:00 egrep 
23334|23697 

然后,可以使用标准的 kill 命令手工终止指定的进程,或者像下一节中解释的,使用 fuser 命令的一些高级功能自动地终止它们。

用 fuser 终止进程

在通过参数指定挂载点时,fuser 命令的 -k 选项会自动地终止找到的进程。当然,必须作为根用户执行 fuser 命令,才能终止属于其他用户的进程,见 清单 9。


清单 9. 终止与挂载的 NFS 文件系统相关联的进程
# fuser -k /mnt/yellowmachine 
/mnt/yellowmachine: 23334c 23697c 
Could not kill process 23697: No such process 

在这里,第二个进程 (emacs) 是第一个进程 (bash shell) 的子进程,因此在 fuser 命令杀死第一个进程时它就会终止。

如果希望指定底层物理设备名,而不是它包含的文件系统的挂载点,那么还必须指定 -m 选项,见 清单 10。


清单 10. 挂载点和设备的进程列表
# fuser -v /opt2 
           USER    PID ACCESS COMMAND 
/opt2:        wvh    23712 ..c.. bash 
           wvh    23753 ..c.. emacs 
# fuser -v /dev/sdb1 
# fuser -vm /dev/sdb1 
           USER    PID ACCESS COMMAND 
/dev/sdb1:      wvh    23712 ..c.. bash 
           wvh    23753 ..c.. emacs 

第一个命令返回的输出符合预期,因为它引用文件系统的挂载点。第二个命令表明,不能使用标准的 fuser 选项直接查询底层设备。第三个命令说明,-m 选项允许直接指定设备。可以在第一个和第三个命令中添加 -k 选项,从而终止与 /dev/sdb1 设备上的文件系统相关联的进程。

结束语

有时候,为了应对一些紧急情况或者删除挂载的 CD-ROM 或 DVD 等设备,Linux 或 UNIX 系统管理员需要卸载分区。在由于设备忙系统不允许删除它的情况下,检查系统上的所有进程是一个很烦人、很缓慢的过程。lsof 和 fuser 命令有助于识别阻止文件系统卸载的进程。如果情况非常紧急,fuser 命令甚至可以替您终止它们。

上一页  1 2 3 4 5 6 

Tags:解决 分区 卸载

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接