ওএস এক্স অ্যাপ্লিকেশন শুরু / স্টপ হুক


3

আমি যখন তৃতীয় পক্ষের সরঞ্জামগুলি ব্যবহার না করে কোনও অ্যাপ্লিকেশন শুরু বা বন্ধ করি তখন কীভাবে আমার কাছে কোনও স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে চলতে পারে?

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

স্পষ্টতা: অ্যাপ্লিকেশন শুরু / ছাড় যেকোনো উপায়ে সম্ভব। স্ক্রিপ্ট এবং অ্যাপ্লিকেশন সিরিয়ালভাবে চালানো উচিত।


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

স্পষ্টকরণের দুটি প্রশ্ন যেহেতু আপনি সত্যিই কেন এটি করতে চান তা বলেননি: 1) আপনি যখন সন্ধানকারী, ডক, লঞ্চার ইত্যাদির মাধ্যমে কোনও অ্যাপ্লিকেশন চালু / প্রস্থান করবেন তখন আপনি কেবল স্ক্রিপ্টটি চালাতে আগ্রহী হন বা আপনি চান? এটি যে কোনও সময় চালানো যাবে কোনও অ্যাপ্লিকেশন চালু করা বা কোনও উপায়ে এবং কোনও ব্যবহারকারী দ্বারা প্রস্থান করা? 2) আপনি কি এই স্ক্রিপ্টটি FIRST এবং তারপরে অ্যাপটি সিরিয়ালভাবে চালিত করতে চান বা কেবল অ্যাসিঙ্ক্রোনালি চালাতে চান (যেমন লগিংয়ের উদ্দেশ্যে)।
জে অ্যালেন

এটি একটি নির্দিষ্ট অ্যাপ বা সমস্ত অ্যাপ্লিকেশন?
টনি উইলিয়ামস

উত্তর:


4

উপরের আমার স্পষ্টীকরণ প্রশ্নের উত্তর ধরে নেওয়া আপনি চাইলে:

  1. কীভাবে বা কী প্রক্রিয়া বা ব্যবহারকারীর দ্বারা, এবং তা নির্বিশেষে যে কোনও সময় কোনও নির্দিষ্ট অ্যাপ্লিকেশন চালানো স্ক্রিপ্টটি
  2. অ্যাসিক্রোনাস, অ-ব্লকিং পথে চালিত স্ক্রিপ্ট (যেমন লগিংয়ের উদ্দেশ্যে)

... এটি করার কয়েকটি উপায় থাকতে পারে। আমি যেগুলি ভাবতে পারি না সেগুলি ভীষণ মার্জিত বা টার্নকি এবং সমস্তরাই রুট হিসাবে চলমান কিছু ধরণের প্রক্রিয়াজাতকরণ প্রক্রিয়া প্রয়োজন যা প্রবর্তন ইভেন্টগুলির জন্য সিস্টেমটিকে নিরীক্ষণ করতে কাজ করে।

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.