Почему этот исполняемый файл все еще выполняется после того, как я удалил его?

Я удалил исполняемый файл, так почему он все еще работает?

root@raspberrypi:/test# ls -la total 11096 drwxrwxrwx 2 pi pi 4096 Mar 12 18:26 . drwxrwxr-x 11 pi pi 4096 Feb 28 13:50 .. -rwxrw-rw- 1 pi pi 12149 Feb 28 13:00 .cproject -rwxrw-rw- 1 pi pi 3183 Mar 12 18:26 main.cpp -rwxrw-rw- 1 pi pi 2169 Feb 28 14:28 main.cpp~ -rwxrw-rw- 1 pi pi 1862 Feb 28 13:20 original.cpp -rwxrw-rw- 1 pi pi 984 Feb 28 13:09 .project -rwxrw-rw- 1 pi pi 11323309 Jan 28 12:54 teatro.png root@raspberrypi:/test# ./testedfb running... 

–Обновить:

Некоторое время спустя (после того, как я попытался скомпилировать снова, но есть ошибка, и исполняемый файл не был создан), поведение изменилось на:

 root@raspberrypi:/test# ./testedfb bash: ./testedfb: No such file or directory 

Но мне все еще любопытно; почему он бежал?

–update (2):

Просто случилось снова, и я сделал тест:

 root@raspberrypi:/test# killall -9 testedfb testedfb: no process found root@raspberrypi:/test# ./testedfb running... 

И он все еще работает …

Я нахожусь в баре малины.

–update (3):

Это просто произошло сейчас, файл был там, но он не был найден:

 root@raspberrypi:/test# ./testedfb bash: ./testedfb: No such file or directory root@raspberrypi:/test# ls main.cpp main.cpp~ original.cpp teatro.png testedfb 

(и при следующей попытке он действительно запустился)

Может быть, это NFS (эта папка установлена), которая слишком медленно обновляется? (спасибо @derobert за вопрос о файловой системе) – это ответ на этот второй случай, а не первый, поскольку я не могу видеть исполняемый файл, но все же я могу его выполнить … (и похоже, что процесс тоже не работает)

  • Проблема с nfs remount
  • Linux: разница между использованием autofs с NFS и использованием fstab
  • Обеспечение безопасности NFS в многопользовательской среде
  • Высокая доступность NFS
  • Расшифровка LUKS при загрузке: с помощью монтирования nfs для хранения ключа
  • rsync дает «chown <...> failed: Invalid argument (22)» с общим доступом nfs
  • Возможно ли совместное использование NFS через многожильный компьютер?
  • Удаление неиспользуемых сценариев инициализации
  • 3 Solutions collect form web for “Почему этот исполняемый файл все еще выполняется после того, как я удалил его?”

    Чтобы запустить программу, она открывается ядром (или его интерпретатором). Пока он запущен, файл остается открытым.

    Удаление файла, открытого в Unix, удаляет его имя с диска, сам файл удаляется только после его закрытия.

    Добавьте два выше, и вы увидите, что запущенная программа продолжает использовать свой программный файл, и этот будет удален только после выхода программы.

    Программа работает в памяти, удаление ее с диска обычно не влияет на остановку программы.

    Вам нужно явно убить программу с помощью killall testedfb или если она не реагирует на этот killall -9 testedfb .

    Похоже, что это проблема синхронизации папки NFS.

    Если я создам исполняемый файл на сервере NFS, он будет отображаться / выполняться локально только после команды ls .

    Если я удалю исполняемый файл на сервере NFS, он все равно выполняется локально, событие после команды ls показывает, что файла нет. Но если я удалю исполняемый файл локально (в той же папке NFS), он не будет найден для выполнения снова.

    (очистить: «локально» я имею в виду на клиентском терминале малины, а не на сервере NFS-сервера)

    Linux и Unix - лучшая ОС в мире.