Como posso obter o UUID de um volume que contém o /
sistema de arquivos? A melhor coisa que eu encontrei até agora é blkid -o list
. Mas essa saída é legível por humanos e difícil de analisar. Talvez haja uma maneira melhor?
Eu preciso disso para parametrizar o gerenciamento de configuração com modelos específicos do sistema.
NOTA sobre blkid
pegadinha para aqueles que podem reutilizar os resultados da minha pergunta no futuro: blkid
armazena em cache os resultados das execuções anteriores em /etc/blkid.tab
. Isso significa que a execução blkid
como usuário não raiz pela primeira vez não retornará nenhum dado. Além disso, a execução blkid
como usuário não raiz após a execução raiz retornará dados obsoletos (possivelmente incorretos).
command-line
scripts
partitions
mountpoint
uuid
Dmitriusan
fonte
fonte
/dev/disk/by-label
... Isso também funciona para partições que não estão montadas. Ele tem a vantagem de poder escrever scripts que fazem coisas como rsync de raiz para raiz, o que é muito menos propenso a erros do que usar 2 UUIDS que não "significam" nada.Respostas:
Use
findmnt
:Ele também possui várias opções para controlar como ele procura informações e como as apresenta (incluindo a saída JSON!). Faz parte do
mount
pacote, disponível em qualquer instalação do Ubuntu.fonte
Outra solução:
-n
suprime o cabeçalho (não é realmente necessário, mas é mais seguro para análise)-r
torna a produção bruta (torna a análise mais segura)-o UUID,MOUNTPOINT
inclua apenas as informações necessáriasfonte
Você pode usar o
lsblk
comando para gerar o UUID, mas precisa do nome do dispositivo da partição (como / dev / sda2). Você pode obter isso usando odf
comando e aparando a saída. Use substituição de comando para dar o nome do dispositivolsblk
. Parece que você precisa do sudo para acessar o UUID, embora a saída normal do lsblk não o exija:fonte
sudo
no 16.04.lsblk
ou foiblkid
executado pela raiz e funcionou perfeitamente. Você sabe por que haveria um problema de armazenamento em cache com este comando e não com a versão postada pelo Rovo? A saída bruta contorna o cache de alguma maneira?blkid
como root, a criação do arquivo de cache em/dev/.blkid.tab
, o uso não sudo delsblk
não mostrará nada da coluna UUID. Não acho que exista risco de saída obsoleta.A melhor solução que consegui encontrar é
Parece não ideal, mas funciona.
Nota: [[: espaço:]] significaSpace
fonte
sudo
.Ajuste o valor
mountpoint
para o ponto de montagem atual do sistema de arquivos em questão:fonte
Aqui está o que eu uso:
O tune2fs está no pacote e2fsprogs, do qual não me lembro se ele está instalado por padrão.
se não estiver instalado.
fonte
awk: not an option: -e
editei sua resposta para torná-la funcional. Se eu exceder os limites, sinta-se à vontade para revertê-lo. Felicidades! :-)gawk
. Eu recebo o erro especificado em 16.04, que parece usar em seumawk
lugar.Testado para funcionar em 14.04 e 16.04
Um one-liner simples que sempre deve produzir o UUID de uma raiz
/
éO que estamos fazendo aqui é saudar a saída de mount para corresponder ao símbolo raiz com espaços em ambos os lados
/
para evitar a correspondência quando/
é usado como um símbolo de extensão de caminho, canalizando issoawk
usando "on" como um separador de campo para produzir apenas o nome do dispositivo e atribuindo THAT à variável de ambiente $ DRIVE, usando a saída doblkid $DRIVE
canal de corte usando o"
como um separador de campo e selecionando apenas o segundo campo que retira todo o resto, deixando apenas o UUID.Observe que o que pertence após grep no comando acima é na verdade ' space/ space' e não '/' como aparece.
Isso tem o benefício de não exigir
sudo
e retornará o resultado apropriado, independentemente de como o inversor esteja montado.Seria sensato garantir que você não esteja usando a variável de ambiente $ DRIVE para qualquer outra coisa antes de tentar essa abordagem
echo $DRIVE
retornará uma linha em branco se você não estiver usando a variável.fonte