效果圖
寫在前面
此次遇到的問題是,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...