Ответы пользователя по тегу Linux
  • Как "распаковать" параметры из переменной в bash-скрипте?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Так происходит, потому что подстановки в bash нерекурсивные. Т.е. если результат подстановки создаёт новую конструкцию, с которой произошла бы подстановка, будь она записана в исходном тексте скрипта, bash не будет её интерпретировать. Это ограничение можно обойти с помощью функции eval, которая интерпретирует свой параметр по всем правилам bash. Т.е. пример из вопроса можно записать так:
    du -sh ~ --exclude=$(eval echo $HOME/{$excludes})
    Оборотная сторона такого решения -- $excludes становится частью скрипта, и если он контролируется извне, туда легко можно всунуть rm -rf /* как побочный эффект.
    Ответ написан
    1 комментарий
  • Как понять, почему не работает ни один браузер в linux?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    можно попробовать запустить firefox под strace а потом внимательно почитать лог начиная с конца в поисках ошибок доступа. Типа того: strace -fvo trace firefox
    Ответ написан
    Комментировать
  • Qemu как правильно запускать vm?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Как запустить vm в молчаливом режиме, без открытия ее консоли?

    -nographic -serial none -monitor none
    есть для mipsel какие либо акселераторы, типа kvm?

    Есть, но надо понимать, что kvm требует, чтобы гостевая архитектура совпадала с хостовой, т.е. qemu для этого нужно запускать на mips-хосте.
    Ответ написан
  • Как посмотреть последние введенные команды в терминале с датой и временем их ввода?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    она не показывает день и время когда была введена команда

    man bash -> искать HISTTIMEFORMAT -> … -> PROFIT
    Например, можно добавить export HISTTIMEFORMAT='%F %T ' в ~/.bashrc
    Но, разумеется, дату/время уже залогированным командам это не добавит.
    Ответ написан
    Комментировать
  • Зачем использовать системный вызов poll для ожидания события от драйвера?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Почему бы сразу не блокировать поток вызовом read и не ждать пока данные будут доступны


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

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


    Если системный вызов втыкается в ожидание в драйвере, то драйвер сам решает, прерываемо это ожидание или нет. Может быть драйвер реализует операцию poll с возможностью прерывания, а read -- без.
    Ответ написан
    Комментировать
  • Синхронизация ресурсов в драйвере при системных вызовах?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    В момент, когда функция read блокирована (по факту системный вызов (syscall) не вернул результат в пользовательское пространство), то при вызове другого системного вызова того же драйвера, например, write, необходимо ли в самом драйвере синхронизировать общие данные, которые используются и в read и в write?

    Да.

    Или выполнение системных вызовов как-то гарантировано регламентировано и прерывания отключены

    Нет, вообще никак не регламентировано.
    Ответ написан
  • Как авторизоваться в Linux Kodachi?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Обобщённый способ решения подобных проблем -- загрузка ядра с параметрами rw init=/bin/sh, выполнение в появившейся оболочке команды passwd с желаемыми параметрами (например, passwd -d root) и продолжение загрузки командой exec /sbin/init.
    Ответ написан
  • При компиляции, библиотека находится, при запуске объекта, библиотека не находится, в чём может быть причина?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    При компиляции, библиотека находится, при запуске объекта, библиотека не находится, в чём может быть причина?

    В том, что динамически загружаемые библиотеки ищутся по стандартным путям и по путям из LD_LIBRARY_PATH, а каким образом всё было слинковано -- не имеет значения?
    Ответ написан
  • Бесконечный запрос ввода при вызове open()?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    понял, что проблема возникает при вызове open()

    Правильно понял. Цитата из man 7 fifo:
    Normally, opening the FIFO blocks until the other end is opened also.

    Чтобы вызов open вернулся и программа продолжила выполняться нужно открыть второй конец fifo на чтение.
    Ответ написан
    1 комментарий
  • Почему зависает установка elementary OS на 35%?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    в чем проблема, и как ее решить

    Установка зависает даже в виртуальной машине если вести её на русском. Что как бы намекает на качество тестирования. На EN-US -- работает. Решение -- использовать EN-US в качестве языка во время установки.
    Ответ написан
    4 комментария
  • Как исправить ошибку при сборке DAHDI?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    При установке на CentOS 8, ядро 5.13.13 возникает следующая ошибка:
    /usr/src/dahdi-linux-complete-3.1.0+3.1.0/linux/drivers/dahdi/opvxa24xx/callerid.c:1235:40: ошибка: в передаче аргумента 4 «proc_create_data»: несовместимый тип указателя [-Werror=incompatible-pointer-types]
         proc_create_data(name, 0444, base, &proc_param_fops, data);
                                            ^~~~~~~~~~~~~~~~
    /usr/src/dahdi-linux-complete-3.1.0+3.1.0/linux/drivers/dahdi/opvxa24xx/callerid.c:1321:40: ошибка: в передаче аргумента 4 «proc_create_data»: несовместимый тип указателя [-Werror=incompatible-pointer-types]
         proc_create_data(name, 0644, base, &proc_param_off_fops, data);
                                            ^~~~~~~~~~~~~~~~~~~~


    Ага, в ядре успели переделать интерфейс proc. Проще всего закомментировать вызовы proc_create_data в строках linux/drivers/dahdi/opvxa24xx/callerid.c:1235 и linux/drivers/dahdi/opvxa24xx/callerid.c:1321
    Ответ написан
  • Линковщик не находит необходимую функцию в библиотеке, почему?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    undefined reference to `boost::python::exec(char const*, boost::python::api::object, boost::python::api::object)'


    Сигнатура метода не сходится:
    $ c++filt 
    _ZN5boost6python4execENS0_3strENS0_3api6objectES3_
    boost::python::exec(boost::python::str, boost::python::api::object, boost::python::api::object)

    Не сконструировался boost::python::str из с-строчки.
    Ответ написан
  • Как решить проблемы с монтированием devtmpfs?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    система сама туда монтирует devtmpfs и, соответственно, прибивает мои художества.

    Так может отключить в конфиге ядра параметр DEVTMPFS_MOUNT ?
    Ответ написан
    Комментировать
  • Как распаковать архив(без сжатия) из нескольких частей, если нет места на HDD на Linux?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Как его можно разархивировать?

    Я бы сделал как-нибудь так:
    for f in backup.* ; do cat $f ; rm -f $f ; done | tar -x
    Ответ написан
    Комментировать
  • Почему ядро паникует?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Почему ядро паникует

    непосредственная причина: сдох init (attempted to kill init в первой строчке), из-за сигнала (do_signal в стеке вызовов).

    Упавший код:
    $ echo 'Code: 0f 7f 44 17 f0 f3 0f 7f 07 c3 48 83 fa 40 77 16 f3 0f 7f 07 f3 0f 7f 47 10 f3 0f 7f 44 17 f0 f3 0f 7f 44 17 e0 c3 48 8d 4f 40 <f3> 0f 7f 07 48 83 e1 c0 f3 0f 7f 44 17 f0 f3 0f 7f 47 10 f3 0f 7f' | scripts/decodecode
    Code: 0f 7f 44 17 f0 f3 0f 7f 07 c3 48 83 fa 40 77 16 f3 0f 7f 07 f3 0f 7f 47 10 f3 0f 7f 44 17 f0 f3 0f 7f 44 17 e0 c3 48 8d 4f 40 <f3> 0f 7f 07 48 83 e1 c0 f3 0f 7f 44 17 f0 f3 0f 7f 47 10 f3 0f 7f
    All code
    ========
       0:   0f 7f 44 17 f0          movq   %mm0,-0x10(%rdi,%rdx,1)
       5:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
       9:   c3                      retq   
       a:   48 83 fa 40             cmp    $0x40,%rdx
       e:   77 16                   ja     0x26
      10:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
      14:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      19:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
      1f:   f3 0f 7f 44 17 e0       movdqu %xmm0,-0x20(%rdi,%rdx,1)
      25:   c3                      retq   
      26:   48 8d 4f 40             lea    0x40(%rdi),%rcx
      2a:*  f3 0f 7f 07             movdqu %xmm0,(%rdi)             <-- trapping instruction
      2e:   48 83 e1 c0             and    $0xffffffffffffffc0,%rcx
      32:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
      38:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      3d:   f3                      repz
      3e:   0f                      .byte 0xf
      3f:   7f                      .byte 0x7f
    
    Code starting with the faulting instruction
    ===========================================
       0:   f3 0f 7f 07             movdqu %xmm0,(%rdi)
       4:   48 83 e1 c0             and    $0xffffffffffffffc0,%rcx
       8:   f3 0f 7f 44 17 f0       movdqu %xmm0,-0x10(%rdi,%rdx,1)
       e:   f3 0f 7f 47 10          movdqu %xmm0,0x10(%rdi)
      13:   f3                      repz
      14:   0f                      .byte 0xf
      15:   7f                      .byte 0x7f

    судя по всему это какая-то часть memcpy или функции типа того.
    Возможные причины, в порядке, кажущемся мне наиболее вероятным: баг в init либо дырявая память.
    Ответ написан
    Комментировать
  • Умеет ли Linux выключаться от разрядки батареи без вреда для системы?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Linux как-то закрывает сам программы (и завершает работу ОС) "правильно" перед тем, как полностью выключиться?

    Ядро само по себе так не делает. Но есть юзерспейс, который делает. Как именно делает -- как настроишь.
    Например
    KDE умеет так:
    604e1929ab70a442092411.png
    т.е. при разряде батарейки он может не только штатно выключиться, но и выполнить suspend или hibernate.
    Ответ написан
    4 комментария
  • Не удаётся найти “libc.so.6” при запуске Python скрипта в Termux на Android?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    выводится ошибка dlopen failed library libc.so.6 not found. Как исправить данную ошибку?

    наиболее правильным решением было бы использовать android NDK для сборки всех бинарников (типа _pytransform.os) которые будут запускаться на устройстве. Версия бинарников которая у тебя есть сейчас похоже собрана под традиционный линукс с glibc.
    Ответ написан
    Комментировать
  • Можно ли запустить bash-скрипт в текущем процессе?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Однако я не могу получить доступ к любой из инициированных скриптом переменных в текущем процессе. Как я понимаю, это происходит потому, что скрипт выполняется отдельным процессом, а возможности экспортировать переменную на уровень выше нет.

    Непонятно, каково отношение между "скриптом" и "текущим процессом". Кто кого запускает?

    Если скрипт запускает процесс, то переменные окружения надо экспортировать, как сказано здесь. Если процесс запускает скрипт как другой процесс, то никакие изменения в переменных окружения сделанные скриптом в процессе видны не будут.
    Ответ написан
    Комментировать
  • Что нужно модифицировать в Linux системе что бы время модификации\получения доступа к файлу заменялось каждый раз на случайное, вместо реального?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Что нужно изменить в системе что-бы добиться такого поведения?

    Проще всего поменять вот эту функцию в ядре.
    Ответ написан
    1 комментарий
  • Кросс-компиляция под arm и исходники ядра?

    jcmvbkbc
    @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Или процесс создания linux headers настолько специфичен?

    Нет. userspace интерфейс ядра изо всех сил старается сохранять обратную совместимость. Т.е. если построить тулчейн с использованием хедеров какой-то версии ядра, собранные им бинарники будут работать (а если не будут, то есть основания зарепортить это как баг ядра) и на более новых ядрах.
    Ответ написан
    Комментировать