в чем разница между красным файлом и зеленым файлом в Терминале (macOS)

Фоновое задание всегда запущено успешно:

$ 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'

То есть, запустите фоновую подоболочку, в которой вы запускаете свою программу, затем проверьте, возвращает ли nohup126 или 127. Он сделает это, если команда javaне может быть найдена или не может быть запущена.

1
23.06.2020, 19:22
1 ответ

Правильный ответ зависит от того, какая цветовая схема принята вашей оболочкой, но я думаю, что можно объяснить поведение, которое вы испытываете, исходя из некоторых общих соображений:

  • Цвета, используемые в выводе ls, основаны на типе файла (, обычно определяемом их расширениями, например. .png, .zip,и т. д. )и права доступа к файлам/каталогам.
  • Во многих системах Linux красный цвет используется либо для
    • символические ссылки, указывающие на -несуществующий файл (маловероятно объяснение в вашем случае)
    • сжатые файлы, такие как .zip, .gzи.bz2
  • С другой стороны, зеленый цвет обычно используется для файлов, для которых установлено «разрешение на выполнение». Обратите внимание, что в «независимых от разрешений -» файловых системах, таких как FAT32 (, очень распространенных на USB-накопителях ), бит «исполняемый» установлен по умолчанию, т. е. все файлы, хранящиеся в такой файловой системе, помечаются как исполняемые..

Если более чем одно из этих условий применяется «конфликтующим образом», результат зависит, но обычно настройки «разрешения» имеют приоритет над настройками «типа файла».

В вашем случае объяснение, вероятно, следующее:

  • Большинство файлов в вашем каталоге backupбыли скопированы из «независимой от -разрешений» файловой системы либо с cp -p, либо с rsync -a, т. е. таким образом, чтобы сохранить права доступа к файлам и иметь бит «выполнить». задавать. Вот почему все они окрашены в зеленый цвет на вашем выходе ls.
  • Один файл .tar.gz, выделенный красным цветом, поступил из файловой системы, в которой бит «выполнение» не установлен по умолчанию и не имеет этого бита. Затем выполняется окрашивание в соответствии с типом файла, поэтому файл окрашивается в красный цвет, так как это сжатый файл.

Если вам интересно узнать больше, вы можете ознакомиться с

2
18.03.2021, 23:26

Теги

Похожие вопросы