Назад | Перейти на главную страницу

Как убить процесс PHP и удалить файл, который невозможно удалить?

Я пытаюсь удалить файл на сервере, но PHP все еще занят этим и не позволяет мне его удалить ... FTP говорит: "Извините, не могу:"

> DELE ml.txt
< 550 ml.txt: Permission denied
> PORT 190,028,4,31,129,100

и

> SITE CHMOD 777 ml.txt
< 550 ml.txt: Operation not permitted

Что делать, чтобы убить процесс или удалить файл?

  1. войдите как обычный пользователь на ssh
  2. затем введите su -
  3. он запросит у вас пароль root, затем введите его.
  4. тот, в котором вы находитесь, вам нужно изменить владельца файла, chown -r change_with_your_username:change_with_your_usergroup change_with_full_path_to_the_file
  5. затем попробуйте удалить его через ftp или ssh, и он должен работать.

если вышеуказанные шаги не работают, попробуйте это

  1. если он заблокирован, как в RCS (система контроля версий) или SCCS (система контроля исходного кода), вы (надеюсь, владелец) можете его разблокировать rcs -u YourFileName видеть man rcs если он установлен в вашей системе. видеть man sccs чтобы узнать как разблокировать с помощью sccs. к сожалению, я не знаю.
  2. если ваш файл уже используется, вы можете увидеть его с помощью fuser -m TheFileName или имя каталога, в котором он находится fuser является пользователем файла. видеть man fuser чтобы увидеть, как убить процесс с помощью вашего файла. Я думаю, что это fuser -km FileName. Лучше исследуйте это сами. Если вы знаете, какой процесс использует ваш файл, вы можете завершить процесс с помощью kill команда.
  3. использовать lsattr YourFileName чтобы увидеть атрибуты вашего файла. он может быть установлен как неизменяемый или не подлежащий удалению с помощью команды chattr -i filename или chattr -u filename если это так, вы можете сделать наоборот с chattr +i +u filename видеть man chattr или man lsattr для более подробной информации. chattr и lsattr приходят с более новыми системами. в моей Fedora2 он есть. старые системы не

Почему бы просто не остановить веб-сервер и перезапустить?

Если вы запускаете php напрямую, просто используйте top, чтобы найти процесс и убить его.

top | grep "php"

Найдите идентификатор процесса, а затем

kill "processId"

или даже проще:

killall php

попробуйте, ssh => войдите в систему как root, попробуйте переименовать файл и затем удалить его.