Linux Mint - Не удается заставить работать сканер Canon MF4370dn

С dateutils's datediff (извините, не GNU), (ранее ddiff, dateutils.ddiff в Debian):

$ dateutils.ddiff -f '%Y years, %m months, %d days, %H:%0M:%0S' \
    '2012-01-23 15:23:01' '2017-06-01 09:24:00'
5 years, 4 months, 8 days, 18:00:59

(даты берутся как UTC, добавьте что-то вроде --from-zone=Europe/London, чтобы даты брались как местное время в соответствующем часовом поясе. --from-zone= localtime может работать для часового пояса по умолчанию в системе; --from-zone="${TZ#:}" будет работать до тех пор, пока $TZ указывает путь файла часового пояса IANA (например, TZ=:Europe/London, а не TZ=GMT0BST,M3.5.0/1:00:00,M10.5.0/2:00:00 Спецификация TZ в стиле POSIX)).

С ast-open date , так что все еще не с инструментами GNU, извините (если вы используете ksh93 в качестве оболочки, эта date может быть доступна как встроенный) вы можете использовать date -E, чтобы получить разницу между двумя датами в формате, который дает 2 числа с единицами измерения:

$ date -E 1970-01-01 2017-06-01
47Y04M
$ date -E 2017-01-01 2017-06-01
4M29d
$ date -E 12:12:01 23:01:43
10h49m

Обратите внимание, что все, что выше час, неоднозначно , так как дни имеют различное количество часов в регионах с летним временем (23, 24 или 25), а месяцы и годы имеют различное количество дней, поэтому может не иметь особого смысла иметь большую точность, чем эти две единицы выше.

Например, между 2015-01-01 00:00:00 и 2016-01-01 00:00:00 или между 2016-01-01 00:00:00 и 2017-01- есть ровно один год. 01 00:00:00, но это не та же продолжительность (365*24 часа в одном случае, 366*24 часа в другом)

Между 2017-03-24 12:00:00 и 2017 ровно один день -03-25 12:00:00 или между 2017-03-25 12:00:00 и 2017-03-26 12:00:00, но если это местное время в европейских странах (которое перешло на летнее время в 2017 г. -03-26), что один день равен 24 часам в одном случае и 23 часам в другом.

Другими словами, продолжительность, в которой упоминаются годы, месяцы, недели или дни, имеет смысл только тогда, когда связана с одной из границ, к которым она предназначена (и часовым поясом). Таким образом, вы не можете преобразовать количество секунд в такую ​​продолжительность, не зная, к какому времени (с или до) оно должно применяться (если только вы не хотите использовать приблизительные определения дня (24 часа), месяца (30 * 24 часа) или год (365*24 часа)).

В какой-то степени даже продолжительность в секундах неоднозначна. Для упрощения секунды в эпоху Unix определяются как 86400-я часть данных земных суток1. Эти секунды становятся все длиннее и длиннее по мере того, как Земля вращается вниз.

Итак, что-то вроде (с GNU date):

d1='2016-01-01 00:00:00' d2='2017-01-01 00:00:00'
eval "$(date -d "@$(($(date -d "$d2" +%s) - $(date -d "$d1" +%s)))" +'
  delta="$((%-Y - 1970)) years, $((%-m - 1)) months, $((%-d - 1)) days, %T"')"
echo "$delta"

Или в fish:

date -d@(expr (date -d $d2 +%s) - (date -d $d1 +%s)) +'%Y %-m %-d %T' | \
  awk '{printf "%s years, %s months, %s days, %s\n", $1-1970, $2-1, $3-1, $4, $5}'

Как правило, это не даст вам что-то правильное, поскольку дельта времени применяется к 1970 вместо фактической даты начала 2016.

Например, выше это дает мне (в часовом поясе Европы/Лондона):

1 years, 0 months, 1 days, 01:00:00

вместо

1 years, 0 months, 0 days, 00:00:00

(это все еще может быть достаточно хорошим приближением для вас).


1 Технически, в то время как день длится 86400 секунд Unix, подключенные к сети системы обычно синхронизируют свои часы с атомными часами, используя секунды SI. Когда атомные часы показывают 12:00:00.00, эти системы Unix также показывают 12:00:00.00. Исключение составляет только введение високосных секунд, когда либо есть одна секунда Unix, которая длится 2 секунды, либо несколько секунд, которые длятся немного дольше, чтобы размазать эту дополнительную секунду на более длительный период.

Таким образом, можно узнать точную продолжительность (в атомных секундах) между двумя отметками времени Unix (выданными системами, синхронизированными с атомными часами): получить разницу времени эпохи Unix между двумя отметками времени и добавить количество високосных секунд, которые были добавлены между ними.

datediff также имеет -f %rS для получения количества реальных секунд между двумя датами:

$ dateutils.ddiff -f %S '1990-01-01 00:00:00' '2010-01-01 00:00:00'
631152000
$ dateutils.ddiff -f %rS '1990-01-01 00:00:00' '2010-01-01 00:00:00'
631152009

Разница заключается в 9 дополнительных секундах, которые были добавлены между 1990 и 2010 годами.

Теперь это количество реальных секунд не поможет вам рассчитать количество дней, поскольку дни не имеют постоянного числа реальные секунды. Между этими двумя датами ровно 20 лет, и эти 9 високосных секунд скорее мешают получить это значение. Также обратите внимание, что ddiff %rS работает, только если не сочетается с другими спецификаторами формата.Кроме того, будущие секунды координации не известны заранее, но также может быть недоступна информация о последних секундах координации. Например, моя система не знает о тех, что после 2012-07-01.

0
02.02.2017, 05:24
2 ответа

На странице технических характеристик Canon MF4370dn указано:

Совместимость с ОС Windows® 7, Windows Server® 2008, Windows Vista®, Windows Server 2003, Windows XP/2000, Mac® OS X 10.3.9 и выше, Linux (только печать)

2
28.01.2020, 02:19

Этот сканер без дополнительной настройки работает через USB с xsane 0.999 на новой версии 18.1. Я перехожу с openSuse 13.1, где это тоже работало, только что попробовал на 18.1.

Я не помню, чтобы сканирование сети работало.

И я уверен, что это будет работать на виртуальной машине (, хотя и не пробовал ).

ХТХ

2
28.01.2020, 02:19

Теги

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