GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle est la différence entre unlink et rm ?

Solution 1 :

Les deux sont un wrapper à la même fonction fondamentale qui est un unlink() appel système.

Pour peser les différences entre les utilitaires de l'espace utilisateur.

rm(1) :

  • Plus d'options.
  • Plus de commentaires.
  • Vérification de l'intégrité.
  • Un peu plus lent pour les appels uniques en raison de ce qui précède.
  • Peut être appelé avec plusieurs arguments en même temps.

unlink(1) :

  • Moins de vérifications d'intégrité.
  • Impossible de supprimer les répertoires.
  • Impossible de revenir en arrière.
  • Ne peut accepter qu'un seul argument à la fois.
  • Légèrement plus léger pour les appels uniques en raison de sa simplicité.
  • Plus lent qu'en donnant rm(1) plusieurs arguments.

Vous pourriez démontrer la différence avec :

$ 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

Si toutefois nous parlons d'un appel pur au système unlink(2) fonction, dont je réalise maintenant que ce n'est probablement pas ce que vous comptabilisez.

Vous pouvez effectuer un système unlink() sur les répertoires et les fichiers. Mais si le répertoire est un parent d'autres répertoires et fichiers, le lien vers ce parent sera supprimé, mais les enfants resteront en suspens. Ce qui est moins qu'idéal.

Modifier :

Désolé, j'ai clarifié la différence entre unlink(1) et unlink(2) . La sémantique va toujours différer d'une plate-forme à l'autre.

Solution 2 :

Au niveau de la spécification POSIX, ce que fait rm est spécifié beaucoup plus précisément que ce que fait unlink.

La portabilité du résultat semble être meilleure avec rm, si votre script doit s'exécuter sur tous les systèmes d'exploitation.

Solution 3 :

La partie lente de la suppression concerne le code du système de fichiers et les éléments du disque, pas la préparation de l'espace utilisateur de l'appel système unlink().

C'est-à-dire :si la différence de vitesse est importante, vous ne devriez pas stocker les données sur le système de fichiers.

unlink est juste un rm "light". rm a plus de fonctionnalités mais ils font la même chose.


Linux
  1. Quelle est la différence entre insmod et modprobe

  2. Quelle est la différence entre le mutex et la section critique ?

  3. Quelle est la différence entre les threads NPTL et POSIX ?

  4. Quelle est la différence entre fsck et e2fsck ?

  5. Quelle est la différence entre ls et l ?

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre la connexion et le shell sans connexion

Quelle est la différence entre la commande apt et apt-get ?

Qu'est-ce qu'un Hyperviseur ? Quelle est la différence entre les types 1 et 2 ?

Quelle est la différence entre curl et Wget ?

Quelle est la différence entre `su -` et `su --login` ?