Фоновое задание всегда запущено успешно:
$ sntaoehu &
[1] 33566
$ bash: sntaoehu: command not found
[1]+ Exit 127 sntaoehu
$ echo $?
0
Вы не можете запустить свою Java-программу в фоновом режиме и определить, хорошо она прошла или нет, пока не завершится выполнение команды nohup
. Команда nohup
завершится, если она не сможет найти или запустить java
или всякий раз, когда завершится программа Java. Это не nohup
, который запускает вашу программу в фоновом режиме. Это просто заставляет вашу программу игнорировать любой сигнал HUP
и будет зависать до тех пор, пока ваша программа не завершится, а затем возвращает статус выхода программы вызывающей оболочке.
Чтобы отправить электронное письмо, если задание запущено не удалось , вы можете выполнить
(
nohup java -jar Xyz-port-0.0.1.jar
status=$?
if [ "$status" -eq 126 ] || [ "$status" -eq 127 ]; then
# something wrong in launching java
echo 'nohup failed to run java'
printf 'nohup exit status is %s\n' "$status"
elif [ "$status" -ne 0 ]; then
# the java code returned an error
echo 'java returned an error'
printf 'java exit status is %s\n' "$status"
else
# everything went well and java exited ok
echo 'java exited safely'
fi | mail -s 'java job status report' me@example.com
) &
echo 'started background job'
То есть, запустите фоновую подоболочку, в которой вы запускаете свою программу, затем проверьте, возвращает ли nohup
126 или 127. Он сделает это, если команда java
не может быть найдена или не может быть запущена.
Правильный ответ зависит от того, какая цветовая схема принята вашей оболочкой, но я думаю, что можно объяснить поведение, которое вы испытываете, исходя из некоторых общих соображений:
ls
, основаны на типе файла (, обычно определяемом их расширениями, например. .png
, .zip
,и т. д. )и права доступа к файлам/каталогам. .zip
, .gz
и.bz2
Если более чем одно из этих условий применяется «конфликтующим образом», результат зависит, но обычно настройки «разрешения» имеют приоритет над настройками «типа файла».
В вашем случае объяснение, вероятно, следующее:
backup
были скопированы из «независимой от -разрешений» файловой системы либо с cp -p
, либо с rsync -a
, т. е. таким образом, чтобы сохранить права доступа к файлам и иметь бит «выполнить». задавать. Вот почему все они окрашены в зеленый цвет на вашем выходе ls
. .tar.gz
, выделенный красным цветом, поступил из файловой системы, в которой бит «выполнение» не установлен по умолчанию и не имеет этого бита. Затем выполняется окрашивание в соответствии с типом файла, поэтому файл окрашивается в красный цвет, так как это сжатый файл. Если вам интересно узнать больше, вы можете ознакомиться с
man dir colors