Ответы пользователя по тегу Linux
  • Как в Си вывести в консоль без записи в буфер?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если я использую printf("asd"), то весь текст в кавычках будет выведен на экран и записан в лог файл. Вот такая команда: './a.out > file.log'.

    Здесь несколько несуразностей: 1) printf в ./a.out > file.log не выведет ничего на экран, всё будет перенаправлено в файл. но 2) сам printf об этом ничего не знает. Он выводит данные в поток стандартного вывода, куда они перенаправляются потом -- не его дело. 3) оператор > перенаправляющий вывод -- это инструкция командной оболочке как запускать программу, к самой программе отношения не имеет.

    Есть ли какая другая команда вывода, которая будет текст выводить только в терминал, без записи в файл?

    Есть! ./a.out, без каких-либо изменений в коде.
    Ответ написан
    4 комментария
  • По какой причине возникает ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    По какой причине возникает ошибка?
    неопределённая ссылка на символ «dlclose@@GLIBC_2.2.5»

    -ldl отсутствует в команде линковки или указан слишком рано?
    Ответ написан
  • Как rsync сжимает при передаче данных?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не будет ли он на сервере создавать какие то архивы?

    Нет. rsync -z сжимает на лету.
    Из man rsync:
    --compress, -z
                  With this option, rsync compresses the file data as it is
                  sent to the destination machine, which reduces the amount
                  of data being transmitted -- something that is useful over
                  a slow connection.
    Ответ написан
    Комментировать
  • Есть ли хорошие книги для глубокого изучения Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    понять работу ядра Линукс

    Порекламирую в очередной раз свой список: https://qna.habr.com/answer?answer_id=392065#answe...
    Ответ написан
    1 комментарий
  • Как указать в исполняемом файле абсолютный путь до него самого?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Есть ли возможность из файла узнать его (файла) местоположение?

    readlink -f "$0" для исполняемого скрипта или readlink -f "$BASH_SOURCE" для скрипта загружаемого через source.
    Ответ написан
    2 комментария
  • Какие есть специфичные функции для glibc?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    с чем могут возникнуть проблемы

    Можно начать отсюда.
    Из моего опыта, самое часто всплывающее отличие glibc от других libc -- поддержка версионирования символов.
    Ответ написан
  • Точка останова, Ptrace. Почему крашится программа после снятия точки останова?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В чем проблема? Что я делаю не так?

    Я подозреваю, что не нужно делать regs.rip -= 1 ;, потому что процесс не может "выполнить" точку останова.
    Ну и для надёжности, я бы убедился, что в памяти куда пишется 0xcc действительно до этого было 0x55.
    Ответ написан
  • Как иизменить параметр tdp_mmu?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как иизменить параметр tdp_mmu?

    стандартный способ
    echo N | sudo tee /sys/module/kvm/parameters/tdp_mmu
    не помогает?

    root@Line-host:~# echo "options kvm tdp_mmu=N" >/etc/modprobe.d/kvm-disable-tdp-mmu.conf
    root@Line-host:~# cat /sys/module/kvm/parameters/tdp_mmu
    Y

    Ну а чего ты ожидал, параметры из modprobe.d применяются при загрузке модуля. Можно сделать rmmod kvm ; modprobe kvm чтобы убедиться, что параметр применяется.
    Ответ написан
  • Linux NetworkManager аварийная остановка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Любая команда start/stop/restart NetworkManager выдает одно и тоже

    Напомнило анекдот
    Доктоp, я кажется умиpаю! Куда ни ткну пальцем-везде такая боль! -Э-э, дpужочек, так у вас же палец сломан!

    sudo: resolve_conf.c:571: update_from_conf: Assertion 'resolve_conf_matches (resp, conf)' failed

    Это сообщение о том, что sudo сломался. Вспоминай что менял и возвращай обратно. Cудя по тексту ошибка может быть вызвана содержимым /etc/resolv.conf.

    Или воспользуйся su, например.
    Ответ написан
  • Как написать Netflow сенсор с нуля?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как мне модифицировать мою программу, чтобы она могла определять потоки и корректно отправлять их коллектору?

    Для этого тебе надо понять, что такое "потоки" о которых ты говоришь, где находится информация о принадлежности пакета потоку и как до неё добираться.

    Если ограничиться определением по ссылке, то тебе надо будет разбирать сырые пакеты до сетевого уровня, откидывать не-IP, из IP извлекать IP-протокол, адрес источника, адрес назначения и тип сервиса, для протоколов TCP и UDP дополнительно извлекать порт источника и порт назначения. Всё это довольно просто сделать самому вооружившись RFC по упомянутым протоколам. Также надо будет понять, что делать с фрагментированными IP-пакетами.
    Ответ написан
    Комментировать
  • Что делать если компилятор nasm работает неправильно?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    выдает непонятную фигню

    Ну в программе нет проверки ввода, поэтому если вводить непонятную фигню, то и выводить она будет непонятную фигню. А если вводить цифры, так чтобы сумма не превышала 9, то приведённая программа прекрасно работает.
    Это, правда не значит, что в этой программе нет ошибок. Я вижу как минимум одну:
    res resb 1 
    …
    mov [res], eax

    классическое переполнение буфера. Её наличие, правда, на результат повлиять не может.
    Ответ написан
    Комментировать
  • Почему mono в ubuntu не находит .so?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    почему-то в ubuntu она отказывается находить его, хотя он есть в папке с программой.

    добавь путь до каталога с этим файлом .so в переменную окружения LD_LIBRARY_PATH перед запуском программы.
    Ответ написан
  • Зачем производится закрытие файлового дескриптора?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    зачем закрывается файловый дескриптор (exec 2<&-) перед тем как связать его с лог файлом?

    Я не вижу в этом никакого смысла, потому что системный вызов dup2 (которым вополняется связывание дескриптора логфайла с дескриптором #2) точно так же закрывает дескриптор в который происходит дупликация.
    Ответ написан
  • Могу ли я создать ссылку с параметрами на файл?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Чтобы каждый раз не задавать параметры дэймону, ищу как зафиксировать.

    aspirantes, написать скрипт в котором проставить нужные параметры. Например:
    $ cat > /home/222 <<EOF
    #!/bin/sh
    exec /home/111 -param1 -param2 "$@"
    EOF
    $ chmod +x /home/222
    Ответ написан
    Комментировать
  • Форматирование смонтированного диска?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что будет с диском 1, если его смонтировать в папку диска 2 и затем отформатировать диск 2?

    Нельзя стандартными средствами "отформатировать" "диск" который примонтирован, а "диск 2" должен быть примонтирован, чтобы в его "папку" можно было смонтировать "диск 1".
    Если наплевать на условности и зафорсить форматирование на уровне блочного устройства, то с примонтированной файловой системой на диске 2 всё будет плохо, а диску 1 ничего не будет.
    Ответ написан
    Комментировать
  • Как задать значение последней переменной?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Имеется код вида
    int64_t a = b/c
    b и c какие-то произвольные числа
    требуется записать 0 в переменную a, если произошел SIGFPE.
    Проверять значения b и c не вариант, нужно как-то задавать значение для a в обработчике сигнала.

    Задача в такой постановке выглядит странной, если это не просто учебная задача на обработку сигналов.
    Если это учебная задача -- то конечно, и ассемблерная вставка тут может помочь, но это не вопрос для тостера.
    Если это практическая задача, то решить её можно следующими способами:

    - наиболее простой и переносимый, но не самый быстрый -- таки проверить значения b и c перед вычислениями.

    - следующий по простоте -- использовать setjmp перед началом блока вычислений который может закончиться сигналом, в обработчике сигнала вызвать longjmp, после возврата присвоить результатам нужные значения.

    - следующий вариант -- нифига не простой и не переносимый -- устанавливать обработчик сигнала с помощью sigaction, заказывать доставку SA_SIGINFO и анализировать ucontext (третий аргумент) в обработчике сигнала. Сложность заключается в том, что связь между тем, что будет записано в ucontext и исходным кодом на C ни разу не очевидна. Т.е. можно извлечь из памяти по адресу info->si_addr инструкцию вызвавшую сбой, проанализировать её длину и куда она записывает результат, записать в результат 0 и передвинуть адрес возврата. Но это выглядит как неоправданное количество мороки.
    Ответ написан
  • Как вылечить ошибку "error communicating with TPM chip"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Нужно лечить или просто забить?

    Просто забить. Если ты не знаешь, что такое TPM, а система успешно грузится -- он тебе не нужен.
    Ответ написан
    Комментировать
  • Ошибка unhandled dwarf2 в Valgrind как можно исправить и с чем связана?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    при использовании Valgrind выпадает ошибка:

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

    Опытным путём пришёл к выводу что проблемма связана с ошибкой в самом make.

    м... а почему valgrind ругается вот на это:
    ==6410== Valgrind:   "/media/mid/Main_file_m2/Road/rank 0/libftTester/a.out"
    Ответ написан
  • Почему systemd-journald ест много оперативки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Из 2 гигов оперативки занято 500 мб, причём раньше свободно было больше.

    Память должна быть занятой. Если она свободна -- значит она никому не нужна.

    Из-за чего systemd-journald может есть 10% от оперативки? Куда смотреть?

    Смотреть в колонку VIRT -- приложение выделило себе 266М виртуальной памяти. То, что оно использовало 202М физической памяти для этого -- это просто прекрасно.

    Как только в системе появятся другие пользователи памяти -- будь спокоен, физическая память будет отобрана у приложений которые её не используют и передана приложениям которым она нужна.
    Ответ написан
    1 комментарий
  • Почему не берутся пробелы в bash переменной?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    файл "Название какого-то файла.mkv" $WhatFile возвращает в виде "Название" , отрезая всё, что есть после первого пробела

    для этого вместо for WhatFile in $(...) лучше использовать конструкцию find ... -print0 | xargs -0 .... Т.е.
    find $Downloads -regex ".*\.\(mkv\|m4v\|mp4\|ts\|avi\)" -and -mmin +30 -print0 | sort -zr | xargs -0 -I\{} bash -c '
    WhatFile=\{}
    // извлекаем название найденного файла
    WhatFileName=$(basename "$WhatFile"  )
    echo "$WhatFileName"
    // извлекаем папку найденного файла
    WhatFolder=$(dirname "$WhatFile"  )
    echo "$WhatFolder"
    // извлекаем папку найденного файла
    #echo WhatFolder $WhatFolder
    #переименование
    #файла
      if [ -n "$WhatFileName" ]; then
      WhatRenameFile=$( echo "$WhatFileName" |
      sed -f "$Renamer" )
        if [ "$WhatFileName" != "$WhatRenameFile" ]; then
          echo "переименовываем файл из "$WhatFileName" в "$WhatRenameFile""
        mv -fv "$WhatFile" "$WhatFolder"/"$WhatRenameFile"
      echo "пауза 2 секунды"
        sleep 2s
      else 
        echo "Файл соответствует правилам "$WhatFileName""
        fi
      #echo $WhatRenameFile
      fi
    '
    Ответ написан