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

Я настроил некоторые приложения для запуска при каждом входе в систему (например, redshift-gtk, gtg) автоматически, но после добавления их в запускаемые приложения (System -> Preferences -> Startup Applications) Очевидно, что время, необходимое для входа в систему увеличилось. Из-за всего этого время, необходимое для появления моих панелей, рабочего стола и т. Д., Слишком велико - до того момента, когда я вынужден ждать.

Мне не нужно, чтобы эти приложения были доступны сразу, но было бы хорошо, если бы они в конечном итоге запустились, а меню / панель ubuntu доступны для запуска других приложений, которые могут мне понадобиться.

Я попытался использовать команду at с намерением отредактировать все запускаемые приложения, чтобы поместить команды в очередь at, но это не сработало, поскольку приложения не получают необходимые переменные среды (например, DISPLAY).

Это что nice команда используется для? Любые другие идеи, как я могу сделать это? Если возможно, я бы хотел избежать редактирования команд запуска приложений, поскольку это потребовало бы больших усилий для репликации на другие машины, которые я использую.

3 ответа

Решение

Количество секунд, необходимое для ожидания загрузки вашего рабочего стола, произвольно и может меняться в зависимости от ситуации. Вместо sleepпопробуйте использовать следующее для запуска автозагрузки приложений, как только нагрузка на систему снизится:

(Правка: добавлено предложение Коушика.)

#!/bin/bash
# 
# Delays running an application until the system load has declined.
# 
# Usage:
#   run-when-load-low 'your command here'

echo "export DISPLAY=$DISPLAY; $1 &" | batch

exit 0

Сохранить как ~/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'", Для чего-то более сложного, чем это, вам, вероятно, лучше всего просто изменить копию скрипта с помощью жестко запрограммированной команды.

Я обнаружил, что просто с помощью sleep 10 && COMMAND как имя команды не работает. У меня были проблемы с загрузкой как conky, так и xchat слишком рано, и я как-то повредился. Я должен был написать небольшой сценарий под названием ~/bin/startup и поместите это в это:

#!/bin/bash
sleep 10
xchat &
conky &

Вам нужно изменить его разрешения, чтобы быть разрешенным для выполнения с chmod +x ~/bin/startup а затем просто замените запись запуска приложений с помощью команды startup и он запустит все в сценарии.

Вы можете иметь один файл для каждого приложения, если вы склонны к этому.

Используйте команду "сна".

В Системе -> Настройки -> Запуск приложений отредактируйте команду для программ, для которых вы хотите отложить:

sleep 10 && COMMAND

Замените 10 на количество секунд, которое вы хотите, чтобы оно ожидало, и COMMAND на то, что было в командной строке изначально.

Другие вопросы по тегам