Bien..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Pourquoi ulimit
me manque- t-il de respect d'une manière aussi barbare?
Bien..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Pourquoi ulimit
me manque- t-il de respect d'une manière aussi barbare?
Réponses:
ulimit
est spécifique au shell / processus. Sautez le sudo
.
$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384
sudo
ne pas avoir donné d'erreur lors de son adoption ulimit
; généralement, il a besoin d'un binaire externe, mais ulimit
c'est un shell intégré.
which ulimit
. Rien de surprenant.
La réponse de Daniel Beck ne dit pas toute la vérité (en fait c'est un peu un tour de passe-passe), et n'aide pas les gens qui ont réellement besoin de faire "sudo ulimit".
Le problème est que
L'exemple de Daniel ne fonctionne que dans une situation très spécifique (qui est heureusement celle par défaut).
Contre-exemple:
$ ulimit -s 8191 # set both hard and soft limits
$ ulimit -s # show current soft limit
8191
$ ulimit -s 16384 # set both hard and soft limits
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
Donc, vous définissez la limite avec ulimit -s
, et cela va définir des limites souples et strictes. Maintenant, vous ne pouvez pas le régler plus haut.
À ce stade, vous pourriez penser à essayer sudo
; mais cela ne fonctionnera pas, à cause de ce que Daniel a écrit.
$ sudo ulimit -s 16384 # maybe with sudo?
$ ulimit -s
8191
$
Ce qui s'est passé ici, c'est que a sudo
commencé un nouveau shell, où il a fonctionné ulimit
; et dans CET obus, le nouvel ulimit a été défini. Mais ensuite, cet obus a terminé son travail, a été démoli, et maintenant vous êtes de retour dans votre ancien obus avec son ulimit précédent.
Preuve:
$ ulimit -s 8191
$ ulimit -s
8191
$ sudo bash
# ulimit -s
8191
# ulimit -s 16384
# ulimit -s # It worked!
16384
# exit
exit
$ ulimit -s # ... but now we're back to the old ulimit.
8191
$
Alors, pourquoi l'exemple de Daniel a-t-il fonctionné exactement? En raison des limites matérielles et logicielles par défaut d'ulimit, il pouvait repousser la limite logicielle vers la valeur stricte. Nous pouvons le faire au ralenti pour montrer l'astuce:
$ ulimit -Ss # show the Soft limit
8192
$ ulimit -Hs # show the Hard limit
65532
$ ulimit -s # by default, shows the Soft limit
8192
$ ulimit -s 16384 # set both the Soft and Hard limit
$ ulimit -s # shows the Soft limit
16384
$ ulimit -Hs # but, gotcha! the Hard limit has also been set
16384
$ ulimit -s 16385 # so now we can't go higher
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
$
En résumé: si vous définissez votre limite stricte et que vous souhaitez la repousser, vous n'avez pas de chance dans ce shell , ... sauf si vous restez en tant que superutilisateur ou utilisez une incantation pour supprimer les privilèges par la suite.
cd
.