
ในกรณีเมื่อเราลบ filesystem ที่เป็น log file หรือ file ใน /var/log ด้วยวิธีการ rm-rf /var/log/xxxx.log แล้วปรากฏว่าเมือ show พื้นที่ df -lh พื้นที่ยังคงเหลือเท่าเดิม จำเป็นต้อง restart เครื่องใหม่เพื่อให้พื้นที่ว่างเพิ่มขึ้น ที่เป็นแบบนี้เพราะว่าตอนที่ลบไฟล์ ในระบบยังมี process เปิดไฟล์ที่ลบอยู่ (ไฟล์ใน /var/log ส่วนมากจะถูกเปิดโดย process ชื่อ syslog อยู่ตลอดเวลา)
ถ้าคุณใช้คำสั่ง lsof /var/log หลังจากที่ลบไฟล์ไปแล้วจะเห็นไฟล์"[deleted]" ถูกเปิดใช้อยู่โดยแต่ละ process
root@scitech2:/var/log# lsof | grep /var/log/
rsyslogd 1187 root 1w REG 104,6 1653341 143588 /var/log/kern.log
rsyslogd 1187 root 2w REG 104,6 32213758 143602 /var/log/messages
rsyslogd 1187 root 5w REG 104,6 170726327 143471 /var/log/syslog (deleted)
rsyslogd 1187 root 6w REG 104,6 440270 143598 /var/log/debug
rsyslogd 1187 root 7w REG 104,6 1538753 143599 /var/log/auth.log
rsyslogd 1187 root 8w REG 104,6 159269911 143597 /var/log/daemon.log (deleted)
rsyslogd 1187 root 9w REG 104,6 3493820 143551 /var/log/user.log
memcached 1279 nobody 1w REG 104,6 0 143827 /var/log/memcached.log
apache2 30126 root 2w REG 104,6 19902956 143572 /var/log/apache2/error.log
apache2 30126 root 8w REG 104,6 0 143478 /var/log/apache2/other_vhosts_access.log
apache2 30131 www-data 2w REG 104,6 19902956 143572 /var/log/apache2/error.log
rsyslogd 1187 root 1w REG 104,6 1653341 143588 /var/log/kern.log
rsyslogd 1187 root 2w REG 104,6 32213758 143602 /var/log/messages
rsyslogd 1187 root 5w REG 104,6 170726327 143471 /var/log/syslog (deleted)
rsyslogd 1187 root 6w REG 104,6 440270 143598 /var/log/debug
rsyslogd 1187 root 7w REG 104,6 1538753 143599 /var/log/auth.log
rsyslogd 1187 root 8w REG 104,6 159269911 143597 /var/log/daemon.log (deleted)
rsyslogd 1187 root 9w REG 104,6 3493820 143551 /var/log/user.log
memcached 1279 nobody 1w REG 104,6 0 143827 /var/log/memcached.log
apache2 30126 root 2w REG 104,6 19902956 143572 /var/log/apache2/error.log
apache2 30126 root 8w REG 104,6 0 143478 /var/log/apache2/other_vhosts_access.log
apache2 30131 www-data 2w REG 104,6 19902956 143572 /var/log/apache2/error.log
พื้นที่จะกลับคืนมาก็ต่อเมื่อ process ทั้่งหมดที่เปิดไฟล์นั้นอยู่ได้ปิดไฟล์นั้นไปแล้วเท่านั้น(หรือprocessทุกอันที่เปิดไฟล์อยู่ได้ exit หมดแล้ว) ก่อนจะลบไฟล์จึงควรที่จะเช็คดูก่อนว่ามี process ไหนใช้ไฟล์นั้นอยู่หรือเปล่า คำสั่งที่ใช้เช็คก็ fuser แต่ถ้าลบไฟล์ไปแล้วก็ต้อง kill process พวกนั้นทั้งหมด ในที่นี้ file /var/log/syslog ถูกใช้โดย process rsyslogd ก็ต้อง restart service rsyslogd โดย
rabbit:~#/etc/init.d/rsyslogd restart
( ที่คุณเห็นพื้นที่ว่างคืนมาหลังการ restart เครื่องก็เพราะตอนที่ restart เครื่อง process ทั้งหมดถูกปิดลงไปแล้ว )
จากนั้นให้ลองใช้ คำสั่ง df -lh ดูพื้นที่อีกครั้ง
ถ้าต้องการ clearไฟล์พวกนี้แนะนำว่าให้ใช้วิธี cat /dev/null > filename จะดีกว่า ไฟล์เดิมจะไม่ถูกลบแต่ข้อมูลทั้งหมดในไฟล์จะถูกล้างออกทำให้ได้ที่ว่างคืนมาทันทีโดยไม่ต้อง restart process
ที่มา [online]url : http://www.thaiadmin.org/board/index.php?topic=154427.0;imode