Apa hubungan antara `launchctl limit` dan` ulimit`?

11

Tidak ada konfigurasi ulimit dalam file startup sistem / skrip startup shell.

ulimit -a menunjukkan:

-u: processes                       1064
-n: file descriptors                256

launchctl limit menunjukkan:

maxproc     2048           2048           
maxfiles    2048           2048

Samar-samar saya ingat bahwa batasan launchctl harus cocok dengan output ulimit shell, saya mungkin salah.

Apakah ada hubungan antara batas lauchctl dan ulimit?

Howard
sumber
Apakah Anda tidak mendapatkan jawaban yang memuaskan dari halaman manual perintah?
Andrew U.
@AndrewU. halaman manual launchctl tidak menyebutkan batas, halaman manual ulimit tidak menyebutkan launchctl atau launchd.
Howard

Jawaban:

10

Dalam shell, ulimit menyediakan "kontrol atas sumber daya yang tersedia untuk shell dan untuk proses yang dimulai olehnya" (lihat man bash). Karena itu, ia hanya berlaku untuk cangkang dan anak-anaknya. Batasan untuk launchd terkait dengannya dan proses yang dikelolanya. Keduanya terpisah.

Program individu dapat menetapkan batas sumber daya mereka sendiri dengan memanggil rutin Perpustakaan C Standar ulimit()atau getrlimit()dan setrlimit(). Batas sumber daya tertentu tidak dapat ditinggikan kecuali prosesnya berjalan sebagai pengguna super.

Sebagai contoh praktis, saya men-debug proyek perangkat lunak besar dan batas default shell untuk jumlah file yang terbuka tidak cukup besar. Dalam file .bashrc saya, saya memiliki yang berikut ini:

# Increase the upper limit on the number of open files:
ulimit -n 1024

Sekarang debugger saya tidak akan mengeluh bahwa itu tidak dapat membuka semua file yang dibutuhkan. Jelas, ini seharusnya tidak berdampak pada launchd.

ithos67
sumber
1
Untuk menguraikannya: pengaturan default ulimit berasal dari launchctl limit; meskipun pengguna dapat mengubah nomor ulimit, namun mereka mungkin tidak melebihi launchctl limitbatas keras.
Howard
ini akan diatur ulang saat reboot
engineerDave