Где файл, используемый файлами (1) и libmagic для определения типов mime?

Основная ошибка Ubuntu, отслеживающая эту проблему, по крайней мере для сетевого модуля ядра r8169, выглядит следующим образом:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/ 1752772

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

Я запускаю новую установку Xubuntu 18.04, и мой интерфейс ethernet использует модуль ядра r8169, который я обнаружил:

sudo lshw -C network

Там будет две группы информации, начиная с description: Ethernet interface , а другой - description: Wireless interface. В разделе description: Ethernet interface найдите строку, начинающуюся с configuration:, например:

configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl_nic/rtl8105e-1.fw ip=192.168.100.6 latency=0 link=yes multicast=yes port=MII speed=100Mbit/s

Драйвер будет здесь: driver=.

systemd запускает все исполняемые скрипты под / lib / systemd / system-sleep до и после приостановки, передавая 2 параметра, r8169 - это состояние (pre, перед приостановкой или post после приостановки), а $ 2 - действие (suspend, hibernate, hybrid-state или suspend-then-hibernate). Это подтверждено на странице руководства для systemd-suspend.service.

Нам нужно перезагрузить модуль для интерфейса ethernet при возобновлении с suspend, $ 2 приостановить. Поэтому я создал и выполнил исполняемый скрипт / lib / systemd / system-sleep / r8169-refresh:

#!/bin/bash

PROGNAME=$(basename "$0")
state=$1
action=$2

function log {
    logger -i -t "$PROGNAME" "$*"
}

log "Running $action $state"

if [[ $state == post ]]; then
    modprobe -r r8169 \
    && log "Removed r8169" \
    && modprobe -i r8169 \
    && log "Inserted r8169"
fi

Сообщения, записанные из скрипта, перейдут на / lib / systemd / system-sleep , помеченный именем скрипта и его PID. Таким образом, вы можете проверить, перезагрузил ли сценарий модуль ядра:

grep r8169-refresh /var/log/syslog

4
задан 20 February 2012 в 03:26

1 ответ

Ты был почти там; он находится в /usr/share/file/magic.mgc:

$ file /usr/share/file/magic.mgc
/usr/share/file/magic.mgc: magic binary file for file(1) cmd (version 7) (little endian)

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

$ strace file /
<snip lots of output>
open("/usr/share/misc/magic.mgc", O_RDONLY) = 3
<snip a bit more output>

/usr/share/misc/magic.mgc - это еще одна символьная ссылка. Я думаю, что manpage устарела.

5
ответ дан 25 May 2018 в 14:07
  • 1
    Благодаря! Еще немного поиска с моей стороны также показал пример того типа, который я искал: ( garykessler.net/library/magic.html ). И локальные магические данные, по-видимому, должны идти либо в / etc / магия или /etc/magic.mime – K. P. MacGregor 19 February 2012 в 23:57
  • 2
    +1 для использования strace, чтобы доказать, что на самом деле происходит – Chris Magnuson 31 January 2015 в 22:28

Другие вопросы по тегам:

Похожие вопросы: