অতীতে, লিনাক্স সিস্টেমে, আমি বড়, ওপেন লগ ফাইলগুলি (যে কোনও ফাইল যা সক্রিয়ভাবে একটি প্রক্রিয়া দ্বারা সক্রিয়ভাবে লেখা হচ্ছে) কেটে ফেলতে সক্ষম হয়েছি cat /dev/null > file.log
।
যাইহোক, ১০.৯ (ম্যাভারিক্স) এ বিষয়টি মনে হয় না। আমি একটি 11 জিবি ফাইল পেয়েছি যা একটি অ্যাপ্লিকেশন দ্বারা লগ করা হচ্ছে, কিন্তু যখন আমি একই ফাইলটি এই ফাইলটির সাথে করব তখন কিছুই হবে বলে মনে হচ্ছে না।
আমি যখন তুচ্ছ আকারের কোনও ফাইলটিতে এটি চেষ্টা করি, এটি কার্যকর হয়।
এখানে ls -l /dev/null
:
crw-rw-rw- 1 root wheel 3, 2 Dec 16 12:49 /dev/null
আমিও চেষ্টা করেছি cp /dev/null file.log
কোন লাভ হয়নি।
ভেবে যে আমি কাটা কাটা ফাংশনটি ( man 2 truncate
ডারউইনে) গ্রহণ করতে পারি আমি এটি সংকলন করে দুটি ফাইলের বিরুদ্ধে চালিয়েছি, একটির তুচ্ছ আকারের এবং অন্যটি প্রকৃত লগ ফাইল। আবার এটি তুচ্ছ ফাইলের বিরুদ্ধে কাজ করেছিল এবং অনেক বড় লগতে কাজ করে না।
/*
* Copyright (c) 2013 Thomas de Grivel <thomas@lowh.net>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
...
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <unistd.h>
int main (int argc, const char **argv)
{
int e = 0;
while (--argc) {
argv++;
if (truncate(*argv, 0)) {
e = 4;
warn("%s", *argv);
}
}
return e;
}
0
আমি কোন ফাইল ব্যবহার করি না কেন প্রক্রিয়াটি ফিরে আসে ।
du -h /tmp/file.log
ফলাফল11G /tmp/file.log
du
বাdu -h
কী বলে? ফাইলটি কি অপ্রয়োজনীয় ফাইল?