Usuwanie plików (z których nie korzystając procesy).

0

Witam wszystki,
Chciałbym napisać skrypt pod BASH'a usuwający pliki z określonej lokalizacji (xxx/plik*) o określonej nazwie (plik*). Skrypt ma jednak usuwać jedynie te pliki z których nie korzysta w danym momencie żaden proces. Mam pewien pomysł ale brakuje mi wiedzy na ten temat żeby go napisać, między innymi jak stwierdzić czy z danego pliku korzysta jakiś proces?

0

Mam pewien pomysł ale brakuje mi wiedzy na ten temat żeby go napisać, między innymi jak stwierdzić czy z danego pliku korzysta jakiś proces?

Być może jeśli obcy proces korzysta z pliku to go blokuje i próba usunięcia nie powiedzie się - najprostsza metoda sprawdzenia; Jednak nie wiem, czy system wyświetli komunikat o próbie niemożności usunięcia blokowanego pliku czy nie, więc należałoby to sprawdzić;

Inna sprawa to napisanie prostej konsolówki realizującej to zadanie, ale jeśli koniecznie chcesz wykorzystac do tego skrypt to wydaje mi się, że spod BASH'a nie ma możliwości sprawdzenia tego jakimiś jego funkcjami; Jednak znawcą nie jestem - po prostu sprawdź co się stanie jeśli skrytp spróbuje usunąć blokowany plik - jeśli nic - masz rozwiązanie;

Programowo (np. w Pascal'u) można by sprawdzić czy coś blokuje plik czy nie (czyli z niego korzysta), ale i tak najszybciej byłoby po prostu spróbować go usunąć - jeśli się uda to nie jest wykorzystywany, a jeśli nie to wiadome, a w razie wystąpienia wyjątku możesz go przechwycić i "ukryć" by użytkownik nie widział błędu; W Pascal'u jest funkcja DeleteFile zwracająca wartość logiczną - wiadome co oznacza i także można by ją wykorzystać (lub odpowiednik z innych języków - zależy w czym ewentualnie napisałbyś konsolówkę);

0

Niestety, rm usunie plik nawet jesli z tego pliku bedzie korzystał proces - właśnie się dowiedziałem. Wiem też że istnieją lsof i fuser ale tego pierwszego niestety nie posiadam a fuser po sprawdzeniu zwraca mi 'nazwa_pliku:' i nie za bardzo wiem jak tego dalej uzyć :/

0

poza tym teoretycznie powinienem nazwę aktualnie sprawdzanego programo wrzucać jako zmienną żeby móc potem cokolwiek z nią zrobić (mam rację?), ale też nie mam pojęcia jak.

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