Вы можете использовать bc
и printf
:
printf "%0.f" "$(bc <<<"$(date +"%s.%N")*1000")"
Это дает количество миллисекунд с января 1970 года. Я специально не использовал опцию scale = n
в bc
, потому что это не округляет значение, а убирает все остальное (я знаю, это педантично). bc читает из файла или со стандартного ввода. - это здесь строка , которая расширяет содержимое и предоставляет его в качестве стандартного ввода для
bc
. Он передается в printf
для округления значения.
Рассмотрите это как пример:
$ d=$(date "+%s.%N")
$ echo $d; bc <<<"scale=0; ($d*1000)/1"; printf "%0.f" "$(bc <<<"$d*1000")"
1445423229.512731661 # plain date
1445423229512 # bc with scale
1445423229513 # bc/printf
Тогда в цикле это будет выглядеть так:
command | while read line; do
d=$(printf "%0.f" "$(bc <<<"$(date +"%s.%N")*1000")")
echo "$d $line"
done >file
Tengo el mismo problema o uno similar. Abrí un hilo aquí :https://bbs.archlinux.org/viewtopic.php?pid=1784837
Mis pruebas dieron como resultado que apareció con el kernel 4.12.8 -1 -ARCH. Y en otra laptop esta misma tarjeta funciona -ahora con linux 4.15.15.
Хм. Если я что-то не упустил, похоже, что контроллер инициализируется дважды:
[ 5.195136] xhci_hcd 0000:05:00.0: xHCI Host Controller
[ 5.195145] xhci_hcd 0000:05:00.0: new USB bus registered, assigned bus number 3
[ 5.202621] xhci_hcd 0000:05:00.0: hcc params 0x014051cf hci version 0x100 quirks 0x00000090
....
[ 5.203568] xhci_hcd 0000:05:00.0: xHCI Host Controller
[ 5.203572] xhci_hcd 0000:05:00.0: new USB bus registered, assigned bus number 4
[ 5.204014] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
В Информации о продукте Renesas говорится, что, несмотря на наличие двух портов для каждого устаревшего корневого концентратора USB 3.0/USB 2.0, существует только один корневой концентратор, поэтому я не понимаю, что происходит.
Если два экземпляра xhci_hcd
пытаются управлять картой одновременно, то, конечно, это пойдет не так.
Следующее, что я должен сделать, это просмотреть исходный код xhci_hcd
и перекомпилировать его с поддержкой отладки. Для этого требуется опыт программирования, поэтому, если вы не знаете, как это сделать, в качестве альтернативы отправьте отчет об ошибке для любого средства отслеживания ошибок ядра xhci_hcd
, даже если разработчики просто скажут вам, что я глуп, а повторная инициализация — это нормально.
Редактировать
При просмотре отладочных сообщений это выглядит очень странно:
[ 2.423207] xhci_hcd 0000:05:00.0: Finished xhci_run for USB2 roothub
[ 2.423420] xhci_hcd 0000:05:00.0: Endpoint 0x81 ep reset callback called
[ 2.423547] xhci_hcd 0000:05:00.0: set port power, actual port 0 status = 0x2a0
[ 2.423563] xhci_hcd 0000:05:00.0: set port power, actual port 1 status = 0x2a0
[ 2.423613] xhci_hcd 0000:05:00.0: xHCI Host Controller
[ 2.423616] xhci_hcd 0000:05:00.0: new USB bus registered, assigned bus number 2
[ 2.423621] xhci_hcd 0000:05:00.0: // Turn on HC, cmd = 0x5.
[ 2.426468] xhci_hcd 0000:05:00.0: Finished xhci_run for USB3 roothub
[ 2.426630] xhci_hcd 0000:05:00.0: Endpoint 0x81 ep reset callback called
[ 2.426798] xhci_hcd 0000:05:00.0: set port power, actual port 0 status = 0x2a0
[ 2.426819] xhci_hcd 0000:05:00.0: set port power, actual port 1 status = 0x2a0
[ 2.426893] xhci_hcd 0000:05:00.0: remove, state 1
[ 2.427674] xhci_hcd 0000:05:00.0: USB bus 2 deregistered
[ 2.427731] xhci_hcd 0000:05:00.0: remove, state 1
Итак, после инициализации всего и на USB 2.0, и на корневом концентраторе USB 3.0 вызывается сброс. Они удаляются, а затем драйвер снова пытается инициализировать все это (, что является второй инициализацией, которую я видел ). Только на этот раз сильно не получается.
В исходном коде ядра функция xhci_endpoint_reset
имеет комментарии вроде «Возможно, нам потребуется реализовать config ep cmd в xhci 4.8.1» и «Пока просто напечатайте отладку, чтобы следить за ситуацией».
Так что это определенно дело разработчиков ядра. Обязательно дополните отчет об ошибке выводом отладки.
С новейшим текущим ядром 5.0.10-arch1-1-ARCH
карта работает. Но в моей системе это работает только тогда, когда я вставляю устройство перед загрузкой.
Другие решения:
В приведенной выше ссылке Ксавьер говорит здесь , что он нашел обходной путь, добавив параметр ядра -pci=nomsi
в параметры загрузки. Я не исследовал это дальше.