[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
")