Çok verimli değil, ancak şunları yapabilirsiniz:
find /folder/downloading -type f -exec sh -c '
for file do
lsof -F a "$file" | grep -q w || mv "$file" /folder/downloaded
done' sh {} +
Bu dosya, ile sıralanmadığına çek w
ayin a
olarak Dışı Erişim modu l
i s
arasında t o
kalem f
önce iles m
o v
ing.
psmisc
Uygulanması fuser
genellikle Linux tabanlı işletim sistemleri üzerinde bulunan bir sahiptir -w
ile işlevini (dosyalar yazmak için açılmamış denetlemek için) ama ne yazık ki sadece işi -k
tekabül süreçleri öldürmek için. Ancak, yine de hiçbir şey yapmayan sözde sinyal 0'ı kullanarak kullanabilirsiniz:
find /folder/downloading -type f -exec sh -c '
for file do
fuser -s -w -k -0 "$file" || mv "$file" /folder/downloaded
done' sh {} +
Hangi işlemlerin hareket etmesini engellediğini görmek istiyorsanız -s
(veya yerine yenisiyle değiştirin -v
) kaldırın .
Bu komutları süper kullanıcı olarak çalıştırmıyorsanız, yalnızca işlemleriniz hakkında bilgi alacağınızı unutmayın. Dosyaları indiren işlemler farklı bir kullanıcı olarak çalışıyorsa, algılanmazlar.
Ayrıca, dosyaları farklı bir dosya sistemine taşımadığınız sürece, dosyaların taşınmasının, dosyaya yazmakta olan işlemlerin dosyaya yazmayı bitirmesini engellemeyeceğini unutmayın.
Onlar yazma bitirdikten sonra, dosya artık eğer Ancak, onlar sonradan yapılacak tasarlanmış oldum ne bağlı, bunlar karışık olabilir orada (örneğin onlar bunu indirdikten sonra dosyanın bazı özelliklerini değiştirmek istiyorum ve eğer bunu değil dosya tanımlayıcı aracılığıyla ( chmod()
vs gibi fchmod()
veya utimes()
bir dosya tanımlayıcı aracılığıyla yapılamaz).
%.part
% olarak yeniden adlandırın). İndirici iyi davranıyorsa (garip bir şey yapmazsa),mv
dosyaları yeniden adlandırabilmeniz gerekir .