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

  • sebsch
    link
    fedilink
    arrow-up
    14
    arrow-down
    1
    ·
    6 hours ago

    Try it out on your own system.

    :(){
     :|:&
    };:
    

    It’s totally possible

      • bi_tux@lemmy.worldOP
        link
        fedilink
        arrow-up
        6
        ·
        5 hours ago

        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
          link
          fedilink
          arrow-up
          1
          ·
          5 hours ago

          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.worldOP
            link
            fedilink
            arrow-up
            2
            ·
            edit-2
            5 hours ago

            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
              link
              fedilink
              arrow-up
              4
              ·
              4 hours ago

              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.worldOP
                link
                fedilink
                arrow-up
                1
                ·
                edit-2
                2 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