this post was submitted on 20 Sep 2024
201 points (96.3% liked)

Programmer Humor

32061 readers
1074 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
201
submitted 22 hours ago* (last edited 15 hours ago) by bi_tux@lemmy.world to c/programmerhumor@lemmy.ml
 

This happend to me right noww as I tried to write a gui task manager for the GNU/Linux OS

you are viewing a single comment's thread
view the rest of the comments
[–] CameronDev@programming.dev 17 points 22 hours ago (3 children)

How are you crashing your system?! Crashing program sure, but the entire system?

[–] sebsch@discuss.tchncs.de 20 points 21 hours ago (1 children)

Try it out on your own system.

:(){
 :|:&
};:

It's totally possible

[–] CameronDev@programming.dev 9 points 21 hours ago* (last edited 21 hours ago) (1 children)

Doesn't explain OPs task management example. And won't crash the kernel, just make things unresponsive

[–] bi_tux@lemmy.world 11 points 21 hours ago (1 children)

it didn't crash the kernel, it just killed every process that isn't run by the root user, which kind of feels like a crash

[–] CameronDev@programming.dev 4 points 21 hours ago (1 children)

Ah, that definitely would feel like a crash. Sent kill signal to cgroup accidentally? Or just iterate over all processes and signal them all?

[–] bi_tux@lemmy.world 5 points 20 hours ago* (last edited 20 hours ago) (1 children)

probably the later, but idk how, all I did was insert a string in the following command like this:

``Command::new("bash")

.arg("-c") .arg(format!("ps -aux | grep -i "{}" | awk '{{print $2}}' | xagrs kill -9", input)

.output()

.expect("error");``

I've tested the command and it worked flawlessly in the terminal, but I have no idea what I'm doing, since I'm new to rust and never worked with this library

[–] CameronDev@programming.dev 5 points 20 hours ago (1 children)

There are rust libraries to send signals, might be better to use those rather than calling bash. eg. https://docs.rs/nix/latest/nix/sys/signal/index.html

I'm guessing if input was "", then it would sigkill all processes? Less confident, but some functions behave slightly differently in an interactive console vs a non interactive, maybe ps has a different format when used non interactively?

Aside, you want three backticks and a newline to get code formatting :)
[–] bi_tux@lemmy.world 4 points 18 hours ago* (last edited 18 hours ago)

thx, btw I figured it out:

I forgot to trimm the string, so it had a line break in it which lead to grep showing the processes from the term I put in + all processes that contain a space/linebreak and appearently all processes shown by ps aux contain some kind of space (makes sense, since there are spaces between the user, pid, etc) so yeah, I ended up trying to kill every process on the system, but it only killed the user processes, since I ran everything without sudo

[–] n3cr0@lemmy.world 6 points 21 hours ago (2 children)

rm -rf

Works for . current directory. Yay!

... also works for / system root. 🔥 Nay!

[–] CanadaPlus@lemmy.sdf.org 3 points 17 hours ago (1 children)

Does it? I thought / specifically was protected, and you needed to add --no-preserve-root.

[–] n3cr0@lemmy.world 1 points 2 hours ago

It should, but I the end it depends on your system. Each distro has their own default behavior.

[–] CameronDev@programming.dev 3 points 21 hours ago

That won't crash your kernel, and I was more curious about the OPs example. Task management is basically reading some files, and sending signals, it should be near impossible to crash the system.

[–] kwozyman@lemmy.world 3 points 21 hours ago (1 children)
[–] CameronDev@programming.dev 4 points 21 hours ago* (last edited 21 hours ago)

OPs example was task management, which doesn't require kernel modules.