Tốt..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Tại sao lại ulimit
thiếu tôn trọng tôi một cách dã man như vậy?
Tốt..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Tại sao lại ulimit
thiếu tôn trọng tôi một cách dã man như vậy?
Câu trả lời:
ulimit
là vỏ / quy trình cụ thể. Bỏ qua sudo
.
$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384
sudo
đã không đưa ra một lỗi khi thông qua ulimit
; thông thường nó cần một nhị phân bên ngoài, nhưng ulimit
là một vỏ dựng sẵn.
which ulimit
. Không có gì đáng ngạc nhiên về nó.
Câu trả lời của Daniel Beck không nói lên tất cả sự thật (thực tế đó là sự nhẹ nhàng của bàn tay) và không giúp mọi người thực sự cần phải thực hiện "sudo ulimit".
Vấn đề là ở đó
Ví dụ của Daniel chỉ hoạt động trong một tình huống rất cụ thể (may mắn là tình huống mặc định).
Ví dụ:
$ 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
Vì vậy, bạn đặt giới hạn với ulimit -s
, và điều đó đã đi và đặt cả giới hạn mềm và giới hạn cứng. Bây giờ bạn bị chặn không đặt nó cao hơn.
Tại thời điểm này bạn có thể nghĩ để thử sudo
; nhưng nó sẽ không hoạt động, vì những gì Daniel đã viết.
$ sudo ulimit -s 16384 # maybe with sudo?
$ ulimit -s
8191
$
Điều xảy ra ở đây là sudo
bắt đầu một lớp vỏ mới, nơi nó chạy ulimit
; và trong vỏ THAT, ulimit mới đã được thiết lập. Nhưng sau đó, cái vỏ đó đã hoàn thành công việc của nó, đã bị phá hủy, và bây giờ bạn trở lại trong vỏ trước đó với sự lo lắng trước đó.
Bằng chứng:
$ 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
$
Vậy tại sao chính xác ví dụ của Daniel làm việc? Do giới hạn cứng và mềm mặc định của ulimit, anh ta có thể đẩy giới hạn mềm đến giới hạn cứng. Chúng ta có thể làm điều đó trong chuyển động chậm để hiển thị mẹo:
$ 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
$
Tóm lại: nếu bạn đặt giới hạn cứng của mình và muốn đẩy nó lên, bạn sẽ không gặp may trong vỏ đó , ... trừ khi bạn ở lại làm siêu người dùng hoặc sử dụng một số câu thần chú để bỏ đặc quyền sau đó.
cd
.