Saya terkejut sudotidak memberikan kesalahan ketika melewati ulimit; biasanya membutuhkan biner eksternal, tetapi ulimitshell builtin.
amphetamachine
@amphetamachine Lihat which ulimit. Tidak ada yang mengejutkan tentang itu.
Daniel Beck
Jawaban ini sangat menyesatkan dan tidak membantu, bahkan jika didasarkan pada butir kebenaran.
hmijail meratapi orang-orang yang mengundurkan diri
3
Jawaban Daniel Beck tidak mengatakan yang sebenarnya (sebenarnya itu sulap), dan tidak membantu orang yang perlu melakukan "sudo ulimit".
Masalahnya adalah
ulimit memiliki batas lunak dan keras
setelah Anda menetapkan batas keras, Anda harus menjadi superuser untuk mengembalikannya lebih tinggi
sudo memulai sebuah shell baru; ketika Anda keluar, Anda kembali ke ulimit lama Anda!
Penjelasan detail
Contoh Daniel hanya berhasil dalam situasi yang sangat spesifik (yang untungnya adalah default).
Contoh tandingan:
$ 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
Jadi, Anda mengatur batas dengan ulimit -s, dan itu pergi dan menetapkan batas lunak dan keras. Sekarang Anda diblokir dari pengaturan yang lebih tinggi.
Pada titik ini Anda mungkin berpikir untuk mencoba sudo; tetapi itu tidak akan berhasil, karena apa yang ditulis Daniel.
Apa yang terjadi di sini adalah sudomemulai shell baru, tempat shell itu berlari ulimit; dan di shell ITU, ulimit baru ditetapkan. Tetapi kemudian shell itu menyelesaikan pekerjaannya, dihancurkan, dan sekarang Anda kembali ke shell sebelumnya dengan ulimit sebelumnya.
Bukti:
$ 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
$
Jadi, mengapa teladan Daniel bekerja? Karena batas keras dan lunak standar ulimit, ia dapat mendorong batas lunak ke batas keras. Kita bisa melakukannya dengan gerakan lambat untuk menunjukkan triknya:
$ 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
$
Singkatnya: jika Anda menetapkan batas keras dan ingin mendorongnya, Anda kurang beruntung dalam shell itu , ... kecuali Anda tetap sebagai pengguna super atau menggunakan mantra untuk menjatuhkan hak istimewa setelahnya.
cd
.Jawaban:
ulimit
adalah shell / proses khusus. Lewatisudo
.sumber
sudo
tidak memberikan kesalahan ketika melewatiulimit
; biasanya membutuhkan biner eksternal, tetapiulimit
shell builtin.which ulimit
. Tidak ada yang mengejutkan tentang itu.Jawaban Daniel Beck tidak mengatakan yang sebenarnya (sebenarnya itu sulap), dan tidak membantu orang yang perlu melakukan "sudo ulimit".
Masalahnya adalah
Penjelasan detail
Contoh Daniel hanya berhasil dalam situasi yang sangat spesifik (yang untungnya adalah default).
Contoh tandingan:
Jadi, Anda mengatur batas dengan
ulimit -s
, dan itu pergi dan menetapkan batas lunak dan keras. Sekarang Anda diblokir dari pengaturan yang lebih tinggi.Pada titik ini Anda mungkin berpikir untuk mencoba
sudo
; tetapi itu tidak akan berhasil, karena apa yang ditulis Daniel.Apa yang terjadi di sini adalah
sudo
memulai shell baru, tempat shell itu berlariulimit
; dan di shell ITU, ulimit baru ditetapkan. Tetapi kemudian shell itu menyelesaikan pekerjaannya, dihancurkan, dan sekarang Anda kembali ke shell sebelumnya dengan ulimit sebelumnya.Bukti:
Jadi, mengapa teladan Daniel bekerja? Karena batas keras dan lunak standar ulimit, ia dapat mendorong batas lunak ke batas keras. Kita bisa melakukannya dengan gerakan lambat untuk menunjukkan triknya:
Singkatnya: jika Anda menetapkan batas keras dan ingin mendorongnya, Anda kurang beruntung dalam shell itu , ... kecuali Anda tetap sebagai pengguna super atau menggunakan mantra untuk menjatuhkan hak istimewa setelahnya.
sumber