Файл с полномочиями---S - l---

[115751] Процессы в процессе замещения являются асинхронными: оболочка запускает их, а затем не дает возможности обнаружить, когда они погибают. Поэтому вы не сможете получить статус выхода.

#!/bin/bash
for i in {2..70}
do
   echo Doing track number $i...
   ./HandBrakeCLI -t $i -i /Volumes/MX1-0N-NW1_DES --preset iPad -o X-Men_Vol1_Disk1_Title$i.mp4
done

Вы можете записать статус выхода в файл, но в целом это неуклюже, потому что вы не можете знать, когда файл будет записан. Здесь файл записывается вскоре после окончания цикла, так что разумно подождать.

Другой подход - использовать именованный канал и фоновый процесс (для которого можно [116243]подождать [116244]).

Если ни один из подходов не подходит, думаю, вам нужно будет обратиться к более способному языку, такому как Perl, Python или Ruby.[115758].

1
11.03.2015, 01:03
2 ответа

Я доверяю, что вы знакомы с основным -RWXRWXRWX обозначением. Вы, вероятно, знаете, что набор пользовательский идентификатор получает вас -RWSRWXRWX И Set-Group-ID получает вас -RWXRWSRWX . Но без дальнейших разъяснений эти формы неоднозначны. Если вы видите -RWS ------ , вы можете предположить, что режим 04700 (Set-user-id + пользователь чтение + запись + execute), Но откуда вы знаете, что файл Execute включен, когда x не отображается? Ответ в том, что режим 04600 (SET-USER-ID + пользователь прочитан + запись, но без выполнения) показано как -RWS ------ . Так же, 02060 (Set-Group-ID + Group Read + Write, но без выполнения) отображается как --- RWS --- .

Теперь документация на это l доказывает, что трудно найти. К счастью, я был на некоторое время, и я знаю, где похоронены некоторые тела. Я нашел этот страницу FCNTL (2) , в котором говорится,

(не POSIX) ... записывающие блокировки могут быть либо консультационными или обязательными, и консультируются по умолчанию. Консультативные замки не применяются и полезны только между сотрудничающими процессами.

Обязательные замки применяются для всех процессов. Если процесс пытается выполнить несовместимый доступ (например, Читайте (2) или Написать (2) ) в файловом регионе, который имеет несовместимый обязательный замок, Затем результат зависит от того, включен ли флаг o_nonblock Для его открытого описания файла. Если флаг o_nonblock не включен, Тогда системный вызов заблокирован, пока замок не будет удален или преобразован в режим, который совместим с доступом. Если флаг O_NONBLOCK включен, Затем системный вызов не удается с ошибкой Eaegain .

Чтобы использовать обязательные блокировки, обязательные блокировки должны быть включены Оба в файловой системе, которая содержит файл, который будет заблокирован, и в самом файле. Обязательная блокировка включена в файловой системе Использование опции « -O MARD » MOUND (8) , Или флаг MS_MandLock MS_MANDLOCK для монтирования (2) . Обязательная блокировка включена в файл, отключая группу Выполнить разрешение на файл и включение бита разрешения на множество групп-идентификаторов (см. CHMOD (1) и Chmod (2) ).

Реализация Linux от обязательной блокировки ненадежна. Смотрите ошибки ниже.

TL; DR

на некоторых (несциксе?) * NIX системы, Включение бита Meet-ID-идентификатора Set-Group при выходе из группы Execute Позволяет обязательному блокировку на этом файле, если он включен в файловой системе. И поэтому программы LS на некоторых из этих систем показывают l (а не S ) В седьмой позиции текстового представления режима Чтобы указать, что обязательный L включен. Итак, ваш файл TUR_LOCK имеет режим 06000.

Tl; DR 2

  • S в четвертом положении Указывает, что Mode Mode Set-id ID (04000) установлен Но пользователь (владелец) выключен в режиме разрешения (00100).
  • или или L в седьмой позиции Указывает, что бит режима Set-Group ID (02000) установлен Но группа выполняет разрешение (00010) бита режима выключена.
  • Если отображает s или l в седьмой позиции (Когда установлен бит режима Set-Group ID, но в Group Mode Permise Permise Mode Bit выключен) определяется по правилам, которые не были четко документированы; Но похоже, вы получаете L , если ваша операционная система и файловая система Поддержка обязательной блокировки файлов. Затем L затем указывает на то, что для этого файла включена обязательная блокировка файлов.

Вы можете увидеть числовые режимы (или, по крайней мере, биты режима, которые находятся под управлением пользователя) Для всех файлов и Whatnot в дереве каталогов с командой, как

find directory -printf "%.5m %p\n"

Найти -PrintF Принимает формат % m , чтобы сообщить об режиме численно (в восьмерию) Отказ (Используйте % m , чтобы сообщить об режиме символически, как LS .) Конечно, вы можете указать несколько каталогов на Найти , Или используйте параметры, такие как -Mindepth или -MaxDepth , Или тесты, такие как -MTime , -name , , , и / или , и / или , чтобы сузить поиск, или изменить формат -PrintF .

Вы можете увидеть числовые режимы для выбранных файлов с помощью команды, такой как

stat -c "%a %n" file …

СТАТ Формат отчета (Указанный с -C или - формат )) Использование % A , чтобы сообщить об режиме («права доступа») численно (во восьмерикальном). (Используйте % A , чтобы символически сообщить об режиме, как LS .).)

Оба вышеуказанного показывают только биты режима, которые находятся под контролем пользователя.Чтобы увидеть все биты режима (включая те, которые указывают тип файла / inode), используйте

stat -c "%f %n" file …

, к сожалению, это отображает его в Hex.


... Есть ли возможность идентифицировать файлы с ...?

Вы можете найти файлы, которые имеют s в четвертом положении с

find directory -perm -4000 ! -perm -100

, что примерно так близко к английскому языку, как Найти Синтаксис получает: Найти файлы, где «разрешение» (режим) бит 04000 устанавливается, но режим бита 0100 не установлен.

Аналогично, вы можете найти файлы, которые имеют S или L в седьмой позиции с

find directory -perm -2000 ! -perm -010 

нахождение файлов, которые соответствуют одному из вышеупомянутых условий, немного Messier:

find directory "(" "(" -perm -4000 ! -perm -100 ")" -o "(" -perm -2000 ! -perm -010 ")" ")"
3
27.01.2020, 23:27

Это может быть установлено с помощью команды Chattr в Linux. Chattr - это команда в операционной системе Linux, которая позволяет пользователю устанавливать определенные атрибуты в файле, находящемся в файловых системах Linux. Он также называется как неизменный бит. Существует так много присутствующих атрибутов, которые могут быть применены к файлам в Linux. В вышеупомянутом вопросе, и я и я являются одними из атрибутов. Ниже приведено описание атрибута S и I.

S - изменения записываются синхронно на диске; Это эквивалентно варианту монтажа «синхронизации», примененного к подмножению файлов.

I - используется кодом Htree для указания того, что каталог находится за проиндексированным с помощью хешированных деревьев.

Чтобы установить неизменяемый бит в любой файл, ниже является синтаксисом. Chattr + (атрибут) (имя файла) Чтобы удалить неизменяемый бит любого файла, ниже синтаксис. Chattr - (атрибут) (имя файла)

, чтобы проверить, какой файл имеет набор атрибутов, используйте команду lsattr.

Для получения дополнительной информации читайте страницу человека Chattr. Все атрибуты и его характеристики упоминаются на странице человека.

0
27.01.2020, 23:27

Теги

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