日志-解决Linux因target is busy无法卸载硬盘/分区的问题 - PHP持续占用分区

效果图

日志-解决Linux因target is busy无法卸载硬盘/分区的问题 - PHP持续占用分区_第1张图片

写在前面

此次遇到的问题是,php-fpm持续占用设备/mnt/disk1,强制杀死php所有进程后,依然会自动产生新的进程再次霸占分区,导致设备无法卸载umount。思路是解决谁在不停的捣乱。

步骤

核心:

挂载文件系统到指定的目录

mount /dev/sdb /mnt/xxx

卸载已挂载的文件系统‌,支持通过设备名或挂载点指定目标

umount /dev/sdb

查看占用此设备的所有进程:

fuser -mv /mnt/xxx

杀死占用此设备的所有进程:

fuser -kv /mnt/xxx

如果 PHP 是通过 PHP-FPM 运行的,直接停止服务:

sudo systemctl stop php-fpm

或者

sudo service php-fpm stop

如果 PHP 进程是由 Web 服务器(如 Nginx/Apache)管理的,可以尝试:

sudo pkill -9 php

PHP 通常与 Web 服务器关联,停止 Web 服务可以彻底阻止 PHP 进程重启:

sudo systemctl stop nginx

sudo systemctl stop apache2

某些 PHP 脚本可能由 supervisord 或 cron 自动重启,需检查:

sudo systemctl stop supervisord

如果 PHP 进程仍自动重启,查看日志:

sudo journalctl -u php-fpm --no-pager | tail -n 50

具体:

root@amd-desktop:~# df -Th
文件系统       类型      大小  已用  可用 已用% 挂载点
tmpfs          tmpfs     4.7G  2.5M  4.7G    1% /run
/dev/sdc2      ext4      228G   32G  185G   15% /
tmpfs          tmpfs      24G   16K   24G    1% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M    1% /run/lock
efivarfs       efivarfs  128K   54K   70K   44% /sys/firmware/efi/efivars
/dev/sda       ext4      3.6T  467G  3.0T   14% /mnt/ubuntu
/dev/sdc1      vfat      511M  6.1M  505M    2% /boot/efi
tmpfs          tmpfs     4.7G  108K  4.7G    1% /run/user/1000
tmpfs          tmpfs     4.7G   60K  4.7G    1% /run/user/0
/dev/sdb       ext4      1.8T  108G  1.6T    7% /mnt/disk1
root@amd-desktop:~# umount /dev/sdb
umount: /mnt/disk1: target is busy.
root@amd-desktop:~# 
root@amd-desktop:~# fuser -vm /mnt/disk1
                     用户     进程号 权限   命令
/mnt/disk1:          root     kernel mount /mnt/disk1
                     www       521558 ..c.. php
                     www       521559 ..c.. php80
                     www       526950 ..c.. php
root@amd-desktop:~# kill -9 521558 521559 526950
-bash: kill: (526950) - 没有那个进程
root@amd-desktop:~# 
root@amd-desktop:~# fuser -vm /mnt/disk1
                     用户     进程号 权限   命令
/mnt/disk1:          root     kernel mount /mnt/disk1
                     www       527907 ..c.. php
                     www       527908 ..c.. php80
                     www       528013 ..c.. php
root@amd-desktop:~# 
root@amd-desktop:~# umount /dev/sdb
umount: /mnt/disk1: target is busy.
root@amd-desktop:~# fuser -kv /mnt/disk1
                     用户     进程号 权限   命令
/mnt/disk1:          root     kernel mount /mnt/disk1
root@amd-desktop:~# umount /dev/sdb
umount: /mnt/disk1: target is busy.
root@amd-desktop:~# 
root@amd-desktop:~# sudo systemctl stop php-fpm
Failed to stop php-fpm.service: Unit php-fpm.service not loaded.
root@amd-desktop:~# service php-fpm stop
Failed to stop php-fpm.service: Unit php-fpm.service not loaded.
root@amd-desktop:~# 
root@amd-desktop:~# killall php
root@amd-desktop:~# 
root@amd-desktop:~# umount /dev/sdb
umount: /mnt/disk1: target is busy.
root@amd-desktop:~# 
root@amd-desktop:~# fuser -vm /mnt/disk1
                     用户     进程号 权限   命令
/mnt/disk1:          root     kernel mount /mnt/disk1
                     www       532244 ..c.. php
                     www       532249 ..c.. php80
                     www       532663 ..c.. php
                     www       532679 f.c.. php
root@amd-desktop:~# 
root@amd-desktop:~# echo '尝试停止nginx、apache、甚至停止宝塔面板,依然占用'
尝试停止nginx、apache、甚至停止宝塔面板,依然占用
root@amd-desktop:~# 
root@amd-desktop:~# echo '检查是否有守护进程或自动重启机制,某些 PHP 脚本可能由 supervisord 或 cron  自动重启'
检查是否有守护进程或自动重启机制,某些 PHP 脚本可能由 supervisord 或 cron 自动重启
root@amd-desktop:~# 
root@amd-desktop:~# sudo systemctl stop supervisord
root@amd-desktop:~# 
root@amd-desktop:~# fuser -vm /mnt/disk1
                     用户     进程号 权限   命令
/mnt/disk1:          root     kernel mount /mnt/disk1
root@amd-desktop:~# 
root@amd-desktop:~# umount /dev/sdb
root@amd-desktop:~# 

ending...

你可能感兴趣的:(PHP,运维,linux,运维,服务器,mount,umount)