শেল স্ক্রিপ্ট কি কোনও ফাইলের পরিবর্তন এবং পদক্ষেপ নিতে অপেক্ষা করতে পারে?


12

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

বিস্তারিত ব্যাখ্যা:

  1. ওপেনভিপিএন প্রতি 1 মিনিটে একটি ফাইলে তার স্থিতি লিখায়।
  2. আমার এই স্থিতি ফাইলটি বিশ্লেষণ এবং পদক্ষেপ নেওয়া দরকার।
  3. ওপেনভিপিএন স্ট্যাটাস ফাইলটিতে লেখার আগে এটি কেটে দেয়।
  4. আমি একটি নামী পাইপে লেখার চেষ্টা করেছি, তবে পাইপটি কাটাতে ব্যর্থ হলে অ্যাপটিতে আমি অযাচিত (তবে মারাত্মক নয়) ত্রুটি পেয়েছি।

যদি পরিবর্তন আসলে হয় সংযোজন , ফাইলে ঝুলন্ত tail -fসম্ভবত সবচেয়ে সহজ উপায়। তবে শুধুমাত্র সংযোজনের জন্য।
এসএফ

উত্তর:


21

সস্তা এন 'নোংরা উপায়:

stat -c %Y fileপরিবর্তনের সময় পরিবর্তন হলে লুপ এবং পদক্ষেপ নিন।

সম্ভবত আরও ভাল:

ফাইল সংশোধন ইভেন্টগুলি দেখতে আপনার ক্রিয়াকলাপটি ক্রোন পরিষেবাটি ব্যবহার করুন এবং আপনার ক্রিয়াটি চালান:

/path/to/your/file IN_MODIFY /path/to/your/script $#

দ্বিতীয় সমাধানের জন্য +1
মাইকেল লোম্যান


2

inotify হ'ল এটি করার সঠিক উপায়। খুব এই প্রশ্নের জন্য কিছু লিনাক্সফোর্ড ইউ ম্যাগাজিন সংস্করণে টিউটোরিয়াল দেওয়া হয়েছে।


0

সুতরাং একটি স্ক্রিপ্ট আছে যে:

1) ফাইলে সংশোধন সময়টি পরীক্ষা করে (স্ট্যাটাস সহ)
2) পরিবর্তনের সময়টি যদি শেষ সময় যাচাই করা হয় তার চেয়ে নতুন হয় তবে এটি পরিবর্তিত হয়েছে
3) এটি পার্স করুন এবং আপনার ক্রিয়াটি করুন
4) অন্য 1 মিনিটের জন্য ঘুমান এবং তারপরে পুনরায় লুপ করুন


0

দ্রুত এবং নোংরা উপায়:

function wait_file_changed {
    tail -fn0 "$1" | head -n1
}

wait_file_changed /tmp/potato
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.