“echo / sys /…” não entra em vigor ao usar / dev / null 2 & 1

4

Isso é um pouco estranho. Estou tentando verificar um dispositivo iscsi usando o seguinte comando:

echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1
# Doesn't work. The rescan won't recognize the new available disk space. 

echo 1 > /sys/block/sda/device/rescan
# Works: recognizes the new available disk space. 

Como posso enviar stdout e stderr para /dev/null , pois não quero que minha tela fique confusa?

    
por holasz 09.05.2017 / 14:40

1 resposta

20
echo 1 > /sys/block/sda/device/rescan >/dev/null 2>&1
       ^                              ^

Você tem dois redirecionamentos de saída aqui. Este último tem efeito, então isso é equivalente a:

echo 1 >/dev/null 2>&1

que não escreve nada em arquivos em /sys .

O comando que você está executando aqui é echo , que imprime apenas para stdout o que você pede para imprimir na linha de comando, por isso não vai imprimir nada "surpreendente" lá. Além disso, embora você possa receber erros se o primeiro redirecionamento não puder ser aberto, eles provavelmente virão quando o redirecionamento for processos, ou seja, a partir do shell, não do próprio comando, portanto, mesmo o redirecionamento 2> pode não fazer nada. / p>

Por outro lado, se o acionamento da nova varredura causar uma saída em algum lugar, é provável que ela venha do kernel, através dos mecanismos usuais de registro. Então você precisa verificar qual é a configuração de registro para controlar isso.

Se você estiver usando um terminal virtual do Linux, algumas mensagens do kernel são impressas no vt ativo. Você pode usar dmesg -n<level> para definir o nível de prioridade de mensagens de mensagens enviadas para o console.

    
por 09.05.2017 / 14:44