Можно попытаться использовать такие инструменты, как htop , и выполнить сортировку по использованию ЦП/ОЗУ/времени ЦП.
sudo apt-get install htop && htop
Вы также можете использовать iotop для проверки любого узкого места ввода-вывода,
sudo apt-get install iotop && sudo iotop
или
sudo iotop -P --only
-121--138937-
Следующий сценарий работает для меня, но он требует, чтобы у вас было только одно окно Chrome, и это окно было активным. Это должно быть легко подправить его или улучшить.
WINID=$(xdotool search --name 'Google Chrome' | head -n 1)
WINID_HEX=$(printf "0x%x" $WINID)
while true
do
xwininfo -id $WINID_HEX | grep Gmail
if [ "$?" -ne 0 ]
then
xdotool key --window $WINID ctrl+Tab
else
break
fi
sleep 2
done
Возможно, есть много других способов сделать это:
-121--45722-
Я бы начал с чего-то такого простого, как свободного
, чтобы исключить узкое место ОЗУ. Вот пример вывода:
$ free
total used free shared buffers cached
Mem: 895476 851080 44396 0 11008 557828
-/+ buffers/cache: 282244 613232
Swap: 0 0 0
Действительно важна строка -/+ буферы/кэш: 282244 613232
. Это означает, что из моих 895476 КБ памяти, доступной в пользовательском пространстве, 282244 КБ используются процессами, а 613232 КБ свободны (эта память в основном используется ядром для буферов и кэша, но может быть освобождена при необходимости).
Если вам постоянно не хватает памяти, попробуйте купить больше, хотя это не так просто, чтобы потреблять 4 ГБ с помощью только просмотра веб-страниц. zram
будет меньше решением (если вообще), так как оно использует сжатие, чтобы сделать более доступной ОЗУ, а сжатие использует CPU, замедляя работу системы.
Также, поскольку вы упоминаете просмотр веб-страниц, я предлагаю вам посмотреть на PureMoon браузер. Это форк Firefox, специально предназначенный для нетбуков и более медленных компьютеров.
$(…)
является подоболочкой по определению :это копия состояния среды выполнения оболочки¹, и изменения в состоянии, сделанные в подоболочке, не влияют на родителя. Подоболочка обычно реализуется путем разветвления нового процесса (, но некоторые оболочки могут оптимизировать это в некоторых случаях ).
Это не подоболочка, из которой можно получить значения переменных. Если бы изменения переменных влияли на родителя, это не было бы подоболочкой. Это подоболочка, чьи выходные данные родитель может получить. Подоболочка, созданная $(…)
, имеет свой стандартный вывод, установленный в канал, и родитель читает из этого канала и собирает вывод.
Есть несколько других конструкций, которые создают подоболочку. Я думаю, что это полный список для bash:
( … )
ничего не делает, кроме создания подоболочки и ожидания ее завершения ). В отличие от { … }
, который группирует команды исключительно для синтаксических целей и не создает подоболочку. … &
создает подоболочку и не ждет ее завершения. … | …
создает две подоболочки, одну для левой -стороны и одну для правой -стороны, и ожидает завершения работы обеих. Оболочка создает канал и соединяет стандартный вывод левой стороны -с концом канала записи, а стандартный ввод правой стороны -— с концом чтения. В некоторых снарядах (кш88, кш93, зш,bash с установленным параметромlastpipe
и действующим ), правая сторона -работает в исходной оболочке, поэтому конструкция конвейера создает только одну подоболочку. $(…)
(, также пишется как `…`
), создает подоболочку со стандартным выводом, установленным в канал, собирает вывод в родительском элементе и расширяет до этого вывода, за вычетом завершающих строк новой строки. (И вывод может подвергаться дальнейшему разделению и подстановке, но это уже другая история.)<(…)
создает подоболочку со стандартным выводом, установленным на канал, и расширяется до имени канала. Родительский процесс (или какой-либо другой процесс )может открыть канал для связи с подоболочкой. >(…)
делает то же самое, но с каналом на стандартном вводе. coproc …
создает подоболочку и не ожидает ее завершения. Стандартный ввод и вывод подоболочки настроены на канал, а родитель подключен к другому концу каждого канала.