Como evitar : () { : | : & } ; :

Humm .. recuerdo hace un par de a~os atras .. Un Flisol en el que ALGUIEN tuvo la espectacular idea de colgar un sistema Linux. En fin, no lo quiero recordar .. ni muchas personas quieren acordarse de el :)

Ok, vamos al grano.

Con el comando top podemos ver todos los procesos que se estan ejecutando. Como informacion importante, nos mostrara la cantidad de usuarios logueados en el sistema, el tiempo de encendido que lleva la maquia y esto:

Tasks: 158 total, 4 running, 154 sleeping, 0 stopped, 0 zombie

En total, tengo 158 procesos corriendo, pero al momento de ejecutar la sentencia : () { : | : & } ; : en la consola, los procesos aumentaran hasta que el sistema no sepa que hacer con ellos y acabara quedandose congelado.
Pero, podemos asignarle un numero maximo de tareas. En nuestro caso, le pondremos 1000 procesos como maximo.

Para esto, abriremos el fichero /etc/security/limits.conf y agregaremos al final del fichero lo siguiente:

* hard nproc 1000

Esto significa que:

* = todos los usuarios
hard = tendrán un límite
nproc = de número de procesos
1000 = de máximo mil procesos corriendo a la vez.

Ahora cerramos y ejecutamos : () { : | : & } ; : y vemos que ocurre ^^.

Un saludo a todos y espero que les haya servido.

Tags: , , ,

5 Responses to “Como evitar : () { : | : & } ; :”

  1. Felipe Cerda says:

    Cool, no tenia idea de esto :)

  2. a2ms says:

    buen consejo, gracias!

  3. -bash: fork: Cannot allocate memory
    -bash: fork: Cannot allocate memory
    :)

  4. admin says:

    Rodrigo Linfati :

    -bash: fork: Cannot allocate memory
    -bash: fork: Cannot allocate memory

    :)

    maximilinux@debian:~$ : () { : | : & } ; :
    [1] 14728
    maximilinux@debian:~$ bash: fork: Recurso no disponible temporalmente

  5. [...] poner la sentencia $0 & $0 & en un script, que creo que hace lo mismo que el anterior xD. (Acá hay un método para evitar esto, Gracias [...]

Leave a Reply