this post was submitted on 19 May 2024
240 points (96.9% liked)

linuxmemes

20993 readers
1721 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
    [–] [email protected] 12 points 5 months ago (1 children)

    It is driving me crazy that I have no idea what this means.

    [–] [email protected] 38 points 5 months ago* (last edited 5 months ago) (3 children)

    I believe the left hand is a shell fork-bomb, on the assumption that anything that zany is probably malicious.

    And the right hand is a way to tell Make to use up all available system resources:

    "-j [jobs]’ ¶
    ‘--jobs[=jobs]’
    Specifies the number of recipes (jobs) to run simultaneously. With no argument, make runs as many recipes simultaneously as possible. If there is more than one ‘-j’ option, the last one is effective. See Parallel Execution, for more information on how recipes are run. Note that this option is ignored on MS-DOS."
    

    Edit: I think the make command is technically only a problem when run for a Makefile that tries to do too many things, and has at least one mistake in dependency controls. So... for every Makefile I ever encountered (or that I ever wrote!)

    Yeah. They're the same picture

    [–] [email protected] 4 points 4 months ago

    so without an argument to -j the number of concurrent jobs is unbounded???

    [–] [email protected] 25 points 5 months ago* (last edited 5 months ago) (2 children)

    You are correct, left hand is a fork bomb. Specifically, it creates and then runs a function named ":". What this function does is pipe its output into itself while running in a background process, which instantly spawns infinite copies of itself. Technically I believe the : character could be any character as its just a name. The creator just picked a colon for aesthetics.

    [–] [email protected] 5 points 4 months ago

    Now I get why it does what it does and how it works. I never thought that the colon was the variable name but it makes so much sense!

    [–] [email protected] 13 points 5 months ago

    I always just kind of glazed over looking at that and just know "it's a fork bomb" and basically what it does

    With your explanation, I can now actually understand all the parts and how they work, it actually makes sense

    [–] [email protected] 6 points 5 months ago

    I think it can also get weird when you call other makefiles, like if you go make -j64 at the top level and that thing goes on to call make on subprojects, that can be a looooot of threads of that -j gets passed down. So even on that 64 core machine, now you have possibly 4096 jobs going, and it surfaces bugs that might not have been a problem when we had 2-4 cores (oh no, make is running 16 jobs at once, the horror).