[ Content | View menu ]

Как не пропустить момент установки нового ядра с помощью команды watch

13.01.2010

Выдержка из man 1 watch (входит в комплект утилит procps в Debian Lenny):

You can watch for your administrator to install the latest kernel with

        watch uname -r

(Note that -p isn’t guaranteed to work across reboots, especially
in the face of ntpdate or other bootup time-changing mechanisms)

linux - 0 комментариев

Разделение аргументов в shebang

28.12.2009

В комментариях к прошлогоднему переводу Bash Pitfalls внимательный flavi задался вопросом, почему при попытке выполнить скрипт, в начале которого написано

#!/bin/bash --posix --verbose

выдаётся ошибка

/bin/bash: --posix --verbose: invalid option

в то время как в интерактивном режиме bash нормально запускается с такой комбинацией опций; более того, если в shebang’е оставить только одну из этих опций, то скрипт также запускается без ошибок.

Поначалу я предположил, что --posix запрещает опции, не определённые стандартом POSIX на sh. Но тогда попытка выполнить bash --posix --norc также приводила бы к ошибке, и конструкция #!/bin/bash --verbose --norc работала бы нормально, а это не так.

Пришлось разбираться более плотно. В bash (1) я вычитал следующее (выделение — моё):

If the program is a file beginning with #!, the remainder of the first line specifies an interpreter for the program. The shell executes the specified interpreter on operating systems that do not handle this executable format themselves. The arguments to the interpreter consist of a single optional argument following the interpreter name on the first line of the program, followed by the name of the program, followed by the command arguments, if any.

Т.е. в shebang можно задавать только один аргумент; кроме того, bash самостоятельно анализирует shebang и вызывает указанный интерпретатор только в случае, если система сама не может выполнить этот скрипт.

Сам файл передаётся на выполнение с помощью системного вызова execve (2) (это я вычитал в файле execute_cmd.c в исходном коде bash), в man-странице которого и разъясняется политика партии по поводу разбиения аргументов интерпретатора:

On Linux, the entire string following the interpreter name is passed as a single argument to the interpreter, and this string can include white space.

Таким образом, в самом первом примере у bash в argv оказывается не два аргумента --verbose и --norc, а один --verbose --norc, что и приводит к ошибке, и вина bash лишь в том, что он не разбивает свои аргументы на части, как это делает, например, Perl.

Причина такого странного поведения операционной системы (казалось бы, что сложного в том, чтобы просто разбить строку на части по пробелам или символам табуляции) описана, например, в этой дискуссии LKML или, более подробно, в письме Garance A Drosihn в рассылку freebsd-arch. Вкратце, если бы механизм механизм обработки shebang (в Linux — linux/fs/binfmt_script.c) передавал все аргументы интерпретатору, то для некоторых из них было бы затруднительно отделить аругменты интерпретатора от собственно аргументов вызываемого скрипта. По крайней мере, так было еще на заре развития Unix и с тех пор большая часть Unix-систем передаёт все аргументы как единую строку.

linux - 3 комментария

Басни про git

27.12.2009

Пытающимся отвыкнуть от идеологии CVS и SVN — рассказ о концепциях распределённых систем контроля версий.

Более подробное введение

ага, для ссылок есть твиттер и del.icio.us, но ЭТУ ссылку я уже однажды потерял. Так что пусть тут побудет, в назидание.

linux - 0 комментариев

Очередные мелочи Firefox

23.12.2009

Функция «detach tab», актуальная при наличии двух мониторов, в Firefox 3.0 (он же Iceweasel в Debian) в явном виде отсутствует, но хотя на пустое место вкладку перетащить нельзя (как, например, в gnome-terminal), работает простое перетаскивание вкладок между окнами. Таким образом, чтобы отделить вкладку в отдельное окно, нужно сначала создать это окно (Ctrl+N), сделать его видимым одновременно с основным и перетащить туда эту вкладку. В Firefox 3.5 для выделения вкладки в новое окно есть пункт «Open in a new window» в контекстном меню вкладки.

Чтобы в режиме fullscreen строка статуса всегда оставалась видимой, нужно создать файл настроек интерфейса %profiledir%/chrome/userChrome.css (или скопировать его из userChrome-example.css из той же папке) со следующим содержанием:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
#status-bar
{
	visibility: visible;
}

Ещё несколько примеров того, как можно настроить Firefox под себя без использования расширений.

linux - 0 комментариев

Ищем веб-разработчика в Нижнем Новгороде

01.12.2009

Требования: PHP или Python, SQL, JS, Flex (последнее не обязательно, но очень приветствуется).

Необходимо понимать и уметь применять на практике парадигму ООП, знать основные паттерны проектирования веб-приложений, желательно иметь опыт работы с веб-фреймворками.

Дополнительные требования: Linux, shell-скрипты; понимание принципов работы voip-технологий также будет несомненным плюсом.

Приветствуется опыт администрирования Linux, Apache, СУБД MySQL, Postgresql, Oracle.

Чуть подробнее тут.

Работа в офисе.

Зарплата по результатам собеседования (от 20 т.р.)

Резюме присылайте мне (адрес на специальной страничке) или прямо в отдел кадров с пометкой, откуда взяли :)

linux - 1 комментарий

Секретные операторы Perl

30.11.2009

Эскимосский превед }{, goatse НЛО =()=, телекоммуникационный спутник -+- и другие не менее осмысленные конструкции.

И вообще, блог good coders code, great reuse (англ.) более чем заслуживает того, чтобы на него подписаться.

linux - 0 комментариев

Занимательная математика с MySQL

06.11.2009

Коллега Алексей Аристов поделился парадоксом:

Server version: 5.0.51a-24+lenny1 (Debian)

mysql> select '0'=0;
+-------+
| '0'=0 |
+-------+
|     1 |
+-------+
1 row in set (0.00 sec)

mysql> select ''=0;
+------+
| 0='' |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

mysql> select ''='0';
+--------+
| ''='0' |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

Если два значения равны третьему, они не равны между собой, что немного противоречит здравому смыслу. Однако такое поведение легко можно объяснить read more…

linux - 0 комментариев

Лицензия Windows 7 с точки зрения линуксоида

29.10.2009

Миллионы пользователей Windows, больше года ожидавшие выхода новой, теперь уже правильной (по сравнению с Vista) ОС от Microsoft, наконец счастливы: 22 октября начались продажи Windows 7. Из этих счастливцев самые радостные — добровольные бета-тестеры предварительных релизов, которым наравне со всеми рано или поздно придется приобрести один из вариантов семерки.

Последней версией windows, которой я активно пользовался, была XP, и я не видел ни Windows Vista, ни тем более Windows 7 (что за идиотское обозначение релиза: «7», его можно употреблять только в сочетании со словом windows. Похоже, концентрация «windows» в этом посте превысит все мыслимые пределы. Windows windows windows windows окна окна пластиковые окна, и закончу на этом). Но я слышал множество лестных отзывов о новой системе даже от бывалых линуксоидов. Более того, сам Линус Торвальдс в шутку сфотографировался на фоне точки продаж семерки. Что же это такое, надо, пожалуй, взглянуть, неужели и правда Microsoft сделала такой шаг вперед навстречу прогрессивному человечеству?

Но нельзя поставить систему на компьютер, не согласившись с лицензионным соглашением. Посмотрим, что же нам предлагает (точнее, запрещает) лицензионное соглашение для версии с максимальными возможностями (по-русски она так и называется — «максимальная», что, конечно же, не передаёт всех смысловых оттенков слова «Ultimate»). А в разделе «Примеры лицензионных соглашений» можно найти примерную OEM лицензию, которая, за исключением нескольких моментов, соответствует своей коробочной версии.
read more…

linux - 7 комментариев

Заметки на память

07.09.2009

Если после перезагрузки не сохраняются параметры клавиатуры в Gnome-окружении Debian или Ubuntu, поможет добавление setxkbmap в приложения, запускаемые автоматически при входе в систему («Система — Параметры — Запускаемые приложения» или «System — Parameters — Sessions»)

Если при монтировании расшаренного через Samba каталога через mount.cifs симлинки отображаются как локальные ссылки, нужно на обеих машинах в smb.conf отключить unix extensions, которые и отвечают за такое поведение символических ссылок:

unix extensions = no

Если в Ubuntu одновременно перестали работать su, sudo, входы в систему с консоли и через ssh (основной симптом: зависает после ввода пароля), то для постановки окончательного дифференциального диагноза можно попробовать выполнить команду «logger test». Если и это зависает, то налицо проблема с демоном syslogd. В моем случае решение вылилось в отключении опции «-r» в/etc/default/syslogd (принимать сообщения по сети), которая однажды была добавлена мной для удаленной отладки одного voip-телефона. На самом деле это явная бага, которая, судя по Ubuntu Bug 26986, тянется аж с 2005 года.

linux - 1 комментарий

Ссылка на определенное место в man’е

24.08.2009

В блоге «Полезные советы по Linux» наткнулся на способ ссылаться на определенное место в документации:

sh -c 'PAGER="less" LESS="-p search_string" man man_page'

Явно вызываем sh, задаем просмотрщик less и указываем ему строку, которую нужно найти. Команда man запустит less и прокрутит экран до первого совпадения.

Конечно же, необходимо убедиться, что заданный шаблон присутствует в документе хотя бы один раз, и первый раз встречается именно в том месте, на которое вы хотите сослаться. Если ни одного совпадения не найдено, будет выведена ошибка и man будет показан с его начала, да и то только после нажатия Enter. Также стоит учитывать, что у адресата вашего сообщения может быть другой shell, другая версия документации и вообще другая операционная система.

Несколько примеров (предполагаем, что в качестве шелла используется sh-compatible shell типа bash или zsh, а переменная PAGER установлена в less).

Абзац в bash (1) про фичу complete-into-braces из одной из предыдущих заметок:

LESS="-p complete-into-braces" man bash

Раздел про подстановку из истории в bash (1). Поскольку строка HISTORY EXPANSION в документе встречается неоднократно, то требуется привязка к началу строки:

LESS='-p ^s*HISTORY EXPANSION' man bash

Подсветка важной фразы целиком:

LESS='-p Please note.*log the command[^.]*.' man sudo

Этот фокус можно задействовать в других утилитах, использующих less, например, в perldoc:

LESS='-p ^s*Range Operators' perldoc perlop

О том, как эта конструкция работает:

LESS='-p MANPAGER, PAGER' man man
LESS='-p -ppattern.*' man less
LESS='-p Options which.*' man less

linux - 2 комментария

Построение регулярного выражения по списку строк

18.08.2009

Имеется неколько десятков однотипных файлов вида FILE20090801011253.txt, FILE20090801023619.txt и т.д. Требуется составить регулярное выражение, которому удовлетворяют только названия файлов из списка.

Вручную это можно сделать примерно так:

FILE200908010(11253|23619)\.txt

Если файлов много, то никаких нервов не хватит высчитывать, проверять и перепроверять.

То же самое можно сделать полуавтоматически, с помощью механизма complete-into-braces оболочки bash. Сочетание клавиш Esc-{ преобразовывает список подстановки в более-менее оптимальный формат brace-completion, пригодный для дальнейшей обработки:

$ echo /path/to/dir/(Esc-{)FILE200908010{11253.txt,23619.txt}

Чтобы из получившейся строки сделать нормальный регэксп, нужно фигурные скобки заменить на круглые, а запятые — на вертикальную черту:

echo "FILE200908010{11253.txt,23619.txt} "|sed -e 's/{/(/g' -e 's/}/)/g' -e 's/,/|/g'

Приходится делать много лишних слабоавтоматизируемых действий, после чего копировать, вставлять, заменять и исправлять, что не очень удобно.

После непродолжительных поисков был найден Perl’овый модуль Regexp::List, функцию list2re (преобразование списка в регулярное выражение) из которого можно приспособить под любые подобные задачи. Вот, например, сокращенная версия скрипта для моего случая:

use Regexp::List;
my $l=Regexp::List->new;
$l->set(lookahead=>0);

opendir(D,"/path/to/dir") or die "Could not open $dir: $!";
my @list=grep {$_!~/^\.\.?$/ } readdir(D);          # get directory entries except "." and ".."
closedir(D);

my $re = $l->list2re(@list);                        # create regexp from @list
$re=~s/^\(\?-[xism]+:(.*?)\)$/^$1\$/g;              # strip "(?:-xism" and ")"
print "$re\n";

Для следующих десяти файлов:

FILE20090802120343.txt
FILE20090802165139.txt
FILE20090802181550.txt
FILE20090804014529.txt
FILE20090804140848.txt
FILE20090805103525.txt
FILE20090805104025.txt
FILE20090810083211.txt
FILE20090810120349.txt
FILE20090810121250.txt

Скрипт выдает такой результат:

^FILE200908(?:0(?:510(?:40|35)25\.txt|21(?:81550|20343|65139)\.txt|4(?:140848|014529)\.txt)|10(?:12(?:1250|0349)\.txt|083211\.txt))$

Что и требовалось.

Пользуясь случаем, хочу порекламировать PDF-версию третьего издания книги «Регулярные выражения» Джеффри Фридла

linux - 7 комментариев

Дым над Лебердоном

07.07.2009

Вторую неделю рунет бурлит и негодует по поводу решения Кировского райсуда г.Ростова-на-Дону от 15 июня, согласно которому группа Deep Purple «незаконно», без согласования с РАО, 19 октября 2008 года исполнила собственные произведения в городе Ростов-на-Дону. Вот ссылка на юридический форум, где обсуждается данное дело, а вот сканы в удобочитаемом виде. Впрочем, из обоих источников нормальному человеку все равно ничего не понятно, поэтому новость распространилась в следующей придуманной добрыми людьми формулировке:

«Приехала как то в Ростов–на–Дону всемирно известная и очень любимая нынешним президентом России группа Deep Purple, сыграла концерт и уехала. И никто не ждал подвоха, пока через некоторое время к организаторам концерта не пришли местные представители РАО и попросили заплатить за то что какие то засранцы Ян Гиллан, Роджер Гловер, Стив Морс и Ян Пейс в славном городе Ростове исполнили песни всемирно известных артистов Яна Гиллана, Роджера Гловера, Стива Морса и Яна Пейса. Организаторы отказались, после чего РАО подало на них в суд и выиграло. Ну и напоследок, самое вкусное — сканы решения суда заставляющие гордится мощью и эффективностью системы, под названием Российское Авторское Общество»

А между тем, если внимательно прочитать сканы решения, суть дела понять вполне можно, и абсурдное «РАО против Deep Purple» превращается в «Deep Purple против организаторов концертов, не уплативших авторские отчисления». Подробно об этом написано в комментарии хабрапользователя Вадима Галкина:

Организаторы концерта обязаны были заплатить группе:
а) деньги за исполнение,
б) авторские отчисления.

Почему надо оплатить авторские отчисления тем, кто сам исполняет? Потому что сочиняют песни разные люди, одни играют свое, другие нет. Есть те, кто сочинил, но в туре не участвует. Они тоже должны получить свои деньги.

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

Здесь и происходит самое интересное. Да, в договоре такого пункта нет. Организаторы решили, что если пункт исключить, то платить не надо. Но они ошиблись. Если они не хотели платить авторское вознаграждение, то надо было включить в договор пункт, что платить не будем. Договор подписан, группа с этим согласилась, требовать не имеет право.

Но в гражданском законодательстве действует другой принцип: если какого-то пункта в договоре нет, то решается все на основании кодексов, законов, или деловой практики. Суд ссылается именно на деловую практику и деловую традицию. Так принято, организатор платит и за выступление и выплачивает авторское вознаграждение.

В общем, это чисто юридическая заморочка. Организаторы действовали с юридической точки зрения не профессионально, и за это поплатились. Надо было на стадии заключения договора все обсудить.

Итог: это не маразм РАО, это не маразм суда, это просто разборки между юрлицами. Организаторы концертов хотели сэкономить, но сделали это не профессионально. Представители группы (IMB) обратились в РАО, что бы те взыскали деньги, потому что имеют право.

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

Таким образом, кроме спора юридических лиц, ведущегося в рамках закона, имеем очередную иллюстрацию известного демотиватора и панику на пустом месте.

Будьте бдительны. Не поддавайтесь на провокации.

P.S. 21 октября 2008 года, через два дня после концерта в Ростове-на-Дону , Deep Purple должны были бы выступать в Нижнем Новгороде в традиционном для концертов такого масштаба Нагорном Дворце Спорта. Но за пару недель до концерта вдруг выяснилось, что в свежеотремонтированном здании Дворца Спорта нельзя проводить любые шоу, кроме ледовых представлений и хоккейных матчей. Поэтому приезд DP в НН со скандалом отменили и, похоже, больше они в наш город ни ногой. Равно как и другие звезды их уровня.

linux - 4 комментария

Мелкие хитрости midnight commander

18.06.2009

Из /usr/share/doc/mc/README.Debian:
- если в истории команд mc постоянно присутствуют строки вида cd "`printf "%b" '\0057home'`", убедитесь, что в переменной окружения HISTCONTROL присутствует ignorespace или ignoreboth, или же эта переменная вообще отсутствует. Подробности в debian bug 440102.
- действие, с незапамятных времен выполнявшееся по кнопкам M-O (в противоположной панели отобразить путь в текущей панели), с 4.6.2-pre1 пор переехало на M-I, а на M-O теперь отображение в другой панели родительского каталога, или каталога, находящегося под курсором. Эргономично, да, но очень непривычно. Кстати, русскоязычная справка, вызываемая по F1, описывает старое поведение.


У нас есть несколько папок с однотипными объектами вида 1.1.1.1, 1.1.1.2, …, 1.1.1.10, 1.1.1.11, …, 1.4.3.5, 1.4.3.9, 1.4.3.10 …. Опытные разработчики уже, наверно, догадались, к чему я клоню :) При обычной алфавитно-цифровой сортировке 1.1.1.10 следует после 1.1.1.1, но до 1.1.1.2, что очень неприятно. У GNU-версии ls есть специальная опция -v, которая как раз выводит файлы в порядке возрастания версий. А в mc ничего похожего, увы, нет.

За 10 минут сделал патч, добавляющий вариант «сортировать файлы по версии» в меню выбора режима сортировки. К сожалению, простой правкой конфига тут обойтись не получилось, поэтому пришлось пересобрать пакет mc целиком — еще 40 минут, но оно того стоило :-)


Мегаполезной фичей вдруг оказалось пользовательское меню, которым я раньше почти никогда не пользовался (наверно, потому, что там ничего полезного не было — ну на кой мне «распаковать архив», если я то же самое сделаю тремя привычными способами). Прочитав раздел справки про mc.menu и добавив в ~/.mc/menu несколько строчек, я сэкономил себе кучу времени, тратившегося на бесконечные

vimdiff Alt-A Alt-Enter Tab Alt-A Alt-Enter Enter

и

diff -rubB Alt-A  Tab Alt-A Enter

Этот код добавляет в меню две команды: сравнения двух каталогов и мержа файла в одном каталоге с одноименным файлом в другом каталоге:

d   Compare directories
    if [ "%d" = "%D" ]; then
      whiptail --msgbox "The two directores must be different" 7 60
      exit 1
    fi
    diff -rubB "%d" "%D" | vim -

# обычный непомеченный файл
+ t r & ! t t
f   Diff & merge file under cursor with the same file in other panel
    if [ "%d" = "%D" ]; then
        # если в противоположной панели открыта та же папка
        whiptail --msgbox "The two directores must be different" 7 60
      exit 1
    fi
    if [ ! -f "%D/%f" ] ; then
       # если в противоположной панели нет файла с таким же именем
        whiptail --msgbox "No copy of %f in %D" 7 60
        exit 1
    fi
    if diff -q "%D/%f" "%d/%f" ; then
       # если файлы не различаются
        whiptail --msgbox "%D/%f and %d/%f are identical" 10 80
        exit 1
    fi
    vimdiff "%d/%s" "%D"

linux - 0 комментариев

Рекурсивные операции с файлами в Linux

16.06.2009

Иногда возникает путаница между опциями -r и -R, каждая из которых в разных программах может означать рекурсивную обработку файлов в найденных каталогах. А может означать нечто совершенно противоположное или работать не так, как этого ожидал пользователь. Попробуем разобраться, в каких случаях что используется.

Эпиграф

— Это новый «Гарри Поттер». Я заказал версии для детей и взрослых, чтобы проверить, что в тексте нет различий.
Морис Мосс, The IT Crowd.

chmod

Неправильно:

chmod -r 755 dir

Ключ -r у chmod интерпретируется как «запретить всем чтение файла», а 755 в данном случае рассматривается как название файла, у которого изменяются права. Поскольку в подавляющем большинстве случаев файла с таким названием в текущей директории отсутствует, то команда возвращает ошибку.

Правильно:

chmod -R 755 dir

chown, chattr, chgrp

Неправильно:

chown -r user:group dir
chattr -r dir +I
chgrp -r group dir

У вышеперечисленных команд опция -r просто отсутствует. Для рекурсивной обработки директорий необходимо использовать опцию -R. Очевидно, так сделано из солидарности с «братской» командой chmod

Правильно:

chown -R user:group dir. .
chgrp -R group dir
chattr -R dir # только Linux, только для ext2/ext3

cp

Неправильно:

cp -r dir destdir

Правильно:

cp -R dir destdir

Несмотря на то, что в странице документации cp из GNU coreutils сказано, что опции -r и -R равнозначны и означают рекурсивную обработку встречающихся директорий, опция -r, в отличие от -R, не соответствует стандарту POSIX и ее указание может повлечь за собой неожиданные последствия в случае, если очередной копируемый объект является чем-то отличным от обычного файла или директории (например, символической ссылкой, fifo или сокетом). В таких случаях некоторые реализации cp просто копируют содержимое ссылки/fifo, тогда как при -R такие объекты пересоздаются заново. Раньше такое поведение было присуще GNU cp, о чем до сих пор имеется свидетельство в русском man cp. Что касается более правильных (чем Linux) систем, то, например, в BSD-версии cp опция -r работает в «режиме совместимости», т.е. не создает символическую ссылку заново, а копирует содержимое в файл с тем же именем.

ls

Неправильно:

ls -r

Ключ -r команды ls означает «обратный порядок сортировки»
Правильно:

ls -R

rm, grep

Зато в следующих случаях употребление -r/-R равнозначно:

rm -r dir
rm -R dir

а также

grep -r pattern dir
grep -R pattern dir

Что касается grep, то, во-первых, обе опции не соответствуют POSIX (но, похоже, присутствуют во всех реализациях) Во-вторых, иногда возникает путаница между опциями -i (игнорировать регистр) и -I (пропускать двоичные файлы). Но это уже тема для другого разговора :)

Прочие команды

Поскольку команд, в том или ином виде поддерживающих рекурсивную обработку каталогов, набралось довольно много, то я попробовал свести их в одну таблицу.

команда -r -R
chacl рекурсия удаление ACL только с файлов
setfacl не поддерживается рекурсия
cvs номер ревизии рекурсия
diff рекурсия не поддерживается
gzip/gunzip рекурсия не поддерживается
zip рекурсия рекурсия, начиная с текущей директории (см. man zip, там есть существенная разница в обработке -r и -R)
rsync рекурсия использование относительных путей
wget рекурсия указывает список отвергаемых шаблонов

Заключение

Как видно, в большинстве случаев для указания рекурсии используется опция -r в нижнем регистре, в противовес стандартным утилитам, для которых характерно все же -R. Поэтому совет один: в случае сомнения смотрите в man, там все написано :)

Постскриптум

По абзацу про cp видно, что русская документация в некоторых дистрибутивах (не будем показывать пальцем на Debian и Ubuntu) не соответствует реальному положению дел. В частности, несмотря на то, что в jaunty используется GNU coreutis 6.10, русский man описывает cp версии 4.1. Желающие могут самостоятельно сравнить свою версию man 1 cp с локализованной. Другими словами, русская страница документации cp в силу своей древности вводит пользователя в заблуждение, т.е. врёт. По этой причине я рекомендую сделать apt-get remove manpages-ru.

linux - 2 комментария

Несколько одновременно загруженных профилей firefox

08.06.2009

Часто возникает задача проверить функционал разрабатываемого или поддерживаемого веб-интерфейса под двумя логинами одновременно. Например, изменяя настройки доступа некоего пользователя под логином администратора, тут же проверять эти настройки в пользовательской системе. Или проверить второй ящик gmail, не выходя из основного. Однако firefox всегда открывает новые окна и табы в рамках уже запущенного процесса, что, казалось бы, делает невозможным одновременное использование двух авторизаций.

Однако выход, как всегда, есть (и не один)! В ff начиная со второй версии есть ключ --no-remote, который заставляет firefox всегда запускать новый процесс. В комбинации с ключом -ProfileManager это дает возможность создавать и использовать столько профилей, сколько заблагорассудится (лично мне вполне хватает двух дополнительных профилей, плюс еще один под клиент-банк).

Чтобы в среде gnome не вводить каждый раз командную строку, можно в ярлыке запуска firefox указать что-то вроде:

firefox %u -ProfileManager --no-remote

Тогда при каждом клике на значок firefox’а будет открываться окно с менеджером профилей (где желательно снять галку «Don’t ask at startup», чтобы выбранный профиль не загружался автоматически). Возможно, это создаст некоторые неудобства из-за того, что при каждом клике на кнопку запуска открывается новый независимый процесс, а не используется существующий, но преимущества в данном случае перевешивают недостатки.

P.S. В вышеприведенном примере %u необходим, чтобы можно было перетаскивать файлы с рабочего стола или nautilus’а на этот значок.

P.P.S. насколько я понимаю, в IE подобная возможность отсутствует как класс. Поправьте меня, если я ошибаюсь :)

linux - 4 комментария