效果图
写在前面
此次遇到的问题是,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/disk1www 521558 ..c.. phpwww 521559 ..c.. php80www 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/disk1www 527907 ..c.. phpwww 527908 ..c.. php80www 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/disk1www 532244 ..c.. phpwww 532249 ..c.. php80www 532663 ..c.. phpwww 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...