Bagaimana saya bisa mendapatkan UUID volume yang berisi sistem /
file? Hal terbaik untuk yang saya temukan sampai saat ini adalah blkid -o list
. Tetapi hasil ini mudah dibaca manusia dan sulit diurai. Mungkin ada cara yang lebih baik?
Saya membutuhkannya untuk membuat parameter manajemen konfigurasi dengan templat khusus sistem.
CATATAN tentang blkid
gotcha bagi mereka yang dapat menggunakan kembali hasil dari pertanyaan saya di masa depan: blkid
cache hasil dari berjalan sebelumnya di /etc/blkid.tab
. Itu berarti menjalankan blkid
sebagai pengguna non-root pertama kali tidak akan mengembalikan data apa pun. Juga, berjalan blkid
sebagai pengguna non-root setelah root dijalankan akan mengembalikan data basi (mungkin salah).
command-line
scripts
partitions
mountpoint
uuid
Dmitriusan
sumber
sumber
/dev/disk/by-label
... Ini juga berfungsi untuk partisi yang tidak dipasang. Ini memiliki keuntungan karena dapat menulis skrip yang melakukan hal-hal seperti rsync dari root ke root-bak yang jauh lebih sedikit kesalahan daripada menggunakan 2 UUID yang tidak "berarti" apa pun.Jawaban:
Gunakan
findmnt
:Ia juga memiliki beberapa opsi untuk mengontrol bagaimana informasi itu dilihat, dan bagaimana menyajikannya (termasuk output JSON!). Itu bagian dari
mount
paket, jadi tersedia di setiap instalasi Ubuntu.sumber
Solusi lain:
-n
menekan tajuk (tidak benar-benar dibutuhkan, tetapi lebih aman untuk parsing)-r
membuat output mentah (membuatnya lebih aman untuk diuraikan)-o UUID,MOUNTPOINT
hanya menyertakan informasi yang diperlukansumber
Anda dapat menggunakan
lsblk
perintah untuk mengeluarkan UUID, tetapi Anda memerlukan nama perangkat partisi (seperti / dev / sda2). Anda bisa mendapatkan ini dengan menggunakandf
perintah dan memangkas output. Gunakan subtitusi perintah untuk memberikan nama perangkatlsblk
. Tampaknya Anda memerlukan sudo untuk mengakses UUID, meskipun output normal lsblk tidak memerlukannya:sumber
sudo
pada 16.04.lsblk
ataublkid
dijalankan oleh root dan itu bekerja dengan sempurna. Apakah Anda tahu mengapa akan ada masalah caching dengan perintah ini dan bukan dengan versi yang diposting oleh Rovo? Apakah output mentah menghindari caching dalam beberapa cara?blkid
sebagai root, membuat file cache di/dev/.blkid.tab
, penggunaan non-sudolsblk
tidak akan menampilkan apa pun dari kolom UUID. Saya tidak berpikir ada risiko output basi.Solusi terbaik yang berhasil saya buat adalah
Terasa seperti tidak optimal, tetapi bekerja.
Catatan: [[: spasi:]] berartiSpace
sumber
sudo
.Sesuaikan nilai
mountpoint
ke titik pemasangan saat ini dari sistem file yang dimaksud:sumber
Inilah yang saya gunakan:
tune2fs ada dalam paket e2fsprogs, yang saya tidak ingat apakah itu diinstal secara default.
jika tidak diinstal.
sumber
awk: not an option: -e
saya mengedit jawaban Anda untuk membuatnya fungsional. Jika saya melangkahi, silakan memutar kembali. Bersulang! :-)gawk
. Saya mendapatkan kesalahan yang ditentukan di bawah 16,04 yang tampaknya digunakanmawk
sebagai gantinya.Diuji untuk bekerja pada 14,04 dan 16,04
Satu kalimat sederhana yang harus selalu menghasilkan UUID dari root
/
adalahApa yang kami lakukan di sini adalah menangkap output mount untuk mencocokkan simbol root dengan spasi di kedua sisi
/
untuk menghindari pencocokan ketika/
digunakan sebagai simbol ekstensi jalur, memipiskan bahwa denganawk
menggunakan "on" sebagai pemisah bidang untuk menghasilkan hanya nama perangkat dan menetapkan BAHWA untuk variabel lingkungan $ DRIVE, kemudian menggunakan output dariblkid $DRIVE
pipa melalui pemotongan menggunakan"
sebagai pemisah bidang dan memilih hanya bidang kedua yang menghapus semua yang lainnya, hanya menyisakan UUID.Perhatikan bahwa apa yang termasuk setelah grep pada perintah di atas sebenarnya ' space/ space' dan bukan '/' seperti yang muncul.
Ini bermanfaat karena tidak memerlukan
sudo
dan akan mengembalikan hasil yang sesuai terlepas dari bagaimana drive dipasang.Akan lebih bijak untuk memastikan bahwa Anda tidak menggunakan variabel lingkungan $ DRIVE untuk hal lain sebelum mencoba pendekatan ini
echo $DRIVE
akan menghasilkan baris kosong jika Anda tidak menggunakan variabel.sumber