That’s all. I just found this in a random script. Generates a random UUID every time it’s called. I didn’t know.
Of course I can also use uuidgen
or pipe /dev/(u)random
into something to get a random alphanumeric string - but this is built right into the kernel!
In /proc/sys/kernel/random/
, there’s also boot_id
which seems to do the same is static, and some tweakable parameters.
❤️🐧
Yeah but please don’t actually use this. Use a proper UUID library that works cross-platform and lets you choose the UUID type and can be seeded etc.
Can you explain?
Use for what?
Also it is being seeded, according to the fileurandom_min_reseed_secs
which is also writeable. Here are the other files:-r--r--r-- 1 root root 0 25. 5. 11:13 boot_id -r--r--r-- 1 root root 0 25. 5. 11:19 entropy_avail -r--r--r-- 1 root root 0 25. 5. 11:19 poolsize -rw-r--r-- 1 root root 0 25. 5. 11:19 urandom_min_reseed_secs -r--r--r-- 1 root root 0 25. 5. 11:19 uuid -rw-r--r-- 1 root root 0 25. 5. 11:19 write_wakeup_threshold
edit: the type is always DCE/random
There are a few reasons you shouldn’t use this in proper programs. If you’re the sort of person that thinks hacky Bash scripts are acceptable then sure, use it there.
- It isn’t cross-platform. Not available on Mac/Windows.
- There are several types of UUID with different properties. This doesn’t let you choose which one to use.
- To make programs deterministic (really useful for testing!) you want to be able to seed all their randomness with a specific seed so that it generates the same UUID each time you run it. (Obviously in normal use you would use a random seed.)
Thank you so much for sharing this!
I’ve used this in some bash scripts, very useful!
That’s what I mean. No more searching for ways to create shell-friendly randomness ($RANDOM does not always cut it).
Works in Termux on Android
My guy you’ve just given me the same sense of wonder you got yourself. Fuck man I love linux
When writing shell scripts that run in a loop I always look for files in /sys or /proc before using standard utilities. There’s a lot
- /proc/mounts instead of the mount command
- /sys/class/…/backlight to influence screen brightness
- /sys/class/net to get info and stats about interfaces
- …
Someone should make a comprehensive list I guess.
This is awesome. Thank you