উপরের আমার স্পষ্টীকরণ প্রশ্নের উত্তর ধরে নেওয়া আপনি চাইলে:
- কীভাবে বা কী প্রক্রিয়া বা ব্যবহারকারীর দ্বারা, এবং তা নির্বিশেষে যে কোনও সময় কোনও নির্দিষ্ট অ্যাপ্লিকেশন চালানো স্ক্রিপ্টটি
- অ্যাসিক্রোনাস, অ-ব্লকিং পথে চালিত স্ক্রিপ্ট (যেমন লগিংয়ের উদ্দেশ্যে)
... এটি করার কয়েকটি উপায় থাকতে পারে। আমি যেগুলি ভাবতে পারি না সেগুলি ভীষণ মার্জিত বা টার্নকি এবং সমস্তরাই রুট হিসাবে চলমান কিছু ধরণের প্রক্রিয়াজাতকরণ প্রক্রিয়া প্রয়োজন যা প্রবর্তন ইভেন্টগুলির জন্য সিস্টেমটিকে নিরীক্ষণ করতে কাজ করে।
exec
মাধ্যমে কল পর্যবেক্ষণfs_usage
একটি সম্ভাব্য উপায় হল ডেমন (লঞ্চডেমোন) তৈরি করা যা ক্রমাগত চলমান, ইভেন্টগুলির fs_usage
জন্য চলমান কমান্ড পর্যবেক্ষণ exec
করে। নিম্নলিখিত কমান্ডটি চালিয়ে আপনি কী ধরণের তথ্য পাবেন তা দেখতে পাবেন:
sudo fs_usage -f exec
আমি সাফারিটি খোলার সময় এখানে সম্পর্কিত লাইনটি রয়েছে:
17:30:14.465075 posix_spawn /Applications/Safari.app/Contents/MacOS/Safari 0.000352 launchd.51630812
open /Applications/Maps.app
কমান্ড লাইন থেকে দৌড়ানোর সময় আউটপুটটি এখানে :
17:35:51.594849 execve /usr/bin/open 0.003680 W bash.51635318
17:35:51.642212 posix_spawn /Applications/Maps.app/Contents/MacOS/Maps 0.003158 W launchd.51635324
নোট করুন যে প্রায় সমস্ত "অ্যাপ্লিকেশন" (/ অ্যাপ্লিকেশনস /*.app) মাধ্যমে চালু করা posix_spawn
হয়েছে launchd
এবং সেগুলি লঞ্চ করতে ব্যবহৃত ফাইলটি /Applications/FOO.app/Contents/MacOS/FOO
(যেখানে FOO
অ্যাপ্লিকেশনটির নাম রয়েছে)। সুতরাং, তাত্ত্বিকভাবে, আপনি আপনার লঞ্চডেমোন এই কমান্ডটি পর্যবেক্ষণ করতে এবং যখনই এটি পর্যবেক্ষণ করছেন এমন অ্যাপ্লিকেশনটির পথ সরিয়ে দেয় তখনই আপনার স্ক্রিপ্টটি ট্রিগার করতে পারে:
sudo fs_usage -w -f exec | perl -lne 'm/.*posix_spawn +(.*?) +[0-9.]+ . launchd.\d+/sm && print $1'
launchservicesd
মাধ্যমে নিরীক্ষণlsappinfo
আমি উপরের সাথে ভয়াবহভাবে খুশি ছিলাম না কারণ এটি দুর্দান্ত হ্যাকি, প্রবর্তন ইভেন্টের পরিবর্তে ফাইল সিস্টেমের ইভেন্টগুলির জন্য নজর রাখছিল যা তাদের ট্রিগার করেছিল। এবং তখন আমি বুঝতে পারি, " launchd
"! প্রবর্তন পরিষেবাগুলি প্রবেশ করুন:
নেতৃস্থানীয়:
lsappinfo listen +all forever
এবং ভয়েলি, আপনি কেবল চালু করছেন না, তবে কোনও অ্যাপ্লিকেশন প্রস্থান করলে তাও জানানো হয়। আপনি যে কীগুলি যত্নশীল তা নিম্নলিখিত:
- kLSNotifyApplicationLaunch
- kLSNotifyApplicationBirth
- kLSNotifyLaunchFinished
- kLSNotifyApplicationDeath