Рейтинг
+7.93
голосов:
3
avatar

Админу на заметку  

Каждому процессору - по процессу

Сейчас многоядерными компьютерами никого не удивишь. Насколько эффективно такие системы используются? Как правило, одно из ядер простаивает, т.к. для полноценной работы нужны еще и специальным образом написанные программы. Но кое-что можно сделать и средствами bash. Например, если за компьютером одновременно работают два человека, каждый в своей вртуальной машине (не важно, по сети или с помощью, например, multiseat), вот как, можно запустить каждую на собственном ядре:

su win1 -c 'taskset -c 0 qemu bla-bla-bla'
su win2 -c 'taskset -c 1 qemu bla-bla-bla'

Клавиатурный Salix

Команда Salix выпустила необычный дистрибутив: в качестве основного оконного менеджера в нем используется Ratpoison (крысиный яд, англ.), главная особенность которого — отказ от мыши!



Отсюда и специфическая подборка приложений в комплекте. В нее вошли программы (браузер, плеер, текстовый редактор), которыми можно управлять исключительно с клавиатуры. Конечно, такой дистрибутив — не более, чем экзотика для гиков, но попробовать небезынтересно. Подробности на русском здесь.



Полноразмерный скриншот здесь (в плейлисте у чувака — группа The Police, Стингу привет, опять-таки ).

Беспарольный вход в GDM

Иногда требуется организовать работу пользователей так, чтобы они могли попасть в знакомое окружение не вводя пароль. Например, в компьютерном классе идут занятия по программированию. Пользователи вводят в качестве логина, например, слово prog и попадают в свою настроенную среду. Затем в том же классе — занятия бухгалтеров, они вводят логин buch и видят совсем другое окружение. Очевидно, что в связи с большой текучкой пользователей пароли только усложнят ситуацию. Безопасность нужно обеспечивать другими способами.

Для решения этой задачи существуют специальные pam-модули, но, оказывается, всё гораздо проще. GDM (экран для графического входа в систему) пропускает без пароля всех пользователей, в отношении которых была выполнена команда:

passwd -d <username>

Austrumi: латвийское чудо

Из Linux-дистрибутивов я по-прежнему предпочитаю Salix. На работе поставил свежую LXDE-версию, которая существует как в 32-, так и в 64-битной ипостасях. Но вот незадача: почему-то разработчики этого тщательно сформированного и безупречного с точки зрения локализации и внешнего вида дистрибутива перестали выпускать Live-версии. А между тем Live-система — то, что надо для бюджетных нетбуков, у которых вместо жесткого диска твердотельный накопитель гига на 4 (речь, конечно же, о многострадальном Кузе). Недавно нашел отличную альтернативу live-Salix'у: латвийский живой дистриб Austrumi.



Впечатляют прямо-таки крейсерская скорость загрузки, нетребовательность к ресурсам, укомплектованность разнообразным софтом (вплоть до игр). При этом весит сие хозяйство всего около 200 Мб. Как они это сделали?! Приятно и то, что дистрибутив сформирован на основе любимого Slackware. Austrumi довольно активно развивается. Вот ссылка для скачивания свежей версии (2.4.0).


( Читать дальше )

Linux: убиваем процессы одной командой

Иногда команда killall не совсем удобна, если нужно подстрелить процессы, например, python, выполняющего какой-либо скрипт. Лучше так:

kill -9 `ps ux | grep 'wicd-client.py$' | awk '{print $2;}'`

Multiseat aka Горыныч

Многожопь — так можно перевести с английского слово multiseat, обозначающее компьютер, за которым одновременно могут работать несколько человек. Причем не по сети, а сидя за персональными клавиатурами, мышами и мониторами. Когда-то это называлось multihead, но со временем, когда выяснилось, что за компьютером не столько работают и думают, сколько просто сидят и протирают штаны… Впрочем, довольно лингвистических изысканий. Как же изготовить multiseat в среде Linux?





( Читать дальше )

Crontab для лентяев

Время от времени требуется запустить задание по расписанию в cron, и линуксоид начинает судорожно вспоминать в какой последовательности идут звездочки в crontab. Вот функция, позволяющая облегчить эту задачу:

crontest () { date "-d +$1 minutes" '+%M %k %d %m *'; }


Эту строчку можно добавить в ~/.bashrc. Использовать так:

crontest 5


— показать, как будет выглядеть в crontab время, чтобы задание запустилось через 5 минут.

Источник.

socat: проброс com портов через tcp/ip

Будем пробрасывать rs232 для работы фискального регистратора ЭЛВЕС-ФР-К. Воспользуемся релеем socat, позволяющим пробрасвать сокеты, вывод в файл и прочее прочее.

Сервер (к нему подключен фискальный регистратор):

socat tcp-l:5555,reuseaddr,fork file:/dev/ttyUSB0,raw


Клиент, на котором из-под wine работает 1С 8 с com 7:

socat pty,link=$HOME/.wine/dosdevices/com7,raw tcp:192.168.1.1:5555,mss=1400


Параметр mss — maximum segment size я использовал, так как были ошибки при передачи данных с регистратором (ошибки были и в remserial и в ser2net).

Быстро посмотреть статистику по сетевым подключениям

netstat -tn | awk 'NR>2 {print $6}' | sort | uniq -c | sort -rn


Output примерно такой будет:

9 ESTABLISHED
3 TIME_WAIT
1 CLOSE_WAIT


Источник.

FreeNX: не восстанавливаются сессии

Моя версия FreeNX:

NXSERVER — Version 3.2.0-74-SVN OS (GPL, using backend: 3.4.0)


Смотрим в лог, что происходит, когда клиенты не могут подключиться, выдавая сообщение session restore failed, /var/log/nxserver.log:

server_nxnode_echo: NX> 702 Proxy IP: terminal
server_nxnode_echo: NX> 706 Agent cookie: a0b20bdd93f2def43949327536a5e07c
server_nxnode_echo: NX> 704 Session cache: unix-application
server_nxnode_echo: NX> 707 SSL tunneling: 0
server_nxnode_echo: NX> 596 Error: Session restore failed. Reason was: Session: Display failure detected at 'Tue Sep 6 12:05:44 2011'.
server_nxnode_echo: NX> 1005 Session status: suspended
nxnode_reader: NX> 1001 Bye.


Добавляем в /usr/bin/nxserver:

available="$(getparam status)"


Сюда:

else
                                # only unix-* sessions can be resumed, but other session types can still be terminated
                                stringinstring "unix-" "$4" || available="N/A"
                                # Sergei_T
                                available="$(getparam status)"
                                printf "%-7s %-16s %32s %8s %5s %-14s %-11s %s\n" "$(getparam display)" "$(getparam type)" "$(getparam sessionId)" "$options" "$depth" "$geom" "$available" "$(getparam sessionName)" >> $TMPFILE
                        fi
                fi


bugs.launchpad.net/freenx-server/+bug/589723/comments/22