Como posso verificar se um diretório está bloqueado ou não no bash?

0

Eu só consegui encontrar soluções para arquivos, e não diretórios, como lsof . chflags não tem opção de leitura, então não sei como fazer isso.

    
por DisplayName 14.01.2016 / 19:15

1 resposta

1

O esquema de bloqueio usado para operações de diretório é baseado em dois tipos de bloqueios - por-inode (- > i_mutex) e por sistema de arquivos (- > s_vfs_rename_mutex).

Ao tomar o i_mutex em vários objetos não-diretório, nós sempre adquirir os bloqueios em ordem, aumentando o endereço. Vamos ligar que "inode ponteiro" ordem no seguinte.

Para nossos propósitos, todas as operações se enquadram em 5 classes:

1) acesso de leitura. Regras de bloqueio: diretório de bloqueios de chamadas que estamos acessando.

2) criação de objetos. Regras de bloqueio: o mesmo que acima.

3) remoção de objetos. Regras de bloqueio: o chamador bloqueia pai, localiza vítima fecha a vítima e chama o método.

4) rename () que não é entre os diretórios. Regras de bloqueio: bloqueios de chamadas o pai e encontra a fonte e o alvo. Se o alvo já existir, bloqueie isto. Se source for um não-diretório, bloqueie-o. Se isso significa que precisamos bloquear ambos, bloqueá-los na ordem do ponteiro do inode.

5) criação de links. Regras de bloqueio:     * pai de bloqueio     * verifique se a fonte não é um diretório     * fonte de bloqueio     * chame o método.

6) renomeação de diretório cruzado. O mais complicado em todo o grupo. Bloqueio regras:     * bloquear o sistema de arquivos     * bloqueie os pais na ordem "antepassados primeiro".     * encontrar fonte e destino.     * se pai antigo é igual ou é descendente do alvo         falhar com -ENOTEMPTY     * se novo pai for igual a ou for descendente de origem         falhar com -ELOOP     * Se o alvo existir, bloqueie-o. Se a origem for um não-diretório, bloqueie       isto. Caso isso signifique que precisamos bloquear a origem e o alvo,       faça isso na ordem do ponteiro do inode.     * chame o método.

Você pode escrever um script que pode verificar o bloqueio de diretório usando algumas informações das 6 operações acima no diretório

.     
por 14.01.2016 / 19:37

Tags