Linux dan Server
Auto Update Diskspace Info di Linux Setelah Mendelete File

Auto Update Diskspace Info di Linux Setelah Mendelete File

Sabtu, 17 Maret 2012 07:48 WIB | 4.143 Views | Comments 2012-03-17 07:48:04

Sebenarnya pekerjaan ini cukup menyebalkan, bagaimana tidak ketika kita sudah menghapus file yang sangat besar dari komputer linux kita tetapi masih tersisa 0% dari space hardisk alias tidak berkurang. Hal yang bisa dilakukan untuk mengupdatenya adalah dengan merestart komputer kita, namun apa jadinya jika komputer kita itu adalah server yang pantang untuk direstart, apalagi kita sudah membuat script cron untuk menghapus file besar secara berkala, apa harus kita restart komputernyata? tidakkkkk ...


Sempat searching searching gitu di Google..dan jawabannya sama yaitu harus direstart. Ada satu pertanyaan yang ada disebuah website tanya jawab..ada seseorang yang menanyakan begini.

"If the partition used space increase in to 100%, we had to delete unnecessary file to have more space. But after deleting the files df -h command not updating the actual space details and we are unable to create any file. Why?" ..haha pertanyaan sejenis ternyata dengan yang saya alami dan jawabannya adalah...

Jadi setelah kita medelete sebesar apapun data yang ada di linux kita, tidak serta merta mengurangi hardisk kita (df info) dan bahkan jika kita write sebuah filepun masih ditolak dengan alasan penuh, padahal kita sudah menghapus ribuan data yang besarnya bergiga-giga. Hal ini disebabkan karena ada process delete yang mengunci space hardisk kita, cara yang bisa dilakukan adalah dengan mengkill process tadi dan alhasil disk akan free. Perintahnya adalah sebagai berikut:

ls -ld /proc/*/fd/* 2>&1 | fgrep `(deleted)`

dan akan menghasilkan output seperti ini:

lrwx------ 1 root root 64 Sep 15 10:45 /proc/2958/fd/12 -> /tmp/ibSAlc0V (deleted)
lrwx------ 1 root root 64 Sep 15 10:45 /proc/2958/fd/5 -> /tmp/ibUpZrp7 (deleted)
lrwx------ 1 root root 64 Sep 15 10:45 /proc/2958/fd/6 -> /tmp/ibUmDSgz (deleted)
lrwx------ 1 root root 64 Sep 15 10:45 /proc/2958/fd/7 -> /tmp/ibcLKj80 (deleted)
lrwx------ 1 root root 64 Sep 15 10:45 /proc/2958/fd/8 -> /tmp/ibubhw0s (deleted)
lrwx------ 1 root root 64 Sep 15 10:45 /proc/32645/fd/0 -> /dev/pts/1 (deleted)
lrwx------ 1 root root 64 Sep 15 10:45 /proc/32645/fd/1 -> /dev/pts/1 (deleted)
lrwx------ 1 root root 64 Sep 15 10:45 /proc/32645/fd/2 -> /dev/pts/1 (deleted)
lrwx------ 1 root root 64 Sep 15 10:45 /proc/32645/fd/255 -> /dev/pts/1 (deleted)
lrwx------ 1 root root 64 Sep 15 10:44 /proc/6788/fd/0 -> /dev/pts/38 (deleted)
lrwx------ 1 root root 64 Sep 15 10:44 /proc/6788/fd/1 -> /dev/pts/38 (deleted)
lrwx------ 1 root root 64 Sep 15 10:44 /proc/6788/fd/2 -> /dev/pts/38 (deleted)


Nah dari output diatas kita tinggal kill saja processnya contohnya 2958 , 6788 dengan cara kill -9 6788 cuma bayangin aja kalau ada ribuan line yang ada, akhirnya saya buat script PHP Cli...haha scripting shell kesukaan saya dan scriptnya seperti ini:

#!/usr/bin/php
<?
$path = "/tmp/df.log";
$perintah = "ls -ld /proc/*/fd/* 2>&1 | fgrep `(deleted)` > $path";
$hasil = system($perintah);

$buka  = fopen($path, "r");
$lines = file($path);

$jline = count($lines);
for($i=0;$i<$jline;$i++) {
   $line = $lines[$i];
   $proc = explode("/proc/",$line);
   $proc = explode("/",$proc[1]);
   $proc = $proc[0];
   $sys = "kill -9 $proc";
   system($sys);
}
unlink($path);
?>

Nah script diatas ditinggal di chmod saja ke 777 supaya bisa diekseskusi dan tinggal jalankan dengan ./namascript.php atau bila kita ingin masukan di crontab juga tidak apa-apa...selamat mencoba




Baca atau Download PDF Adi Sumaryadi - Bicara IT dan Internet

#






Mungkin anda tertarik menonton video tentang Mau Jadi Orang IT? Inilah Peta Jalan atau Roadmap yang Harus Ditempuh


Linux dan Server Lainnya