io erro em glob no-match no cifs OSX - debian jessie mount

1

Usar um curinga / glob (pelo menos * e ? ) em bash causa um input/output error quando não há correspondências em uma montagem samaba cifs em Debain Jessie 8.2. Em outros sistemas de arquivos, o erro No such file esperado é fornecido.

O mesmo ponto de montagem do samaba em uma caixa do archlinux e não possui erro io. O mount.cifs da máquina Archlinux entende mapposix . Eu suspeito que mount.cifs no jessie não permite / entender mapposix tem algo a ver com isso.

Existe algum erro em torno do io para * ?

 ## works as expected on cifs mount from centos server
 ls /data/Luna1/*adfadf*
 # ls: cannot access /data/Luna1/*adfadf*: No such file or director


 ### unexpected io failure on osx mounted on debian
 mkdir /Volumes/Phillips/testdir

 ## no files match in empty directory: io error
 ls /Volumes/Phillips/testdir/*
 #  ls: reading directory /Volumes/Phillips/testdir/*: Input/output error

 ## glob matches, ls results
 touch /Volumes/Phillips/testdir/file
 ls /Volumes/Phillips/testdir/*
 #  /Volumes/Phillips/testdir/file

 ## glob matches, ls results
 ls /Volumes/Phillips/testdir/*il*
 # /Volumes/Phillips/testdir/file

 ## no files match: io error
 ls /Volumes/Phillips/testdir/*foobar*
 #  ls: reading directory /Volumes/Phillips/testdir/*foobar*: Input/output error

 # fails as expected
 ls /*filedoesnotexist*
 #  ls: cannot access /*filedoesnotexist*: No such file or directory

 ## zsh handles this correctly
 zsh -c "ls /Volumes/Phillips/*dne*"
 #  zsh:1: no matches found: /Volumes/Phillips/*dne*

Informações do sistema:

cat /etc/debian_version 
   8.2  
dpkg -l cifs-utils 
   ii  cifs-utils     2:6.4-1      amd64        Common Internet File 


mount |grep cifs
//gromit/Luna1/ on /data/Luna1 type cifs (rw,relatime,vers=1.0,cache=strict,username=foranw,domain=GROMIT,uid=1000,forceuid,gid=1000,forcegid,addr=10.145.64.52,unix,posixpaths,serverino,nobrl,acl,rsize=61440,wsize=65536,actimeo=1)

//skynet/Phillips/ on /Volumes/Phillips type cifs (rw,nosuid,nodev,noexec,relatime,vers=1.0,cache=strict,username=lncd,domain=SKYNET,uid=1000,forceuid,gid=1000,forcegid,addr=10.145.64.109,file_mode=0755,dir_mode=0755,nounix,nobrl,rsize=61440,wsize=65536,actimeo=1)
    
por Will 03.12.2015 / 18:58

1 resposta

0

Minha solução atual é tocar em um arquivo que corresponda ao glob para evitar um erro

Isso funciona particularmente bem para o bet do FSL, em que rm é chamado com um glob que não corresponde a nada. Curiosamente, ele lança "diretório existe" (quando isso não acontece) em vez de erro IO.

bet 002_mprage_hpf 002_mprage_hpf_brain -m -f 0.1
# /bin/rm: cannot remove '002_mprage_hpf_brain_tmp*': Is a directory.
[ $? -ne 0 ] && echo failed
# failed

vs

touch 002_mprage_hpf_brain_tmp_hackyhackhack
bet 002_mprage_hpf 002_mprage_hpf_brain -m -f 0.1
[ $? -ne 0 ] && echo failed
# $? == 0
    
por 25.05.2017 / 14:46