108
submitted 1 day ago* (last edited 6 hours ago) by A_norny_mousse@feddit.org to c/linux@programming.dev

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.

❤️🐧

all 34 comments
sorted by: hot top controversial new old
[-] lnxtx@feddit.nl 2 points 2 hours ago* (last edited 2 hours ago)

Interesting,
non-scientific speed test:

kernel 6.1.0-37-amd64:

$ time for i in $(seq 1 100000); do cat /proc/sys/kernel/random/uuid > /dev/null; done

real    3m53,388s
user    1m37,366s
sys     2m13,847s

$ for i in $(seq 1 100000); do cat /proc/sys/kernel/random/uuid ; done | wc -l
100000

vs. uuid 1.6.2-1.5+b11:

$ time for i in $(seq 1 100000); do uuid -v4 > /dev/null; done

real    4m44,854s
user    1m37,867s
sys     3m4,414s

$ for i in $(seq 1 100000); do uuid -v4 ; done | wc -l
100000

EDIT: I'm blind (wrong result).

[-] timhh@programming.dev 7 points 22 hours ago

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.

[-] A_norny_mousse@feddit.org 2 points 6 hours ago* (last edited 6 hours ago)

Can you explain?
Use for what?
Also it is being seeded, according to the file urandom_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

[-] bleistift2@sopuli.xyz 13 points 1 day ago

That’s what you get when you define a file system as “a system that names things”.

[-] Redjard@lemmy.dbzer0.com 15 points 1 day ago

boot_id seems to be static, probably set at boot.
So don't use it for a random uuid.

[-] nibbler@discuss.tchncs.de 4 points 7 hours ago

it's fine as long as you reboot before each call

[-] A_norny_mousse@feddit.org 1 points 6 hours ago

Oops you’re correct. Editing OP.

[-] notfromhere@lemmy.ml 6 points 1 day ago

I’ve used this in some bash scripts, very useful!

[-] A_norny_mousse@feddit.org 2 points 6 hours ago* (last edited 6 hours ago)

That's what I mean. No more searching for ways to create shell-friendly randomness ($RANDOM does not always cut it).

[-] clif@lemmy.world 5 points 1 day ago

This is awesome. Thank you

[-] pelya@lemmy.world 4 points 1 day ago

Works in Termux on Android

[-] kionite231@lemmy.ca 5 points 1 day ago

Thank you so much for sharing this!

[-] Hamartiogonic@sopuli.xyz -2 points 23 hours ago

See also: /dev/null

It’s basically a black hole where you can throw anything.

[-] DaPorkchop_@lemmy.ml 10 points 22 hours ago

Yes, but what if it were a subscription? May I present: /dev/null-as-a-Service.

[-] A_norny_mousse@feddit.org 1 points 2 hours ago

The most secure Bitcoin endpoint yet!

lol.

Okay, let’s be honest, it’s basically a crappy Pentium 4 box with Debian and nginx installed.

[-] victorz@lemmy.world 8 points 23 hours ago* (last edited 8 hours ago)
cat /proc/sys/kernel/random/uuid > /dev/null
[-] A_norny_mousse@feddit.org 1 points 6 hours ago* (last edited 6 hours ago)

while :; do cat /proc/sys/kernel/random/uuid > /dev/null; done

edit: on all cores for maximum "efficiency"

[-] DaPorkchop_@lemmy.ml 16 points 22 hours ago

Would have to be cat /proc/sys/kernel/random/uuid > /dev/null

You can't pipe to a file, only to programs, and since /dev/null isn't an executable your command will simply give an error.

To make it more clear, consider using dd, which lets you explicitly specify an input and output file. For example: dd if=/proc/sys/kernel/random/uuid of=/dev/sda1 wait shit that wasn't the right output oh god oh fu

[-] Redjard@lemmy.dbzer0.com 2 points 6 hours ago

dd is just cp but more confusing here.
The only thing dd can do that cp can't is stop ahead of time, which only really matters for infinite files like /dev/random

cp /proc/sys/kernel/random/uuid /dev/sda

[-] A_norny_mousse@feddit.org 1 points 6 hours ago

dd if=/proc/sys/kernel/random/uuid of=/dev/sda1

Peanuts. Real men do dd if=/proc/sys/kernel/random/uuid of=/dev/sda

[-] victorz@lemmy.world 1 points 8 hours ago* (last edited 8 hours ago)

Thanks, I'm overworked lately.

lol, the last part

[-] sixtoe@lemmy.blahaj.zone 2 points 19 hours ago

i saw this and came to do THE THING but you beat me too it. GOOD ANYA

[-] henfredemars@infosec.pub 3 points 22 hours ago

The information will be evenly distributed upon its surface and some believe one day it will be be radiated back out into the rest of the system.

[-] Hamartiogonic@sopuli.xyz 2 points 20 hours ago

That's a horrifying concept. Better not think about it.

[-] Hamartiogonic@sopuli.xyz 1 points 20 hours ago

That reminds me of the CPU stress test I ran many years ago.

dd if=/dev/random of=/dev/null

If you have 8 cores, just open 8 terminals, and run that code in each of them.

[-] victorz@lemmy.world 1 points 8 hours ago

Can you guarantee that each process will run on its own core?

[-] Hamartiogonic@sopuli.xyz 1 points 7 hours ago

Absolutely not, quite the opposite actually. However, the end result is close to 100% CPU load, which is good enough for some purposes. Let’s say you want to test the performance of your CPU cooler, or overclock stability, this should good enough. There are also dedicated tools for people with more advanced needs.

[-] YerbaYerba@lemm.ee 4 points 20 hours ago

/dev/urandom should stress the CPU more. /dev/random can be entropy limited

[-] lime@feddit.nu 2 points 19 hours ago* (last edited 19 hours ago)
for i in {1..n}  # where n == number of cores
do
  dd if=/dev/urandom of=/dev/null &
done

# to stop:
jobs -p | xargs kill
[-] Hamartiogonic@sopuli.xyz 1 points 7 hours ago

Oh yeah. This looks like a much better way to do it. My solution is pretty bare bones by comparison.

[-] lime@feddit.nu 1 points 7 hours ago

the advantage of yours is that you can actually see the performance number afterwards.

this post was submitted on 24 May 2025
108 points (97.4% liked)

Linux

7409 readers
404 users here now

A community for everything relating to the GNU/Linux operating system

Also check out:

Original icon base courtesy of lewing@isc.tamu.edu and The GIMP

founded 2 years ago
MODERATORS