[root@my-pc: ]# printf "" | xargs tar czf ./foo.tgz
tar: empty archive
[root@my-pc: ]# echo $?
123
[root@my-pc: ]#
Страница man 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) Поискал ТАК, ближайший хит, который я нашел, был это , но я не уверен, что это актуально (мне не ясно, что find
/ xargs
участвует в коде возврата "123
")