Bene..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Perché ulimit
mi manca di rispetto in un modo così barbaro?
Bene..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Perché ulimit
mi manca di rispetto in un modo così barbaro?
Risposte:
ulimit
è specifico per shell / processo. Salta il sudo
.
$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384
sudo
non ha dato un errore quando passato ulimit
; di solito ha bisogno di un binario esterno, ma ulimit
è incorporato nella shell.
which ulimit
. Niente di sorprendente.
La risposta di Daniel Beck non dice tutta la verità (in effetti è un po 'un gioco di prestigio), e non aiuta le persone che hanno davvero bisogno di fare "sudo ulimit".
Il problema è che
L'esempio di Daniel funziona solo in una situazione molto specifica (che per fortuna è quella predefinita).
controesempio:
$ 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
Quindi, hai impostato il limite ulimit -s
, e quello è andato e hai impostato limiti sia soft che hard. Ora ti viene impedito di impostarlo più in alto.
A questo punto potresti pensare di provare sudo
; ma non funzionerà, a causa di ciò che Daniel ha scritto.
$ sudo ulimit -s 16384 # maybe with sudo?
$ ulimit -s
8191
$
Quello che è successo qui è che ha sudo
avviato una nuova shell, dove è stata eseguita ulimit
; e in QUELLA shell, è stato impostato il nuovo ulimit. Ma poi quella shell ha finito il suo lavoro, è stata demolita, e ora sei tornato nella tua shell precedente con il suo precedente ulimit.
Prova:
$ 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
$
Allora, perché ha funzionato esattamente l'esempio di Daniel? A causa dei limiti hard e soft predefiniti di ulimit, poteva spingere il limite soft a quello hard. Possiamo farlo al rallentatore per mostrare il trucco:
$ 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
$
In sintesi: se imposti il tuo limite rigido e vuoi aumentarlo, sei sfortunato in quella shell , ... a meno che tu non rimanga un superutente o usi un incantesimo per abbandonare i privilegi in seguito.
cd
.