GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre unlink y rm?

Solución 1:

Ambos son un envoltorio de la misma función fundamental que es un unlink() llamada al sistema.

Para sopesar las diferencias entre las utilidades de la zona de usuario.

rm(1) :

  • Más opciones.
  • Más comentarios.
  • Comprobación de estado.
  • Un poco más lento para llamadas individuales como resultado de lo anterior.
  • Se puede llamar con múltiples argumentos al mismo tiempo.

unlink(1) :

  • Menos control de cordura.
  • No se pueden eliminar los directorios.
  • No se puede repetir.
  • Solo puede tomar un argumento a la vez.
  • Marginalmente más eficiente para llamadas individuales debido a su simplicidad.
  • Más lento en comparación con dar rm(1) varios argumentos.

Podrías demostrar la diferencia con:

$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'

$ touch $(seq 1 100)
$ time rm $(seq 1 100)

real    0m0.048s
user    0m0.004s
sys     0m0.008s

$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done

real    0m0.207s
user    0m0.044s
sys     0m0.112s

$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done

real    0m0.167s
user    0m0.048s
sys     0m0.120s

Sin embargo, si estamos hablando de una llamada no adulterada al sistema unlink(2) función, que ahora me doy cuenta de que probablemente no sea lo que estás teniendo en cuenta.

Puedes realizar un sistema unlink() en directorios y archivos por igual. Pero si el directorio es el padre de otros directorios y archivos, el enlace a ese padre se eliminaría, pero los hijos quedarían colgados. Lo cual es menos que ideal.

Editar:

Lo siento, aclaré la diferencia entre unlink(1) y unlink(2) . La semántica seguirá siendo diferente entre plataformas.

Solución 2:

En el nivel de especificación POSIX, lo que hace rm se especifica mucho más estrictamente que lo que hace unlink.

Es probable que la portabilidad del resultado sea mejor con rm, si su secuencia de comandos tiene que ejecutarse en todos los sistemas operativos.

Solución 3:

La parte lenta de la eliminación es el código del sistema de archivos y el disco, no la preparación del espacio de usuario de la llamada al sistema unlink().

Es decir:si la diferencia de velocidad importa, entonces no debería almacenar los datos en el sistema de archivos.

unlink es solo una "luz" de rm. rm tiene más funciones pero hacen lo mismo.


Linux
  1. ¿Cuál es la diferencia entre InnoDB y MyISAM?

  2. ¿Cuál es la diferencia entre Git Switch y Checkout?

  3. ¿Cuál es la diferencia entre strtok_r y strtok_s en C?

  4. ¿Cuál es la diferencia entre fsck y e2fsck?

  5. ¿Cuál es la diferencia entre adduser y useradd?

¿Cuál es la diferencia entre Linux y Unix?

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Cuál es la diferencia entre el comando apt y apt-get?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

¿Cuál es la diferencia entre $(CC) y $CC?