Как заставить dd перестать работать, если он недопустимое значение пропуска указан?

  • Я думаю, что необходимо узнать, что процесс использовал партию памяти. Возможно, программа имеет ошибку утечки памяти. Необходимо зафиксировать его.
  • Если не будет никакой достаточной памяти, то Linux завершит работу, некоторый процесс использовал партию памяти или саму перезагрузку. Поскольку ядро должно использовать некоторую память.
  • Другое поведение определяется конфигурацией. Но я думаю, что необходимо исправить ошибку утечки памяти.
4
19.10.2014, 22:14
1 ответ

Для соответствия содержимому ARGV [i] необходимо изменить тест на

, если ($2 ~ ARGV [i])

В противном случае выполняется тестирование на соответствие литералу regex 'ARGV [i]' , что не является желаемым.

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

awk -f qtest.awk testing.txt «Джесси Пинкман» «Уолтер Уайт»

Но тогда он бросит ошибку, когда закончит чтение testing.txt и попытается открыть файл «Джесси Пинкман» (если, конечно, вы

Другими словами, ARGV содержит имена файлов , переданные вашему сценарию оболочкой, и не следует пытаться использовать его для передачи произвольных аргументов. Обычным способом передачи нефайловых аргументов в сценарий awk является использование синтаксиса -v var = val для инициализации переменных в сценарии.

Но я подозреваю, что лучшим подходом здесь является чтение testing.txt в вашем блоке BEGIN, использование синтаксиса getline var < namefile.txt , разделение данных (с помощью функции split () ) и сохранение разделенных данных в 2D массиве. Затем основной цикл обработки может считывать имена (из файла или от пользователя), а затем тестировать эти имена с помощью данных, сохраненных в массиве.

-121--210065-

Команда sudo является фронтэнд-программой, которая принимает аргументы, переключатели и команды. Большинство команд могут принимать аргументы и переключатели, но некоторые могут выполнять другие команды. Подумайте о них как об обертках, если хотите.

Поэтому sudo создаст совершенно новый экземпляр Bash (с повышенными привилегиями в качестве корня), а затем выполнит предоставленную команду.

Поэтому в этом случае sudo запускает программу pip3 + все аргументы, которые возникают после нее. Эти аргументы относятся к pip3 , а не к sudo . ПРИМЕЧАНИЕ: имейте в виду этот шаблон, когда вы видите sudo :

$ sudo <switches> "<command> <command's arguments + switches>"

Так что же тогда pip3?

Эти команды часто являются большим количеством информации, когда вы не уверены, что они делают. Большинство из них дадут краткий обзор того, как их использовать и что они делают, если запустить их с переключателем -help . Это может варьироваться, иногда это -help или даже -h .

Не установлено pip3 , но установлено pip2 . Фактически они являются одним и тем же инструментом, но pip3 является более новой версией.

$ pip2 --help

Usage:   
  pip <command> [options]

Commands:
  install                     Install packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  search                      Search PyPI for packages.
  zip                         Zip individual packages.
  unzip                       Unzip individual packages.
  bundle                      Create pybundles.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output.
  --log <file>                Log file where a complete (maximum verbosity) record will be kept.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
  --cert <path>               Path to alternate CA bundle.

--help показывает нам, что этот инструмент может принимать с точки зрения команд и переключателей, но не говорит нам, что он делает. Посмотрим, где он находится. Для этого можно использовать команду type :

$ type -a pip2
pip2 is /usr/bin/pip2
pip2 is /bin/pip2

Обратите внимание, что она находится в /usr/bin и /bin . Это означает, что наш менеджер пакетов установил этот инструмент. В дистрибутиве на базе Red Hat вы можете использовать rpm , чтобы узнать, какой пакет этот исполняемый файл, pip2 , принадлежит.

$ rpm -qf /bin/pip2
file /bin/pip2 is not owned by any package

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

Итак, что теперь?

Ну, мы далеки от смерти. Посмотрим, сможет ли система дать нам какие-либо дополнительные подсказки относительно того, что установлено pip2 .

Большинство Linux distros поставляются с mlocate , инструментом, который периодически создает индекс всех файлов, которые находятся на жестком диске. Таким образом, мы можем искать pip2 , чтобы получить подсказки о других местах, где его части могут таиться.

$ locate pip2
/usr/bin/pip2
/usr/bin/pip2.7

Итак, мы знаем, что установлены 2 версии, 2 и 2.7. Но это не очень помогло, так что давайте сделаем сеть немного шире и искать просто pip . Кроме того, мы собираемся фильтровать результаты немного и получить только результаты, которые заканчиваются pip . Для этого мы используем grep .

$ locate pip | grep 'pip$'
/home/saml/.pip
/home/saml/dotfiles/.pip
/home/saml/dotfiles/.pyenv/shims/pip
/home/saml/dotfiles/.pyenv/versions/3.2.5/bin/pip
/home/saml/dotfiles/.pyenv/versions/3.2.5/lib/python3.2/site-packages/pip-1.3.1-py3.2.egg/pip
/opt/ec2-api-tools/bin/ec2apip
/opt/ec2-api-tools/bin/ec2upip
/usr/bin/pip
/usr/bin/python-pip
/usr/lib/python2.7/site-packages/pip

Джекпот!

Наконец-то! Полезная информация. pip2 - это инструмент, используемый при установке Python. Итак, если мы пойдем в Google и посмотрим «pip python»:

О! pip2 является диспетчером пакетов для Python.

Команда устанавливает файл .whl для установки Python.

-121--129000-

можно разделить на ноль.

G=$(($((M=$((K=1024))*$K))*$K))
IF=./source_file SKIP=$((3*$M))
dd "if=$IF" "skip=$(($SKIP/($SKIP<$(wc -c <"$IF"))))"

Это значение равно «$ SKIP/1» или «$ SKIP/0» . По правде говоря, это не dd , который возвращает ложь, но оболочка - это означает, что dd никогда даже не вызывается, но wc , конечно. Возможно, также стоит работать в субоболочке, так как неинтерактивная оболочка, скорее всего, выйдет в противном случае.

Это также основной пример bs = 1 - в большинстве случаев вам, вероятно, придется учитывать размер блока или использовать флаг skip-bytes GNU.

1
27.01.2020, 21:01

Теги

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