完成的后台工作状态中的“退出2”是什么?


12

我有一个练习,将一些数据(某些目录的* conf)放入文件中,并且需要在后台进行。我做到了,我想知道输出消息的含义是什么:

[A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 &

输入升起此行:

[1] 2533

这是什么意思?在其他回车之后,出现另一条消息

[A@localhost tests]$
[1]+  Exit 2                  ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1

这是什么意思?什么是“出口2”?

输入检查结果-似乎一切正常。

[A@localhost tests]$
[A@localhost tests]$ ls -l test1_6_conf.txt
-rw-rw-r--. 1 A A 2641 Nov 22 14:19 test1_6_conf.txt
[A@localhost tests]$ 

我正在使用CentOS 6.4,Gnome终端仿真器。

Answers:


18

这是什么意思?什么是“出口2”?

它是的退出状态ls。见ls的人:

   Exit status:
       0      if OK,

       1      if minor problems (e.g., cannot access subdirectory),

       2      if serious trouble (e.g., cannot access command-line argument).

我想原因是您有很多* conf文件,/etc而/ usr中没有* conf文件。实际上ls -ld /usr/*conf;会产生相同的效果。

因此,如果我在计算机ls上使用现有文件:

ls main.cpp; echo $?
main.cpp
0

对于不存在的文件:

ls main.cppp; echo $?
ls: cannot access main.cppp: No such file or directory
2

或作为不存在的文件的后台进程ls:

>ls main.cppp &
[1] 26880
ls: cannot access main.cppp: No such file or directory
[1]+  Exit 2                  ls main.cppp

哦!谢谢。现在,我已经意识到,由于没有包含“ conf”的任何文件名,因此将ls /usr/*conf返回2
ALZ

2
@ALZ,请注意它返回2,因为它找不到名为的文件/usr/*conf。并且bash正在传递该文件名,因为它找不到与该模式匹配的文件。更好的shell zsh会返回“ no match”错误,并且根本不会运行ls
斯特凡Chazelas

1

这意味着命令已完成,退出状态不同于0(成功)。

尽量不要在结尾加上(&),以查看会发生什么。

如果该命令在运行时占用大量时间,则可以使用以下命令进行检查:

lnx#>职位-l

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.