Je suis surpris de sudone pas avoir donné d'erreur lors de son adoption ulimit; généralement, il a besoin d'un binaire externe, mais ulimitc'est un shell intégré.
amphetamachine
@amphetamachine Check out which ulimit. Rien de surprenant.
Daniel Beck
Cette réponse est horriblement trompeuse et inutile, même si elle est basée sur un grain de vérité.
hmijail pleure les démissionnaires
3
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
ulimit a des limites douces et dures
une fois que vous avez défini la limite stricte, vous devez être superutilisateur pour la définir plus haut
sudo démarre un nouveau shell; quand vous le quittez, vous êtes de retour à votre ancien ulimit!
Explication détaillée
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.
Ce qui s'est passé ici, c'est que a sudocommencé 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
.Réponses:
ulimit
est spécifique au shell / processus. Sautez lesudo
.la source
sudo
ne pas avoir donné d'erreur lors de son adoptionulimit
; généralement, il a besoin d'un binaire externe, maisulimit
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
Explication détaillée
L'exemple de Daniel ne fonctionne que dans une situation très spécifique (qui est heureusement celle par défaut).
Contre-exemple:
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.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:
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:
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.
la source