Nano Hash - криптовалюты, майнинг, программирование

Всегда ли код выхода tar 123 означает пустой архив?

[root@my-pc: ]# printf "" | xargs tar czf ./foo.tgz
tar: empty archive
[root@my-pc: ]# echo $?
123
[root@my-pc: ]# 

Справочная страница tar документирует только коды возврата 0, 1 и 2, но поясняет далее:

Если подпроцесс, запущенный tar, завершается с ненулевым кодом завершения, сам tar также завершается с этим кодом. Это может произойти, например, если была использована опция сжатия (например, -z), а внешняя программа сжатия не удалась. Другой пример — сбой rmt во время резервного копирования на удаленное устройство.

Итак, я предполагаю, что этот код возврата «123» исходит от какого-то запущенного подпроцесса.

Вопрос: Всегда ли код выхода tar 123 означает пустой архив? (какой подпроцесс возвращает этот код?)

Что я пробовал:

1) Единственное, что я мог придумать, это strace это, но я недостаточно опытен, чтобы сказать, раскрывает ли его вывод ответ на мой вопрос.

[root@my-pc: ]# printf "" | xargs strace tar czf ./foo.tgz 2>&1 | grep -w 123

Это правильный способ запуска strace на tar? В любом случае, команда не имела вывода.

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

2) Искал ТАК, самое близкое попадание, которое я нашел, было this , но я не уверен, что это имеет значение (мне не ясно, что find/xargs участвует в коде возврата "123")

03.01.2019

  • Вам понадобится аргумент -f для перехода к подпроцессам. 03.01.2019
  • (и да, как следует из сообщения, использование -z приводит к запуску gzip. Можете ли вы по-прежнему получить этот статус выхода, используя только cf вместо czf? Если нет, это очень означает, что вы должны сужать ваш фокус на gzip) 03.01.2019
  • Кстати, xargs tar, вероятно, вообще плохая идея. Что произойдет, если у вас больше имен файлов, чем xargs может поместить в один список аргументов командной строки команды tar? (Ответ: он запускается tar раз в второй раз и перезаписывает выходной файл, записанный при первом вызове). tar может взять список файлов из стандартного ввода; нет причин сочетать его с xargs, и много причин не делать этого. 03.01.2019

Ответы:


1

От 1_:

EXIT STATUS
       xargs exits with the following status:
       0 if it succeeds
       123 if any invocation of the command exited with status 1-125
       124 if the command exited with status 255
       125 if the command is killed by a signal
       126 if the command cannot be run
       127 if the command is not found
       1 if some other error occurred.

Таким образом, любой ненулевой статус выхода из tar заставит xargs tar использовать статус 123.

03.01.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..