Я настроил некоторые приложения для запуска при каждом входе в систему (например, redshift-gtk, gtg) автоматически, но после добавления их в запускаемые приложения ( System -> Preferences -> Startup Applications
) очевидно, что время, необходимое для входа в систему, увеличилось. Из-за всего этого время, необходимое для появления моих панелей, рабочего стола и т. Д., Слишком велико - до того момента, когда я вынужден ждать.
Мне не нужно, чтобы эти приложения были доступны сразу, но было бы хорошо, если бы они в конечном итоге запустились, в то время как меню / панель Ubuntu доступны для запуска других приложений, которые могут мне понадобиться.
Я попытался использовать команду at с намерением отредактировать все запускаемые приложения, чтобы поместить команды в очередь at, но это не сработало, поскольку приложения не получают необходимые переменные среды (например, DISPLAY).
Это то, что nice
команда используется? Любые другие идеи, как я могу сделать это? Если возможно, я бы хотел избежать редактирования команд запуска приложений, поскольку это потребовало бы больших усилий для репликации на другие машины, которые я использую.
Ответы:
Количество секунд, необходимое для ожидания загрузки вашего рабочего стола, произвольно и может меняться в зависимости от ситуации. Вместо этого
sleep
попробуйте использовать следующее для запуска автозагрузки приложений, как только нагрузка на систему снизится:(Редактировать: Добавлено предложение Коушика.)
Сохраните его как
~/bin/run-when-load-low
и добавьтеrun-when-load-low 'COMMAND'
в Настройки запуска приложений.Примечания по этому методу:
DISPLAY
переменную среды в приложение. Для большинства настольных приложений это все, что вам нужно. С учетом вышесказанного обязательно учитывайте любые особые случаи и учитывайте этот факт при устранении неполадок, связанных с неправильным поведением. Хорошее место для начала, если вы думаете, что приложению могут потребоваться другие передаваемые переменные среды,printenv
и документация приложения, хотя я лично еще не сталкивался с этой проблемой.batch
влияет только при запуске приложений; это не меняет их приоритет / милость.run-when-load-low 'gedit My\ Notes.txt'
. Если вам действительно нужно пройти одиночные кавычки параметров вашего приложения, вы должны будете использовать двойные кавычки в команде запуска:run-when-load-low "gedit 'My Notes.txt'"
. Для чего-то более сложного, чем это, вам, вероятно, лучше всего изменить копию скрипта с помощью жестко запрограммированной команды.источник
batch
? Кроме того, возможно ли уменьшить загрузку процессора до того, как настольный компьютер полностью завершит загрузку (скажем, ожидает загрузки диска для некоторых значков), и эти приложения начнут приводить к аналогичной ситуации, как и раньше? Другими словами, команды запускаются с пакетным присущим более низким приоритетом, который дают, когда другие приложения хотят запускаться?batch
очереди как работающий, поэтому я также запустил процесс в фоновом режиме. Модифицированная строка выглядит следующим образом:echo "export DISPLAY=$DISPLAY; notify-send 'Running on Load low' '$1' && $1 &" | batch
Я обнаружил, что просто использование в
sleep 10 && COMMAND
качестве имени команды не работает. У меня были проблемы с загрузкой как conky, так и xchat слишком рано и как-то повредил. Я должен был написать небольшой скрипт~/bin/startup
и вызвать его в нем:Вам нужно изменить его разрешения, чтобы разрешить его выполнение,
chmod +x ~/bin/startup
а затем просто заменить запись запускаемых приложений командой,startup
и она запустит все в сценарии.Вы можете иметь один файл для каждого приложения, если вы склонны к этому.
источник
sleep
Будет не задерживать загрузку. Запускаемые приложения не блокируют, что означает, что одновременно может быть загружено более одной вещи.sleep
ing позволяет остальной части гнома загружать, а затем загружать менее важные вещи.Используйте команду «сна».
В Системе -> Настройки -> Запуск приложений отредактируйте команду для программ, для которых вы хотите отложить:
Замените 10 на количество секунд, которое вы хотите, чтобы оно ожидало, и COMMAND на то, что изначально было в командной строке.
источник
COMMAND &
(запустить в фоновом режиме) будет работать.