[Linux] Usunięcie z dysku uruchomionego programu

0

Pytanie z serii "dziwne". Czy jest mozliwe usuniecie z filesystemu uruchomionej binarki? O ile "rm" da sie bez przeszkod wywolac na danym pliku o tyle tak naprawde nie usuwa to danego pliku do czasu zakonczenia procesu (o ile dobrze sie orientuje to jest jakis reference counting). Podsumowujac, czy proces moze sobie zyc bez swojej reprezentacji na filesystemie a jezeli tak to jak to mozna osiagnac?

0

Pod linuksem binarka jest pakowana do pamięci, więc można usunąć plik bez problemu. Nie jest to niczym dziwnym.

1

"Usunięty" plik znajdziesz w /proc. Dotyczy to każdego usuniętego, ale jeszcze używanego pliku. Proces który pliku używa ma do niego dostęp, ale inne procesy już nie - "oficjalnie" plik jest usunięty i go już nie ma. Jeśli usuniesz binarkę, która jest uruchomiona to w zasadzie sytuacja analogiczna.

To jest dość fajne, bo np program może zaktualizować sam siebie, a od strony użytkownika - możesz zmienić nazwę używanego pliku. W Windows już są z tym kłopoty, dlatego zwykle aktualizacje systemu wymagają restartu komputera, pod Linuksem nie wymagają.

0

Moje pytanie bylo - czy da sie usunac ten plik. Czy proces moze "przestac z niego korzystac" i go fizycznie usunac. Myslalem o forku i zrobieniu daemona ale zdaje sie, ze plik wykonywalny traktowany jest przez system dalej jako uzywany i dopiero po zakonczeniu procesu dziecka (forka) jest usuwany. Moze jest jakas inna magia?

1 użytkowników online, w tym zalogowanych: 0, gości: 1