���������� C. ���� ����������, �������
���������������� �����
������� C-1. «�����������������» ����
����������
��� ���������� | ����� | ������ | ���������� |
---|---|---|---|
1 | ������������� ������ | let «var1 = 1/0» | ��������� ������, ����� ��� «������� �� ����» � ��. |
2 | �������� ������������ � Bash — �������� ������������� ���������� ������ |
� | ����������� �������� �����, ������ ��� ���������� ������������ ������ 1 |
126 | ���������� ������� �� ����� ���� ��������� |
� | ��������� ��-�� ������� � ������� ������� ��� ����� ������ �� ���������� ������������� ���� |
127 | «������� �� �������» | � | �������� ������� ���� � ���������� ��������� $PATH, ���� � �������� ���������� ����� ������� |
128 | �������� �������� ������� exit | exit 3.14159 | ������� exit ����� ��������� ������ ������������� ��������, � ��������� 0 — 255 |
128+n | ��������� ������ �� ������� «n» | kill -9 $PPID �������� | $? ������ 137 (128 + 9) |
130 | ���������� �� Control-C | � | Control-C — ��� ����� �� ������� 2, (130 = 128 + 2, ��. ����) |
255* | ��� ���������� ��� ����������� ��������� |
exit -1 | exit ����� ��������� ������ ������������� ��������, � ��������� 0 — 255 |
�������� ���� �������, ���� ���������� 1 — 2, 126 — 165 � 255
[1] ����� ���������������� ��������,
������� ��� ������� �������� ������������ ���� ����� ��� �����
����. ���������� �������� � ����� �������� exit 127, ����� �������� �
�������������� ��� ������ ������ � �������� (������������� �� ��
�������� ������ «������� �� �������»? ��� ���
��������������� ������������� ��� ����������?). � �����������
�������, ������������ ��������� exit 1, � �������� ������� �� ������.
��� ��� ��� ���������� 1 ������������� �����
«�����» ������, �� � ������ ������ ������ �������� �
����� ���� ���������������, ���� � �� ��������������� —
����.
�� ��� ��������������� ������� ����������������� ����
���������� (��. /usr/include/sysexits.h), �� ���
�������������� ������������� ��� �������������, ������� �� ������
C � C++. ����� ��������� ���������� ���������� ���� ����������,
������������ �������������, ���������� 64 — 113 (�, ���� �����
���������� — 0, ��� ����������� ��������� ����������), �
������������ �� ���������� C/C++. ��� ������� �� ����� ������
����� �������.
��� ��������, ����������� � ������� ���������, ��������� �
������������ � ���� ����������, �� ����������� �������, �����
���������� ���������� ��������������, �������� � ������ 9-2.
��������� � ���������� $?, �� ��������� |
Problem
Exit code 127 means job’s command can not be found or executed
Resolving The Problem
A job fails with exit code 127. What does exit code 127 mean?
>bjobs -l
..
Thu Nov 18 18:39:28: Exited with exit code 127. The CPU time used is 0.1 seconds.
Thu Nov 18 18:39:28: Completed .
There are two possible meanings:
- · The job exits with exit code 127. Ex. «exit 127» or «return(127)”
- · If LSF returns 127, it means a command in the job is not found or executable.
Refer to «Understanding Platform LSF job exit information” in «Platform LSF Configuration Reference” for more details.
[{«Product»:{«code»:»SSWRJV»,»label»:»IBM Spectrum LSF»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:»—«,»Platform»:[{«code»:»PF025″,»label»:»Platform Independent»}],»Version»:»Version Independent»,»Edition»:»»,»Line of Business»:{«code»:»LOB10″,»label»:»Data and AI»}},{«Product»:{«code»:»SSWRJV»,»label»:»IBM Spectrum LSF»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:null,»Platform»:[{«code»:»»,»label»:»»}],»Version»:»»,»Edition»:»»,»Line of Business»:{«code»:»LOB10″,»label»:»Data and AI»}}]
Содержание
- Приложение C. Коды завершения, имеющие предопределенный смысл
- Примечания
- Linux return code 127
- Notes [1] An update of /usr/include/sysexits.h allocates previously unused exit codes from 64 — 78 . It may be anticipated that the range of unallotted exit codes will be further restricted in the future. The author of this document will not do fixups on the scripting examples to conform to the changing standard. This should not cause any problems, since there is no overlap or conflict in usage of exit codes between compiled C/C++ binaries and shell scripts. Источник
Приложение C. Коды завершения, имеющие предопределенный смысл
Таблица C-1. «Зарезервированные» коды завершения
Код завершения | Смысл | Пример | Примечание |
---|---|---|---|
1 | разнообразные ошибки | let «var1 = 1/0» | различные ошибки, такие как «деление на ноль» и пр. |
2 | согласно документации к Bash — неверное использование встроенных команд | Встречаются довольно редко, обычно код завершения возвращается равным 1 | |
126 | вызываемая команда не может быть выполнена | возникает из-за проблем с правами доступа или когда вызван на исполнение неисполняемый файл | |
127 | «команда не найдена» | Проблема связана либо с переменной окружения $PATH, либо с неверным написанием имени команды | |
128 | неверный аргумент команды exit | exit 3.14159 | команда exit может принимать только целочисленные значения, в диапазоне 0 — 255 |
128+n | фатальная ошибка по сигналу «n» | kill -9 $PPID сценария | $? вернет 137 (128 + 9) |
130 | завершение по Control-C | Control-C — это выход по сигналу 2, (130 = 128 + 2, см. выше) | |
255* | код завершения вне допустимого диапазона | exit -1 | exit может принимать только целочисленные значения, в диапазоне 0 — 255 |
Согласно этой таблице, коды завершения 1 — 2, 126 — 165 и 255 [1] имеют предопределенное значение, поэтому вам следует избегать употребления этих кодов для своих нужд. Завершение сценария с кодом возврата exit 127, может привести в замешательство при поиске ошибок в сценарии (действительно ли он означает ошибку «команда не найдена» ? Или это предусмотренный программистом код завершения?). В большинстве случаев, программисты вставляют exit 1, в качестве реакции на ошибку. Так как код завершения 1 подразумевает целый «букет» ошибок, то в данном случае трудно говорить о какой либо двусмысленности, хотя и об информативности — тоже.
Не раз предпринимались попытки систематизировать коды завершения (см. /usr/include/sysexits.h), но эта систематизация предназначена для программистов, пишущих на языках C и C++. Автор документа предлагает ограничить коды завершения, определяемые пользователем, диапазоном 64 — 113 (и, само собой разумеется — 0, для обозначения успешного завершения), в соответствии со стандартом C/C++. Это сделало бы поиск ошибок более простым.
Все сценарии, прилагаемые к данному документу, приведены в соответствие с этим стандартом, за исключением случаев, когда существуют отменяющие обстоятельства, например в Пример 9-2.
Обращение к переменной $?, из командной строки, после завершения работы сценария, дает результат, в соответствии с таблицей, приведенной выше, но только для Bash или sh . Под управлением csh или tcsh значения могут в некоторых случаях отличаться.
Примечания
Указание кода завершения за пределами установленного диапазона, приводит к возврату ошибочных кодов. Например, exit 3809 вернет код завершения, равный 225 .
Источник
Linux return code 127
Table E-1. Reserved Exit Codes
Exit Code Number | Meaning | Example | Comments |
---|---|---|---|
1 | Catchall for general errors | let «var1 = 1/0» | Miscellaneous errors, such as «divide by zero» and other impermissible operations |
2 | Misuse of shell builtins (according to Bash documentation) | empty_function() <> | Missing keyword or command, or permission problem (and diff return code on a failed binary file comparison ). |
126 | Command invoked cannot execute | /dev/null | Permission problem or command is not an executable |
127 | «command not found» | illegal_command | Possible problem with $PATH or a typo |
128 | Invalid argument to exit | exit 3.14159 | exit takes only integer args in the range 0 — 255 (see first footnote) |
128+n | Fatal error signal «n» | kill -9 $PPID of script | $? returns 137 (128 + 9) |
130 | Script terminated by Control-C | Ctl-C | Control-C is fatal error signal 2 , (130 = 128 + 2, see above) |
255* | Exit status out of range | exit -1 | exit takes only integer args in the range 0 — 255 |
There has been an attempt to systematize exit status numbers (see /usr/include/sysexits.h ), but this is intended for C and C++ programmers. A similar standard for scripting might be appropriate. The author of this document proposes restricting user-defined exit codes to the range 64 — 113 (in addition to 0 , for success), to conform with the C/C++ standard. This would allot 50 valid codes, and make troubleshooting scripts more straightforward. [2] All user-defined exit codes in the accompanying examples to this document conform to this standard, except where overriding circumstances exist, as in Example 9-2 .
Notes
An update of /usr/include/sysexits.h allocates previously unused exit codes from 64 — 78 . It may be anticipated that the range of unallotted exit codes will be further restricted in the future. The author of this document will not do fixups on the scripting examples to conform to the changing standard. This should not cause any problems, since there is no overlap or conflict in usage of exit codes between compiled C/C++ binaries and shell scripts.
Источник
Adblock
detector