Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (18)

Лучшие ответы пользователя

Все ответы (14)
  • FIFO-пайпы и Unix Sockets?

    @shuraosipov
    pipe - это механизм коммуникации между процессами. pipe, как уже было сказано выше, является однонаправленным потоком данных, все данные, записанные процессом в пайп перенаправляются ядром другому процессу для чтения.
    pipe это объект VFS (Virtual File System), поэтому pipe не имеет соответсвутющего образа на диске, грубо говоря он хранится в памяти (pipefs).
    Главным недостатком pipe является тот факт, что невозможно открыть уже существующий pipe. Поэтому два произвольных процесса не могут использовать одновременно один и тот же pipe, за исключением случаев если pipe был создан общим родительским процессом.

    fifo (named pipe) - это специальный файл, очень похожий на pipe, за исключением того, что fifo inode содержится в файловой системе, плюс fifo это двунаправленный механизм обмена данными между двумя и более процессами, поэтому доступ к fifo на чтение и запись может получить любой процесс. Грубо говоря процесс общения с использованием fifo выглядит следующим образом - "сервер" создает fifo файл, который успользуется "клиентами" для выполнения запросов. Каждый "клиент", прежде чем установить соединение с "сервером", создает другой fifo файл, в который "сервер" может записать ответ клиенту, при это указывая имя fifo в изначальном запросе.

    socket (unix socket) - это специальный файл, используемый для коммуникации между двумя и более различными процессами, выполняющимися на одной машине. Процессы обращаются к socket по его inode.

    Итак в чем же отличие fifo (named pipe) от unix socket:
    1. "Сервер" (или принимающий процесс) в fifo не умеет различать "Клиентов".
    "Клиенты", использующие unix socket имеют отдельные соединения с сервером. В fifo различные "клиенты" могут писать в pipe, но "Сервер" не может различить "Клиентов" друг от друга.
    2. При создании fifo и unix socket используются различные системные вызовы.
    Unix socket создается системным вызовом "socket()". fifo создается "mkfifo()"
    3. Для подключения к fifo и unix используюся различные системные вызовы.

    Сравнение по производительности - fifo vs unix socket:
    1. unix socket обеспечивает лучшую производительнось при передаче большого объема данных
    2. для малых объемов unix socket уступает в производительности fifo. это вызвано накладными раскодами, связанными с созданием сокета, инициализацией и подключением к нему.
    Ответ написан
    Комментировать
  • Как вывести список процессов без использования команды ps?

    @shuraosipov
    find /proc -maxdepth 1 -regex ".*[0-9]"

    Вернет pid всех процессов:
    /proc/1
    /proc/2
    /proc/39
    /proc/40
    /proc/41
    /proc/211


    Выдержка из man 5 proc
    /proc/[pid]
    There is a numerical subdirectory for each running process; the subdirectory is named by the process ID. Each such subdirectory contains the following pseudo-files and directories.
    Ответ написан
    3 комментария
  • Администрирование Linux - актуально ли?

    @shuraosipov
    Если есть желание учиться и развиваться технически я бы посоветовал следующее:

    1. Учи английски - необязательно говорить, но читать ты просто обязан. огромное количество ресурсов (книги, курсы и т.п.) гораздо проще читаются и воспринимаются от первоисточника. Также не забывай про огромное комьюнити. Не лишай себя возможности получить знания, только за счет того, что ты не знаешь язык.
    2. Учи матчасть. Так как тема топика удаленная работа, то учи скриптовые языки - bash, perl, python, ruby.
    3. Изучай основы: сети, операционные системы, протоколы и т.д. В конечном счете все сводится к основам.
    4. Выбери себе "любимую ОС" - debian, centos... whatever. Изучи ее. Подготовься к сертификации (rhsca, rhce...). Сама по себе сертификация ничего не значит, но в ходе подготовки ты выучишь базовые понятия, как и что работает, будешь иметь общее представление о системе.
    5. Практикуйся. Elance и тому подобные ресурсы помогут найти примеры конкретных задач.
    6. Смотри курсы (Яндекс КИТ, eDX, youtube каналы).
    7. Замечательный Technical Development Guide от Google - www.google.ru/about/careers/students/guide-to-tech...
    8. Так как времени всегда не хватает и приходится работать в цейтноте обрати внимание на time management и GTD техники. Мне очень нравится "Time Management для системных администраторов" Лимончелли.

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

    Успехов.
    Ответ написан
    Комментировать
  • Как назначить пароль юзеру без моего участия?

    @shuraosipov
    Можно так еще:
    echo password123 | passwd --stdin username
    Ответ написан
    Комментировать
  • Можно ли глобально в настройках Apache редиректить по User-agent?

    @shuraosipov
    httpd.apache.org/docs/2.0/misc/rewriteguide.html
    RewriteCond %{HTTP_USER_AGENT}  ^Mozilla/3.*
    RewriteRule ^foo\.html$         foo.NS.html          [L]
    
    RewriteCond %{HTTP_USER_AGENT}  ^Lynx/.*         [OR]
    RewriteCond %{HTTP_USER_AGENT}  ^Mozilla/[12].*
    RewriteRule ^foo\.html$         foo.20.html          [L]
    
    RewriteRule ^foo\.html$         foo.32.html          [L]
    Ответ написан
    2 комментария