tar 退出代码 123 是否总是意味着空存档?
Does tar exit code 123 always mean empty archive?
[root@my-pc: ]# printf "" | xargs tar czf ./foo.tgz
tar: empty archive
[root@my-pc: ]# echo $?
123
[root@my-pc: ]#
tar 手册页仅记录 return 代码 0
、1
和 2
,但进一步解释:
If a subprocess that had been invoked by tar exited with a nonzero
exit code, tar itself exits with that code as well. This can happen,
for example, if a compression option (e.g. -z) was used and the
external compressor program failed. Another example is rmt failure
during backup to a remote device.
所以我假设此 return 代码“123
”来自某个调用的子进程。
问题:tar 退出代码 123 是否总是意味着空存档? (这段代码是什么子进程 return?)
我试过的:
1) 我唯一能想到的就是 strace
这个,但我没有足够的经验来判断它的输出是否揭示了我问题的答案。
[root@my-pc: ]# printf "" | xargs strace tar czf ./foo.tgz 2>&1 | grep -w 123
以上是 tar
运行 strace
的正确方法吗?无论如何,该命令没有输出。
如果相关,我可以包含上面的输出而没有最后的 grep
,但我现在将它排除在外,因为它很长,而且我不清楚它是否一定有用
2) 搜索过,我找到的最接近的命中是 this,但我不确定这是否相关(我不清楚是否涉及 find
/xargs
在“123
”的return代码中
来自man xargs
:
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
。
[root@my-pc: ]# printf "" | xargs tar czf ./foo.tgz
tar: empty archive
[root@my-pc: ]# echo $?
123
[root@my-pc: ]#
tar 手册页仅记录 return 代码 0
、1
和 2
,但进一步解释:
If a subprocess that had been invoked by tar exited with a nonzero exit code, tar itself exits with that code as well. This can happen, for example, if a compression option (e.g. -z) was used and the external compressor program failed. Another example is rmt failure during backup to a remote device.
所以我假设此 return 代码“123
”来自某个调用的子进程。
问题:tar 退出代码 123 是否总是意味着空存档? (这段代码是什么子进程 return?)
我试过的:
1) 我唯一能想到的就是 strace
这个,但我没有足够的经验来判断它的输出是否揭示了我问题的答案。
[root@my-pc: ]# printf "" | xargs strace tar czf ./foo.tgz 2>&1 | grep -w 123
以上是 tar
运行 strace
的正确方法吗?无论如何,该命令没有输出。
如果相关,我可以包含上面的输出而没有最后的 grep
,但我现在将它排除在外,因为它很长,而且我不清楚它是否一定有用
2) 搜索过,我找到的最接近的命中是 this,但我不确定这是否相关(我不清楚是否涉及 find
/xargs
在“123
”的return代码中
来自man xargs
:
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
。