this post was submitted on 03 Dec 2023
602 points (95.6% liked)

linuxmemes

21207 readers
22 users here now

Hint: :q!


Sister communities:


Community rules (click to expand)

1. Follow the site-wide rules

2. Be civil
  • Understand the difference between a joke and an insult.
  • Do not harrass or attack members of the community for any reason.
  • Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
  • Bigotry will not be tolerated.
  • These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
  • 3. Post Linux-related content
  • Including Unix and BSD.
  • Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of sudo in Windows.
  • No porn. Even if you watch it on a Linux machine.
  • 4. No recent reposts
  • Everybody uses Arch btw, can't quit Vim, and wants to interject for a moment. You can stop now.

  • Please report posts and comments that break these rules!

    founded 1 year ago
    MODERATORS
     
    you are viewing a single comment's thread
    view the rest of the comments
    [–] MonkderZweite@feddit.ch 24 points 11 months ago (1 children)

    How did this one work again? It was something with piping in a backgrounded subshell, right?

    [–] huginn@feddit.it 103 points 11 months ago (6 children)

    It creates a new process that spins up 2 new instances of itself recursively.

    https://itsfoss.com/fork-bomb/

    here's a good explanation pulled from itsfoss.com

    [–] KISSmyOS@lemmy.world 32 points 11 months ago (1 children)

    And on a modern Linux system, there's a limit to how many can run simultaneously, so while it will bog down your system, it won't crash it. (I'm running it right now)

    [–] TheWoozy@lemmy.world 12 points 11 months ago
    [–] cashews_best_nut@lemmy.world 8 points 11 months ago

    I just did this in zsh and had to power off my machine. :(

    [–] MonkderZweite@feddit.ch 7 points 11 months ago (1 children)
    [–] huginn@feddit.it 2 points 11 months ago

    Not mine, grabbed it from the link, but it's a great explanation!

    [–] AnarchistsForDemocracy@lemmy.world 6 points 11 months ago (1 children)

    does this constitute a quine? I wrote a couple quines using bash but nothing as elegant as this

    [–] hikaru755@feddit.de 9 points 11 months ago* (last edited 11 months ago) (2 children)

    Maybe I'm missing something, but I think this doesn't print or otherwise reproduce its own source code, so it's not a quine afaict.

    [–] MacNCheezus@lemmy.today 5 points 11 months ago

    Correct. A quine is a program that prints its own source code. This one doesn't print anything.

    [–] cupcakezealot@lemmy.blahaj.zone 3 points 11 months ago (1 children)

    tom jones lesser known single

    [–] ook_the_librarian@lemmy.world 2 points 11 months ago

    Goodness, gracious, fork bomb in bash

    [–] hexabs@lemmy.world 2 points 11 months ago (2 children)

    Thanks friend. One question, is it necessary to pipe to itself? Wouldnt : & in the function body work with the same results?

    [–] kablammy@sh.itjust.works 2 points 11 months ago* (last edited 11 months ago)

    That would only add one extra process instance with each call. The pipe makes it add 2 extra processes with each call, making the number of processes grow exponentially instead of only linearly.

    Edit: Also, Im not at a computer to test this, but since the child is forked in the background (due to &), the parent is free to exit at that point, so your version would probably just effectively have 1-2 processes at a time, although the last one would have a new pid each time, so it would be impossible to get the pid and then kill it before it has already replaced itself. The original has the same "feature", but with exponentially more to catch on each recursion. Each child would be reparented by pid 1, so you could kill them by killing pid 1 i guess (although you dont want to do that... and there would be a few you wouldn't catch because they weren't reparented yet)

    [–] itslilith@lemmy.blahaj.zone 1 points 11 months ago* (last edited 11 months ago)

    I may be wrong, but you could use : &;: & as well, but using the pipe reduces the amount of characters by two (or three, counting whitespace)