Как я могу сократить время, необходимое для входа в систему, отложив / отложив запуск некоторых приложений?
Я настроил некоторые приложения для запуска при каждом входе в систему (например, 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 на то, что было в командной строке изначально.