4

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

Самое приятное, что он застревает между перезапусками. Итак, вы хотите, чтобы XYZ все время получал полное внимание, вы устанавливаете его один раз, и все готово.

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

Я могу сделать это один раз, и он отлично работает, но настройки теряются при перезагрузке. Я где-то читал.

Теперь, что касается постоянного сброса приоритета процесса, это нельзя сделать напрямую. Тем не менее, вы можете подделать его с помощью сценария оболочки, который запускает приложение и затем сразу же восстанавливает его. Дайте этому сценарию расширение «.command», и в графическом интерфейсе его можно будет дважды щелкнуть. Не очень элегантно, но оно выполняет свою работу.

Но, как говорится, не очень элегантно, и я не думаю, что именно так ATMonitor делает это.

Я нашел этот вопрос, и они дали способ сделать это в качестве аргумента запуска, но не нашли очевидного способа сохранить его как постоянное значение. Например, если программа не собиралась запускаться с помощью launchd.

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

2 ответа2

4

После долгих исследований я нашел способ создать appleScript, который запустит и возродит программу. Он также позаботится обо всем, что касается пароля администратора. Просто замените xxxxxxxxx своим собственным паролем. Я использовал это с целым рядом программ, и все, кажется, работают. Честно говоря, я не могу вспомнить, почему я поместил в него задержку в 1 секунду; Я думаю, что я просто хотел убедиться, что программа была запущена до того, как ее начали использовать. Я уверен, что есть варианты этого сценария. Приятно то, что вам не нужно открывать Activity Monitor, находить идентификатор процесса и т.д. Этот скрипт делает все это для вас. Я просто сохраняю каждый скрипт как приложение, запускаю его, и все быстро. Кстати, хотя я люблю atMonitor, у него действительно есть тенденция внезапно зависать вашей системы. Смотрите отзывы об этом на MacUpdate.


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
2

Вопросы об iPad на этом сайте не по теме, так как он считается "электронным устройством"; смотрите FAQ.

Ответ для Mac OS X:

Изменения, выполненные atMonitor , фактически не сохраняются между перезапусками. Они повторно применяются, когда приложение и atMonitor снова работают. Если вы выйдете из atMonitor и перезапустите обработанное приложение, его значение nice снова будет равно 0 (проверьте, используя столбец nice в ps axl). Так что этот метод требует, чтобы вы работали в Мониторе.

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

Вы можете сделать то, что я объяснил здесь, но вместо передачи аргументов командной строки запустите приложение с помощью nice . Это будет неотличимо от реального приложения, если вы запустите его, используя open , Dock, дважды щелкнув по пакету приложения и т.д. Если вы переименуете настоящий двоичный файл и дадите сценарию оболочки его первоначальное имя (без изменения Info.plist , даже жестко закодированные вызовы пройдут через ваш nice сценарий). Это по-прежнему позволит пользователям самим запускать (теперь переименованный) двоичный файл, но помимо этого он будет работать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .