টাস্ক / অ্যাপ চলাকালীন ম্যাক ওএসএক্সকে আপ এবং নিদ্রাহীন রাখা


10

আমি এসএস পাওয়ার চালু রেখে কয়েক ঘন্টা ওয়াইফাইয়ের মাধ্যমে আরএসআইএনসি কাজ করতে চাই। তবে যখন আমি এটি করি তখন ম্যাক কিছু সময়ের পরে সংযোগটি ভেঙে দেয়।

এনার্জি সেটিংস ফলকটিতে এটি "কম্পিউটার নেভার স্লিপ", "সম্ভব হলে ঘুমাতে হার্ড ডিস্ক রাখুন" এবং "নেটওয়ার্ক অ্যাক্সেসের জন্য জাগ্রত" কনফিগার করা হয়েছে।

প্লাস এটি মজাদার যদি টাস্কটি শেষ হয়ে আসলে ঘুমাতে যায় তবে ভাল হবে।

আমি বুঝতে পারছি অনুরূপ একটি প্রশ্ন সামনে বলা হয়েছে একীন করে নাও যে pmset এবং insomniaX , কিন্তু আমি মেশিন হতে চাই না বিনিদ্র । এবং আমি আরও বেশি করে এক্সটেনশান ইনস্টল করা চালিয়ে রাখতে চাই না, বা প্রতিবারের মতো পিএসসেটের মাধ্যমে টুইট করতে চাই না।

আমি এটি স্থানীয়ভাবে প্রত্যাশা অনুযায়ী আচরণ করতে চাই - একটি কাজ চালিয়ে যাওয়ার সময় জাগ্রত থাকুন এবং তারপরে "সম্ভব হলে" ঘুমাতে যান। এই সময়টি rsync এর কারণে, তবে পরের সময়টি অন্যরকম কিছু হতে পারে।

আমি কি যথারীতি খুব বেশি আশা করি? আমি কি এটি ঠিক করতে পারি? এটা কি ভেঙে গেছে?

উত্তর:


10

Caffeinate

উদাহরণ স্বরূপ:

caffeinate -i rsync -avz someuser@somehost:somefolder /some/local/folder

ম্যান পৃষ্ঠা থেকে:

EXAMPLE
     caffeinate -i make
        caffeinate forks a process, execs "make" in it, and holds an
        assertion that prevents idle sleep as long as that process
        is running.

এটি "আমি এই সিনেমাটি দেখার সময় প্রদর্শনকে ঘুমাতে দিই না" এর মতো পরিস্থিতিতেও ব্যবহার করা যেতে পারে:

caffeinate -d # in effect until you hit Ctrl+C

... বা "পরবর্তী 10,000 সেকেন্ডের জন্য জাগ্রত থাকুন":

caffeinate -t 10000

দেখুন man caffeinateবিস্তারিত জানার জন্য।


2
এটি অত্যন্ত উন্মত্ত! এটি কোনও ওএসএক্সে ডিফল্ট? কোন সংস্করণ থেকে? (আমি দ্রুত এই সম্পর্কে তথ্য সন্ধান করতে পারি না)
ক্রেগক্স

@ কাভাস - এই নিবন্ধ অনুসারে, এটি পর্বত সিংহ দিয়ে শিপিং শুরু করেছিল: cnet.com/news/… আমি এটির কাছ থেকে জানতে পেরেছি man pmset, যেখানে noidleবিকল্পটি অবচিত হিসাবে তালিকাভুক্ত রয়েছে।
নাথান লং

এছাড়াও, এই দুর্দান্ত টিউটোরিয়ালটি দেখুন: কম্পিউটার.
নাথান লং

4

জিগ্লারটি চলতে থাকলে মাউসটিকে কেবল "জিগল" করতে সেট করা যায়। এটি স্ক্রিন এবং কম্পিউটারকে ঘুম থেকে আটকাবে। Aাকনা বন্ধ থাকা অবস্থায় এটি কোনও ল্যাপটপে কাজ করবে না। তার জন্য আপনার ইনসমনিয়াএক্স বা অন্য কোনও কেক্সট ভিত্তিক অ্যাপ্লিকেশনটির প্রয়োজন।

এখানে চিত্র বর্ণনা লিখুন


Idাকনা বন্ধ নেই, ঠিক আছে। আমি অতিরিক্ত উত্তাপ চাই না
ক্রেগক্স

খুব সামান্য প্রয়োগ, সত্যিই।
আয়াজ

ঠিক আছে, যদিও আমার আর এটির দরকার নেই, এটি আসলে আমার সমস্যাটি সমাধান করেছে এবং এটি একটি দুর্দান্ত সমাধানের মতো বলে মনে হচ্ছে। আমার ধারণা আমার আগে এটি গ্রহণ করা উচিত ছিল।
ক্রেগক্স

2

আর একটি বিকল্প ক্যাফিন । এটি একটি অ্যাপ্লিকেশন - কোনও এক্সটেনশন নয় - যা নির্দিষ্ট সময়ের জন্য মেশিনটিকে "সক্রিয়" রাখে, এর পরে মেশিনটি সাধারণত যা কিছু করতে পারে তা করতে পারে: ফাঁকা যান, স্ক্রিনসেভার চালান, ঘুম ইত্যাদি, এটি জিতেছে ' আপনার মেশিনটি ঘুমাতে রাখবেন না, তবে তা দিন। আপনি যে সময়ের জন্য জিজ্ঞাসা করেছেন সেই সময়ের জন্য শক্তি সেভার সেটিংস "কখনই নয়" এ সেট করার এবং পরে সেগুলি পুনরুদ্ধার করার জন্য এটি কার্যত সমান বলে মনে হয়।

এখানে চিত্র বর্ণনা লিখুন


তবে আপনাকে এখনও অ্যাপ্লিকেশনটি শুরু করে থামাতে হবে। আপনি এটি সেট এবং ভুলে যেতে পারবেন না।
জোশ কে

1

আপনি স্টে-ওপেন অ্যাপলসক্রিপ অ্যাপ্লিকেশন তৈরির কথা বিবেচনা করতে পারেন যা চলমান প্রক্রিয়াটির অস্তিত্বের ভিত্তিতে স্লিপ টাইমার সেট / রিসেট করে। একটি লঞ্চ করা প্লিস্ট তৈরি করাও একটি কার্যকর সমাধান, তবে আমি এখনও বাক্য গঠনতে নড়বড়ে। "পিএমএসেট ফোর্স স্লিপ এক্স" কমান্ডের রুট অ্যাক্সেসের প্রয়োজন নেই, তবে সেটিংসটি পুনরায় বুটে পুনরায় সেট করা হয়েছে।

যেহেতু আপনার পরিস্থিতি মনে হচ্ছে আমি আপনার প্রতিটি প্রয়োজন অনুমান করতে পারব না, তাই আমি আপনার জন্য কিছু স্কেচ করব।

property LoopTime: 5 --measured in seconds
property normalSleepTimeout: 30 --measured in minutes
property processName: "rsync"  --the name of the process you're trying to find

on run
   do shell script "pmset force sleep 0"  --disables sleep
   idle()
end

on idle
   if not appIsRunning() then 
      do shell script ("pmset force sleep " & normalSleepTimeout as string) -- sets sleep to desired idle timeout
      quit
   end
   return 
end

on appIsRunning()
   --Here's where you need to do the test that an app is running.  True needs to mean "the app is running".  Store the value to "result" or change the below return statement.

   return result
end

আরএসআইএনসি এবং ব্যাকগ্রাউন্ড প্রক্রিয়াগুলির মতো জিনিসের জন্য আপনাকে আরও চতুর হওয়া এবং শীর্ষের মতো অন্যান্য ফাংশনগুলি পোল করতে হবে।

set result to False
if 0 < (count of (do shell script ("top -l 1 | grep" & processName as string))) then
   set result to True
end

লক্ষ্য করুন যে উপরের ক্ষেত্রে, কেবল "আরএসসিএনসি" অনুসন্ধান করা যদি মিথ্যা পজিটিভ ফিরিয়ে দেয় তবে আরএসসিএনসিডি চলমান কারণ "আরএসসিএনসি" এবং "আরএসসিএনসিডি" উভয়ই মিল রয়েছে। যদি এটি আপনার পক্ষে কাজ না করে তবে আপনাকে আরও জটিল হতে হতে পারে।

যদি অ্যাপ্লিকেশনটি উইন্ডোড প্রক্রিয়া হত তবে আমি কী চলছে তা নির্ধারণ করতে নিম্নলিখিত ব্যবহার করতাম:

tell application "System Events" to set RunningAppNames to name of processes

বা বান্ডেল সনাক্তকারীদের জন্য (আরও সুনির্দিষ্ট)

tell application "System Events" to set RunningBundles to bundle identifier of processes

আপনার পরিস্থিতি সম্পর্কে আমাকে আরও বলুন এবং আমি আরও সঠিক এবং আরও নমনীয় ইউজার ইন্টারফেসের সাথে কিছু লেখার চেষ্টা করব।


বাঁধ, আপনি এখানে যা বলেছেন তা আমি আবারও দেখব, তবে এই সমস্ত সমস্যার মধ্য দিয়ে যাওয়ার জন্য ধন্যবাদ! যদিও আমি আপাতত স্ক্রিপ্টগুলি লেখার বিষয়ে বিবেচনা করছি না। :)
ক্রেগক্স

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