ফাইল তৈরির তারিখ পাওয়ার জন্য এখনও লিনাক্স কার্নেল ইন্টারফেস নেই?


21

দীর্ঘকাল ধরে, লিনাক্স ফাইল তৈরির তারিখগুলি নিয়ে বিরক্ত করেনি কারণ এটি সাধারণত ব্যবহৃত ফাইল সিস্টেমগুলির কোনও তাদের সমর্থন করে না। তবে এখন, 2 টি ফাইল সিস্টেম সাধারণত ব্যবহৃত হয় (এনটিএফএস এবং এক্সট 4) উভয় রেকর্ড ফাইল তৈরির তারিখ।

statকমান্ড যদিও এখনও আউটপুট Birth: -একটি ext4 ফাইল সিস্টেমে, যদিও আমরা দেখতে পারি যে ext4 ফাইল তারিখ তৈরি ব্যবহার সঞ্চিত হয়েছে debugfs -R 'stat <inode_number>' /dev/file_device

এটি কেন হয় তা আমি যখন খতিয়ে দেখলাম তখনই দেখেছি যে অন্য কেউ ইতিমধ্যে এটিতে একটি বাগ রিপোর্ট দায়ের করেছে, এবং একটি প্রবাহ সম্পর্কিত সমস্যার সাথে প্রতিক্রিয়া লিঙ্ক করেছে যা কেবল "এই তথ্য পাওয়ার জন্য কোনও লিনাক্স কার্নেল ইন্টারফেস নেই" তৈরির তারিখ]". এটা আমার কাছে অসাধারণ মনে হচ্ছে এই দৃশ্যত হয় এখনো কেস হিসাবে মানুষ যে অনুরোধ করা হয়েছে, statপ্রদর্শন বছর ধরে এই তথ্য (এবং statআউটপুট একটি করে Birthক্ষেত্র, যদিও এটি আপাতদৃষ্টিতে এটি এখনো সমর্থন করে না! তারা দলিল এটা জুড়েছেন?)

সুতরাং এটি এখনও সত্য যে ফাইল তৈরির তারিখ পেতে বর্তমানে লিনাক্স কার্নেল ইন্টারফেস নেই? এটি কি কখনও বাস্তবায়নের পরিকল্পনা রয়েছে?


1
কিছু পটভূমির জন্য superuser.com/a/703927/38062 দেখুন । আপনি যখন ব্যবহার করছেন তখন unix.stackexchange.com/a/304245/5132 উপভোগ করুন debugfs
জেডিবিপি

1
হ্যাঁ! লিনাসের অনুমোদনের জন্য কেবল 6 বছর :-)
জেজ

ZFSফাইল তৈরির সময়ও রেকর্ড করে এবং বর্ধিত বৈশিষ্ট্যের মাধ্যমে এগুলি পুনরুদ্ধার করতে দেয়।
কাঁচা

উত্তর:


15

সম্পাদনা: সুসংবাদ, statx()একীভূত করা হয়েছে যাতে এটি 4.11 প্রকাশে পাওয়া উচিত।


xstat () কাজ, বর্তমানে স্ট্যাটেক্স (), 2016 সালে সংশোধিত হয়েছে।

প্রক্রিয়াটি এবার কিছুটা বেশি শৃঙ্খলাবদ্ধ ছিল (কম বাইকশেডিং, বিতর্কিত বৈশিষ্ট্যগুলি বাদ দেওয়ার চুক্তি কারণ তারা সর্বদা পরে যুক্ত হতে পারে)। দুর্ভাগ্যক্রমে এখনও সঠিক ইন্টারফেস নিয়ে আপত্তি ছিল এবং আমি আর সাম্প্রতিক কোনও রেফারেন্স দেখিনি।


আপনি যে নিবন্ধটি লিঙ্ক করেছেন সেটি সাবস্ক্রিপশন ছাড়া উপলব্ধ নয়। এটি কি এই ইমেল? lkML.org/lkML/2017/3/5/149 যদি এর সাথে লিঙ্ক হয় তবে এটি নিখরচায়।
জেজ

@ জেজ স্থির এলডাব্লুএন লিঙ্কটি 7 দিন পরে উপলব্ধ হবে।
সোর্সজেদি

গিট উত্স থেকে সংকলিত সর্বশেষ কোর্টিলস (8.27.37-02b65a-নোংরা) সহ আমি জুবুন্টু 17.04 এ কার্নেলটি 4.11.2 চালাচ্ছি। স্থির এখনও খালি জন্মের সময় রিপোর্ট। কোনো সমস্যা?
শে

4

কারণ এটি সাধারণত ব্যবহৃত ফাইল সিস্টেমগুলির কোনও তাদের সমর্থন করে না

আমি যা বলতে পারি (দুঃখিত, সংযোগগুলি, মেমরি এবং গুগলেজের একটি গুচ্ছ, এখানে উল্লেখ হিসাবে যথেষ্ট পরিমাণে সমন্বিত কিছুই নেই), কারণ এটি কখনই ছিল না কারণ আন্ডারলাইং সিস্টেমগুলি সৃষ্টির সময়ের বৈশিষ্ট্যগুলিকে সমর্থন করে না, তবে কারণ তাদের কোনওটিও পারেনি এটি একটি দরকারী বৈশিষ্ট্য ছিল সম্মত হন।

Http://www.pathname.com/fhs/pub/fhs-2.3.html দেখুন

পসিক্স তিনটি সময়ের স্ট্যাম্প আউট দেয়। এগুলির কোনওটিই সৃষ্টির সময় নয়।

যদি আমি সঠিকভাবে মনে করি তবে যুক্তিটি এমন কিছু হয়েছিল:

> Give me a use case where we can't already do that using what we already have.
< Some examples were submitted
> All of these are convoluted beyond usefulness. 
> Ok, Ok, *maybe* a couple of these don't suck. 
> Now how do you see handling file systems that don't track this?
< several ideas that were not the same. 
< Basically everyone had a special case that would work, but not 
< one that always works. Fight about fallbacks and other special handling. 
> Ok, lets table that for now. What should we call this field
< At least 6 different answers emerged.
> So, you want to break POSIX standards, 
> you can't really come up with a good reason why, 
> you can't come up with a good fall back, and 
> you can't even come up with a name. 
> Sounds like it's specific to the file system to me, and that 
> should be "extended data" accessible by tools and not as 
> a core stat in the Kernel.

এখন এর অনেক কিছুই মেমরি এবং কিছু পুরানো মেলিং তালিকা পড়া। আমি আসলেই তর্কগুলির পক্ষে কেন্দ্রীভূত হইনি। এম্বেডড লিনাক্স সিস্টেমের জন্য ফ্যাট ড্রাইভারের শট ওয়ার্কের কারণে আমি একটি মেইলিং তালিকায় ছিলাম। আমি উল্লেখ করেছি কারণ সেখানে আরও বেশি কর্তৃত্ববাদী উত্স রয়েছে তবে আমার স্মৃতিতে আমি কেবল কিছু যত্ন নিই।

আমি মনে করি যে এই বড় চুক্তিটির সংমিশ্রণটি ছিল যে কেউই ভাল ব্যবহারের ক্ষেত্রে সামনে আসতে পারে না, অন্য যে 40 টি সাধারণ ব্যবহৃত ফাইল সিস্টেম তৈরির সময় সমর্থন করে না তার ক্ষেত্রটি কীভাবে পরিচালনা করতে পারে সে সম্পর্কে কেউ একমত হতে পারে না, এমনকি মাঠের নাম নিয়ে আসা একটি বিশাল বিতর্কে পরিণত হয়েছিল।


2
মনে রাখবেন যে ফাইল সিস্টেমগুলিতে এটি তৈরির সময় সৃষ্টি বর্ধিত স্ট্যাটাস হিসাবে সর্বদা অ্যাক্সেসযোগ্য ছিল। এটি কেবলমাত্র যে বর্ধিত পরিসংখ্যান পাওয়ার জন্য বাস্তবায়ন বেশ খানিকটা পরিবর্তিত হয়, তাই ls বা সন্ধানের মতো সরঞ্জামগুলিতে নেই। যুক্তিটি হ'ল ls তথ্য পেতে ফাইল সিস্টেমের বিশদ জানতে হবে এবং ls কী তা নয়।
কোটায়ার

1
debugfsডিস্ক চিত্রের বাইরে ফিল্ডটি পড়ার মতো কিছু ব্যবহার করা কোনও ইন্টারফেসের বেশি নয় এবং যাইহোক এটির জন্য সুবিধামত অ্যাক্সেসের প্রয়োজন হবে।
ইলকচাচু

যুক্তিগুলির মতো মনে হয় কারণ ইমপ্লিমেন্টেশনটি বিবেচনা করার আগে জায়গাটি আসলে এটি পরিবর্তন করার জায়গাটি পসিক্সের মধ্যেই ছিল। :)
জেসি অ্যাডেলম্যান

2

জন্মের সময়টি কেবলমাত্র ext4 নয়, বেশ কয়েকটি লিনাক্স নেটিভ ফাইল সিস্টেমে।

লিনাক্স কার্নেলের (এপ্রিল 2017) সংস্করণ 4.11 থেকে , এটি পুনরুদ্ধার statx()করার জন্য একটি নতুন সিস্টেম কল রয়েছে । যাইহোক, সংশ্লিষ্ট মোড়কের ফাংশন এখনো libc গনুহ যোগ করা হয়নি (এর 2018-06-26। যেমন 2019 সম্পাদন করা , এবং গনুহ মত সরঞ্জাম এখন 2.28 যোগ) stat, ls, findএটি ব্যবহার করার জন্য আপডেট করা হয়েছে ( 2019-08- 22 সম্পাদন করা গনুহ statজন্য glibc 2.28 সহ বা সমর্থন উপরে গনুহ / লিনাক্স অপারেটিং সিস্টেমে তে এটি coreutils 8.31 দেখাও)

আপনি এটির perlমতো কিছু দিয়ে এটি করতে পারেন:

perl -MPOSIX -e '
  require "syscall.ph";
  $buf = "\0" x 0x100; # enough space for a struct statx
  for (@ARGV) {
    # hardcode: AT_FDCWD == -100
    #           AT_SYMLINK_NOFOLLOW = 0x100 (lstat()-like)
    #           STATX_BTIME = 0x800 for the mask
    #           80: offset of the btime in the struct
    syscall(&SYS_statx, -100, $_, 0x100, 0x800, $buf) == 0
      or die "$_: $!\n";
    ($t, $n) = unpack("x80QQ", $buf);
    $n = sprintf("%09d", $n);
    print strftime("%F %T.$n %z\n", localtime $t)
  }' -- "$file"

আপনার syscall.phযদি না থাকে তবে SYS_statxআপনি এটি হার্ডকোডও করতে পারেন। এটি amd64 আর্কিটেকচারের 332। বা চেষ্টা করুন:

printf '#include <syscall.h>\n__NR_statx\n' | gcc -E -xc - | tail -n 1

এখন যে জন্ম সময় খুব কমই দরকারী। এটি ফাইলের ডেটাগুলির বয়স নয় (ফাইলগুলি তৈরি করার পরে ফাইলগুলিতে ডেটা লিখিত হয় ), বা প্রয়োজনে কোনও নাম ডিরেক্টরিতে ডিরেক্টরিটি ফাইল প্রদর্শিত হওয়ার সময় হয় (এটি কোনও আলাদা নাম হিসাবে তৈরি করা যেতে পারে এবং নাম পরিবর্তন করা বা সংযুক্ত করা যেত সেখানে এবং বিষয়বস্তু বা বৈশিষ্ট্যগুলির মধ্যে বেশ কয়েকবার পরিবর্তন করা হয়েছে)।


যদি লিনাক্স সম্পূর্ণরূপে সমর্থন NFSv4করে তবে এর জন্য বর্ধিত বৈশিষ্ট্যগুলি সমর্থন করা দরকার এবং বর্ধিত বৈশিষ্ট্যগুলিতে একটি সম্ভাব্য প্রবেশ crtimeরয়েছে। উদাহরণস্বরূপ সোলারিস ls.cউত্স যা ফাইল তৈরির সময় মুদ্রণ করে তা পরীক্ষা করে দেখুন ls -l -% crtime
স্কিচলি

@ শচিলি, লিনাক্স ওপেনসোর্স ওএসে সাধারণত ব্যবহৃত হিসাবে লিনাক্স প্রসারিত বৈশিষ্ট্য এবং এনটিএফএস -3 জি প্রসারিত করেছে প্রকৃতপক্ষে এনটিএফএস তৈরির সময়টিকে বর্ধিত বৈশিষ্ট্য হিসাবে প্রকাশ করে, যদিও 4.11 সাল থেকে, আমি আশা করি এটির মাধ্যমে এটি উপলব্ধ রয়েছে statx()statx()লিনাক্সে এখনও ইন্টারফেস করার কোনও মানসম্পন্ন ইউটিলিটি নেই, তবে বর্ধিত বৈশিষ্ট্য পুনরুদ্ধার কয়েক দশক ধরে সমর্থিত। দেখুন এনটিএফএস লজিক্যাল ভলিউমে আমি কোনও ফাইল তৈরির তারিখটি কীভাবে পাব?
স্টাফেন চেজেলাস

ওয়েল লিনাক্স বাড়ানো বৈশিষ্ট্যাবলী একটি POSIX খসড়া 1997 সালে প্রত্যাহার করা হয়েছে অবস্থায় NFSv4 রূপে নির্ধারিত একটি আধুনিক বর্ধিত অ্যাট্রিবিউট সিস্টেম, একটি উপসেট যেমন NTFS ফাইল স্ট্রিম সমর্থন করার জন্য অনুমতি দেয় সংজ্ঞায়িত এবং যে ফাইলের অ্যাট্রিবিউট ডিরেক্টরির মাধ্যমে খোলা হয় যে মাধ্যমে অ্যাক্সেস করার পরে অনুকরণে হয় openat(fd, ".", O_RDONLY|O_XATTR)
সহজেই

@ দক্ষতার সাথে আপনি এখানে এসিএল নিয়ে বিভ্রান্ত করছেন। প্রকৃতপক্ষে, আনফিসিয়াল প্যাচ ব্যতীত এনএফএসভি 4 এসিএলগুলির জন্য লিনাক্সের কোনও সমর্থন নেই তবে এর বর্ধিত বৈশিষ্ট্যগুলির সাথে খুব একটা সম্পর্ক নেই (এসিএলগুলি সাধারণত বর্ধিত বৈশিষ্ট্য হিসাবে সংরক্ষণ করা হবে)। লিনাক্স প্রসারিত বৈশিষ্ট্যগুলিকে সমর্থন করে, যা প্রকৃতপক্ষে সেগুলি পসিক্স-ড্রাফ্ট-টাইপ এসিএল এবং অন্যান্য কয়েকটি জিনিসের জন্য ব্যবহার করে। আর সেই বৈশিষ্ট্যগুলি পুনরুদ্ধার করার জন্য এপিআই ক্র্টটাইমটি প্রকাশের জন্য এনটিএফএস -3 জিও ব্যবহার করে, আমি মনে করি সোলারিসের মতো একইভাবে।
স্টাফেন চেজেলাস

@ প্রশংসনীয়, দেখে মনে হচ্ছে আপনি এটিতে উইকিপিডিয়ায় ভুল তথ্য যুক্ত করেছেন । ঠিক করুন
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.