shell

Mandar proceos a segundo plano y recuperarlos para eliminarlos

Todo el mundo sabe que para ejecutar una orden en segundo plano o background hay que poner el símbolo '&' al final de la orden, tal que así:

$ ./STARTUP &
[1] 10998
$ 

Pero ¿y si queremos recuperarlo o eliminarlo del sistema?. El número que aparece entre corchetes hace referencia al número de tarea y el que aparece a continuación es el PID. Para recuperar el proceso enviado a background podríamos hacerlo con fg % o más simple todavía %:

$ %1

Una vez que lo tenemos recuperado podemos matarlo con CTRL+C o seguir interaccionando con el programa.

Si tenemos varios procesos ejecutándose en background y no nos acordamos de sus número de tareas podemos averiguarlo con la orden jobs:

djlongo@djlongo:~$ jobs  
[1]+   Running                ./STARTUP &
[5]+   Running                yes > /dev/null &
djlongo@djlongo:~$

Solución: -bash: /bin/rm: La lista de argumentos es demasiado larga

Si alguna vez te encuentras con el error que da título a este post cuando has intentado eliminar una gran cantidad de archivos de manera simultánea, la forma más común de solucionarlo es usando la orden 'find'. Ejemplo:

bash> find /directorio/ -name "archivos*" -exec rm {} \;

Este error se produce en sistemas que tienen el kernel de linux anterior al 2.6.23 ya que esos kernels tienen un tope en la lista de argumentos soportada.

Usando find y pasándole a rm, uno a uno los archivos a eliminar, evitamos usar una lista de argumentos grande. La contrapartida de esta solución es que ejecuta un rm por archivo con lo cual es más ineficiente.

Distribuir contenido