Як назавжди "відновити" процес на Mac OS X (або iOS тощо)?


5

Я використовую хороший (безкоштовний) менеджер процесів під назвою ATMonitor для Mac OS X, який має безліч крутих прихованих функцій, одна з яких - можливість натиснути на запущений процес і встановити "renice" з +20 (менш пріоритетний) на -20 (найвищий пріоритет).

Найкраще, що він тримається між перезавантаженнями. Отже, ви хочете, щоб XYZ постійно отримував повну увагу, ви встановлюєте його один раз і це робиться.

Я хочу зробити те ж саме (відновити процес) на iPad, який працює з певним демоном, і я не знаю, як постійно налаштувати реніке.

Я можу це зробити один раз, і він працює чудово, але налаштування втрачається при перезавантаженні. Я десь читав.

Тепер, що стосується постійного скидання пріоритету процесу, це неможливо зробити безпосередньо. Однак ви можете підробити це за допомогою сценарію оболонки, який запускає додаток, а потім негайно відновлює його. Дайте цьому сценарію розширення ".command", і воно буде подвійне натискання в GUI. Не дуже елегантно, але це робить роботу.

Але, як мовиться, не дуже елегантно, і я не думаю, що так це робить ATMonitor.

Я знайшов це питання, і вони дали спосіб зробити це як аргумент запуску, але жодного очевидного способу зберегти його як постійне значення. Наприклад, якщо програма не запускалася запускати.

Як я можу встановити постійний рівень ренікера на виконаний бінарний файл, незалежний від його PID, коли, як або чому він був запущений?


Це питання було просто наштовхнулося на головну сторінку цього сайту автоматизованим процесом. Буду вдячний, якщо ви зможете відповісти на мої відповіді на обидва ваші запитання, або приймаючи їх, або згадуєте про те, що не працює для вас, щоб дати мені чи іншим можливість відповісти.
Даніель Бек

Я думаю, що "старомодним" способом зробити це було б просто написати сценарій оболонки та періодично встановлювати приємні рівні .. але я майже впевнений, що є спосіб зробити це через "ліміт" запуску [процесор | розмір файлів | дані | стек | серцевина | rss | memlock | maxproc | maxfiles] [обидва [м'які | важко]] З аргументами відсутність, ця команда друкує всі обмеження ресурсів запуску, як знайдено через getrlimit (2). Коли заданий ресурс заданий, він друкує межі для цього ресурсу. 3Args, вона встановлює як жорсткі, так і м'які важелі до цього значення. без аргументів, аргументи 3 + 4 повторюють межі та жорсткі межі. Я просто не впевнений
mralexgray

Відповіді:


5

Після безлічі досліджень я знайшов спосіб створити яблучний сценарій, який запустить і відновить програму. Він також подбає про всю справу адміністраторського пароля і для вас. Просто замініть xxxxxxxxx на свій власний пароль. Я використовував це з різними програмами, і всі, здається, працюють. Чесно кажучи, я не можу згадати, чому я поставив затримку на 1 секунду; Я думаю, що я просто хотів переконатися, що програма була запущена до того, як вона відмовиться. Я впевнений, що в цьому сценарії є варіанти. Приємно в тому, що вам не потрібно відкривати Монітор активності, знаходити ідентифікатор процесу тощо. Цей сценарій робить все це для вас. Я просто зберігаю кожен скрипт як додаток, запускаю його, і все в zippy. До речі, хоча я люблю atMonitor, у нього є тенденція раптово зависати вашу систему.


tell application "Safari"
    activate
    delay 1
end tell

tell application "System Events" to set unixID to unix id of process "Safari"
do shell script ("renice -20 " & unixID) password "xxxxxxxxx" with administrator privileges

Це рішення нове, і я впевнений, ефективне .. але воно, по суті, змушує вас до нестандартної, затятої $PATH схеми appleScripted . Є так багато способів уявити, як запустити "неправильну річ" і т. д. Дозвольте мені побачити, чи хтось інший звучить, але це виглядає близько до прийнятого.
mralexgray

2

Питання щодо iPad є поза темою на цьому сайті, оскільки він вважається "електронним пристроєм"; див. FAQ .

Відповідь для Mac OS X:

Зміни, здійснені atMonitor , насправді не затримуються між перезапусками . Вони повторно застосовуються, коли програма і atMonitor запускаються знову. Якщо ви вийдете з atMonitor і перезапустите оновлену програму, її приємне значення знову дорівнює 0 (підтвердіть за допомогою niceстовпця в ps axl). Отже, цей метод вимагає від вас запуску atMonitor.

Крім того, оскільки ви можете запускати фактичний бінарний файл безпосередньо, наприклад, /Applications/Firefox.app/Contents/MacOS/firefox-binзамість цього open -a Firefox, неможливо зробити цю зміну незалежною від способу запуску програми, не фактично переклеюючи сам бінарний файл (що зазвичай десь між божевільним складним і просто неможливим)

Ви можете робити те, що я пояснив тут , але замість передачі аргументів командного рядка запустіть програму через nice. Це буде не відрізнятись від реального додатка до тих пір, як ви його запустите open, Dock, двічі клацнувши пакет програми тощо. Якщо ви перейменовуєте справжній бінарний файл і надаєте скрипту оболонки його оригінальне ім'я (не змінюючи Info.plist, навіть важко -кодовані виклики пройдуть через ваш niceсценарій). Це все ще дозволить користувачам самостійно запускати (тепер перейменований) двійковий файл, але крім цього він буде працювати.


Кілька питань .. Де ви бачите "приємність" з ps ax1? Я не бачу жодних змін у пріоритетному процесі, такому як 28328 ?? S< 7:34.19 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finderдо або після запуску ATMonitor. Мені цікаво, чому немає і "приємного" стовпчика "вгорі" !? Також із методом, який ви описали у своєму дописі. Чи є проблеми з CodeSigning? І чи може цей метод також подвоїти екземпляри дока, як це було у тому прикладі виконання іншого бінарного файлу? І я знаю, що це ноно, але ви вважаєте, що це спрацювало б на SpringBoard?
mralexgray

@mralexgray Це маленька літера Lв ps axl. man topв OS X не згадується niceі не визначається пріоритет . Це спеціальна версія від Apple, тому вони, ймовірно, просто не турбувались. Зміна матеріалу в комплекті додатків буде перерва підпису коду. Ви не отримаєте подвійних екземплярів програми Dock, принаймні я цього не робив, коли писав і перевіряв пов'язаний пост; тому я додав, що це буде виглядати і вести себе так, як ви цього очікуєте . У мене немає досвіду розробки для iOS, ні офіційного, ні джейлбрейка, тому я не можу відповісти на ваше запитання. Я думаю, що можна запустити демона, схожого на AtMonitor, на iOS.
Даніель Бек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.