ulimit
trong Linux là lệnh dùng để kiểm soát giới hạn tài nguyên mà người dùng hoặc tiến trình có thể sử dụng. Bài viết này sẽ giúp bạn hiểu rõ ulimit
là gì, cú pháp và các tùy chọn thường dùng để giới hạn tài nguyên như số file mở, bộ nhớ, số tiến trình, v.v. Bạn cũng sẽ được hướng dẫn cách kiểm tra và phân biệt soft limit với hard limit, cũng như chỉnh sửa file limits.conf
để thiết lập giới hạn vĩnh viễn. Ngoài ra, phần ví dụ thực tế sẽ giúp bạn áp dụng ulimit
hiệu quả trong quản trị hệ thống hoặc tối ưu dịch vụ trên VPS.
Điểm chính cần nắm
- Lệnh ulimit là gì?: Giới thiệu chức năng và vai trò của lệnh
ulimit
trong việc giới hạn tài nguyên trên Linux. - File limits.conf là gì?: Trình bày vai trò của file
limits.conf
trong việc thiết lập giới hạn tài nguyên vĩnh viễn. - Cú pháp lệnh ulimit: Tóm tắt cách viết và sử dụng cú pháp cơ bản của lệnh
ulimit
. - Các tùy chọn (flag) trong ulimit: Tổng hợp các tùy chọn thường dùng để giới hạn tài nguyên khác nhau.
- [limit] là gì?: Giải thích khái niệm limit, phân biệt soft limit và hard limit trong hệ thống.
- Ví dụ cách sử dụng lệnh ulimit trong Linux: Trình bày các ví dụ thực tế khi áp dụng
ulimit
trong quản trị hệ thống. - Chỉnh sửa limits.conf để thay đổi giới hạn soft hoặc hard: Hướng dẫn cách chỉnh sửa file
limits.conf
để cấu hình giới hạn tài nguyên lâu dài. - Giải pháp VPS chất lượng từ Vietnix – Nền tảng vững chắc cho hệ thống của bạn: Giới thiệu dịch vụ VPS hiệu suất cao từ Vietnix giúp tối ưu và bảo vệ hệ thống.
- FAQ: Giải đáp các câu hỏi thường gặp liên quan đến lệnh
ulimit
và giới hạn tài nguyên trong Linux.
Lệnh ulimit
là gì?
ulimit
là một lệnh tích hợp trong shell Linux dùng để hiển thị hoặc thiết lập giới hạn tài nguyên hệ thống mà một tiến trình hoặc người dùng có thể sử dụng trong phiên làm việc hiện tại. Giới hạn này bao gồm các tài nguyên như số lượng file có thể mở, dung lượng bộ nhớ, số tiến trình, kích thước file, v.v. Việc thiết lập các giới hạn giúp bảo vệ hệ thống khỏi việc lạm dụng tài nguyên, đảm bảo hiệu suất và độ ổn định tổng thể.
Ví dụ:
ulimit -n 2048
Lệnh trên giới hạn số lượng file có thể mở cùng lúc trong shell hiện tại là 2048.
Lưu ý
Thay đổi bằng ulimit
chỉ có hiệu lực tạm thời, mất hiệu lực sau khi đăng xuất hoặc khởi động lại hệ thống.

File limits.conf
là gì?
limits.conf
là một file cấu hình trong Linux dùng để thiết lập giới hạn tài nguyên mặc định cho từng người dùng hoặc nhóm. File này được hệ thống đọc khi người dùng đăng nhập và thường được sử dụng để đảm bảo rằng giới hạn tài nguyên được áp dụng tự động và ổn định sau mỗi lần khởi động hệ thống.
Đường dẫn của file là: /etc/security/limits.conf
. Trong file này, bạn có thể cấu hình cả giới hạn soft limit và hard limit cho từng loại tài nguyên.
Ví dụ:
Vietnix hard nofile 4096
Vietnix soft nofile 1024
Dòng trên giới hạn người dùng Vietnix
có thể mở tối đa 4096 file, và mặc định sẽ chỉ mở tối đa 1024 file nếu không thay đổi bằng ulimit
.
Cú pháp lệnh ulimit
ulimit [flags][limit]
- Nếu không kèm theo tham số, lệnh sẽ in ra giới hạn hiện tại cho tài nguyên mặc định (thường là file size).
- Có thể dùng các tùy chọn để xem hoặc đặt giới hạn cụ thể.
Ví dụ:
ulimit -m 15000
Lệnh này được sử dụng để đặt giới hạn bộ nhớ vật lý mà một tiến trình có thể sử dụng. Giá trị 15000
ở đây là số kilobyte (KB). Nếu bạn đặt giá trị này, tiến trình chỉ có thể sử dụng tối đa 15,000KB (15MB) bộ nhớ vật lý.
Các tùy chọn (flag
) trong ulimit
Lệnh ulimit
hỗ trợ nhiều tùy chọn để kiểm tra hoặc giới hạn từng loại tài nguyên hệ thống cụ thể. Dưới đây là danh sách đầy đủ, được chia theo mục đích sử dụng:
1. Giới hạn chung (thường dùng nhất)
Tùy chọn | Mô tả |
---|---|
-a | Hiển thị tất cả giới hạn hiện tại |
-H | Áp dụng hoặc hiển thị hard limit |
-S | Áp dụng hoặc hiển thị soft limit |
-n | Số lượng file mô tả mà tiến trình có thể mở |
-u | Số lượng tiến trình mà người dùng có thể tạo |
-f | Kích thước file tối đa (block 512B) |
-v | Bộ nhớ ảo tối đa tiến trình được phép sử dụng |
-s | Kích thước stack |
2. Giới hạn bộ nhớ & xử lý
Tùy chọn | Mô tả |
---|---|
-m | Bộ nhớ vật lý tối đa (KB) |
-d | Dung lượng vùng dữ liệu (data segment) (KB) |
-l | Dung lượng bộ nhớ có thể khóa |
-c | Kích thước file core dump (block 512B) |
-r | Số lượng thread tối đa |
-R | Thời gian chạy tối đa (microseconds) |
-t | Thời gian thực thi tối đa (giây) |
3. Giới hạn chuyên sâu khác
Tùy chọn | Mô tả |
---|---|
-b | Kích thước bộ đệm socket tối đa |
-e | Độ ưu tiên của tiến trình (nice value) |
-i | Số lượng tín hiệu chờ xử lý tối đa |
-k | Số lượng hàng đợi được cấp phát tối đa |
-p | Kích thước buffer pipe |
-P | Số lượng pseudoterminal tối đa |
-q | Số byte tối đa trong POSIX message queue |
-T | Số lượng thread tối đa |
-x | Số lượng file locks tối đa |
Lưu ý
Nếu hệ thống của bạn không hỗ trợ một tính năng nhất định, thì các tùy chọn (flag
) tương ứng trong lệnh ulimit
sẽ không hoạt động.
[limit] là gì?
Trong lệnh ulimit
, [limit]
là giá trị số mà bạn muốn gán cho một giới hạn tài nguyên cụ thể. Nếu bạn không chỉ định giá trị, lệnh sẽ hiển thị giới hạn hiện tại, mặc định là soft limit, trừ khi bạn dùng thêm cờ -H
.
Ví dụ:
ulimit -n # Xem số lượng file có thể mở (soft limit)
ulimit -Sn # Cũng xem soft limit
ulimit -Hn # Xem giới hạn cứng
ulimit -n 1024 # Đặt lại cả soft và hard limit nếu không chỉ rõ -S hoặc -H
So sánh Soft Limit và Hard Limit
Loại giới hạn | Đặc điểm |
---|---|
Soft Limit | – Áp dụng tức thì. – Người dùng bình thường có thể thay đổi (nhưng không vượt quá hard limit). |
Hard Limit | – Là giới hạn tối đa tuyệt đối. – Chỉ root mới có thể tăng. – Người dùng bình thường có thể giảm. |
Tóm lại: Soft limit thường dùng để giới hạn tạm thời trong phiên terminal, còn hard limit áp dụng ở mức hệ thống và bền vững hơn.
Cách xem giới hạn hiện tại
- Xem tất cả soft limit:
ulimit -Sa

- Xem tất cả hard limit:
ulimit -Ha

Giá trị thoát (Exit Values) của lệnh ulimit
0
: Lệnh thành công.>0
: Có lỗi xảy ra, chẳng hạn như:- Bạn cố tăng giới hạn vượt quá hard limit.
- Tùy chọn không được hỗ trợ.
- Thiếu quyền (không phải root mà cố thay đổi hard limit).
Ví dụ cách sử dụng lệnh ulimit
trong Linux
Lệnh ulimit
giúp bạn kiểm tra hoặc giới hạn mức sử dụng tài nguyên hệ thống của người dùng hiện tại. Đây là công cụ quan trọng để quản lý hiệu suất và bảo mật hệ thống, đặc biệt là trên các máy chủ nhiều người dùng.
1. Kiểm tra nhanh giới hạn tài nguyên
Lệnh ulimit
được dùng để xem hoặc thiết lập giới hạn tài nguyên hệ thống mà người dùng hiện tại có thể sử dụng. Để chạy lệnh này, bạn chỉ cần nhập:
ulimit
Lệnh trên sẽ hiển thị giới hạn mặc định cho một loại tài nguyên cụ thể (thường là kích thước file có thể tạo). Nếu hệ thống hiển thị giá trị unlimited
, điều đó có nghĩa là không có giới hạn đang được áp dụng cho tài nguyên đó. Để xem hoặc cấu hình chi tiết các giới hạn khác, bạn có thể sử dụng các tùy chọn (flag) kèm theo ulimit
.

2. Xem tất cả giới hạn tài nguyên hiện tại
Để hiển thị đầy đủ các giới hạn tài nguyên hiện tại của người dùng, bạn sử dụng tùy chọn -a
:
ulimit -a
Lệnh này sẽ in ra danh sách toàn bộ giới hạn đang áp dụng, bao gồm:
- Số tiến trình tối đa có thể tạo
- Số lượng file có thể mở đồng thời
- Kích thước tối đa của file có thể tạo
- Kích thước bộ nhớ ảo, bộ nhớ khóa
- Kích thước stack
- Kích thước vùng dữ liệu
- Kích thước core dump
- Và nhiều thông số hệ thống khác
Thông qua đó, bạn có thể nắm rõ hệ thống đang giới hạn những gì, từ đó điều chỉnh phù hợp với nhu cầu sử dụng hoặc mục đích bảo mật.

3. Giới hạn số tiến trình của người dùng
Bạn có thể giới hạn số tiến trình tối đa mà người dùng được phép tạo bằng tùy chọn -u
. Ví dụ, lệnh sau sẽ giới hạn người dùng chỉ có thể tạo tối đa 10 tiến trình:
ulimit -u 10
Giới hạn này chỉ cho phép người dùng tạo tối đa 10 tiến trình. Điều này giúp tránh tình trạng chiếm dụng toàn bộ CPU hoặc RAM, và đặc biệt hữu ích để ngăn chặn tấn công dạng fork bomb.
Ví dụ:
- Đặt giới hạn tiến trình:
ulimit -u 10
- Thử chạy fork bomb (không khuyến nghị thực hiện trên hệ thật):
:(){ :|:& };:
Với giới hạn đã đặt, fork bomb không thể tạo đủ tiến trình để gây hại và hệ thống vẫn hoạt động bình thường.

Lưu ý
Đây là một biện pháp phòng thủ hiệu quả, đặc biệt trong các hệ thống multi-user hoặc máy chủ hosting.
4. Giới hạn kích thước file có thể tạo
Tùy chọn -f
cho phép bạn đặt giới hạn kích thước tối đa (tính theo block 512 byte) cho các file mà người dùng có thể tạo. Ví dụ: để giới hạn kích thước file là 50KB, bạn chạy lệnh sau:
ulimit -f 50.
# Vì 1 block = 512 byte nên 50KB tương đương với 100 block.
Giới hạn trên khiến người dùng không thể tạo file lớn hơn 50KB. Nếu thử tạo file lớn hơn, hệ thống sẽ báo lỗi “File size limit exceeded”.
Kiểm tra giới hạn
- Sau khi đặt giới hạn, bạn có thể kiểm tra bằng cách thử tạo một file vượt quá 50KB. Ví dụ:
cat /dev/zero > file

- Kết quả sẽ là lỗi:
File size limit exceeded
- Lúc này, kiểm tra dung lượng của file bằng lệnh:
ls -lh file

Kết quả sẽ cho thấy file đúng bằng 50KB, vì hệ thống đã cắt ngay khi chạm ngưỡng giới hạn.
Lưu ý
Giới hạn này rất hữu ích trong các môi trường dùng chung (multi-user) hoặc để kiểm soát hành vi ghi file bất thường trên hệ thống.
5. Giới hạn bộ nhớ ảo (virtual memory)
Tùy chọn -v
cho phép đặt giới hạn bộ nhớ ảo tối đa mà một tiến trình được phép sử dụng, tính bằng kilobyte.
Ví dụ: Mình sẽ tạo giới hạn bộ nhớ ảo là 1000KB, dùng lệnh:
ulimit -v 1000
Tác dụng:
- Tránh tình trạng thrashing – khi hệ thống liên tục hoán đổi bộ nhớ giữa RAM và swap, khiến hiệu suất giảm mạnh.
- Ngăn chặn tiến trình sử dụng quá nhiều bộ nhớ ảo.
Lưu ý
Nếu một tiến trình cố vượt quá giới hạn này, hệ thống sẽ tự động dừng tiến trình đó.
6. Giới hạn số lượng file mở cùng lúc
Tùy chọn -n
giới hạn số lượng file descriptor mà người dùng hoặc tiến trình có thể mở cùng lúc.
Ví dụ: Để giới hạn tối đa chỉ mở được 5 file, bạn dùng:
ulimit -n 5
Cách kiểm tra:
Sau khi thiết lập, bạn thử mở nhiều file bằng trình soạn thảo hoặc script. Nếu vượt quá giới hạn, bạn sẽ gặp lỗi như: Too many open files

Ứng dụng:
- Hữu ích trong môi trường multi-user để ngăn việc chiếm dụng tài nguyên hệ thống quá mức.
- Giúp bảo vệ hệ thống khỏi các tiến trình bị lỗi (hoặc mã độc) mở quá nhiều file gây cạn kiệt tài nguyên.
Mẹo: Để kiểm tra nhanh số file đã mở của một tiến trình, bạn có thể dùng lệnh: lsof -p | wc -l
Chỉnh sửa limits.conf để thay đổi giới hạn soft hoặc hard
Để thiết lập giới hạn tài nguyên một cách vĩnh viễn, bạn cần chỉnh sửa file cấu hình limits.conf
. Đây là nơi ulimit
lấy giá trị khi khởi động shell trong các phiên đăng nhập thông qua PAM (Pluggable Authentication Modules).
Tập tin này không áp dụng cho tất cả trường hợp. Cụ thể:
limits.conf
chỉ có hiệu lực với phiên đăng nhập thông qua PAM (như SSH, login trực tiếp).- Với các dịch vụ chạy bằng
systemd
, bạn nên dùng các tham sốLimit*
trong file service, hoặc chỉnh tại/etc/systemd/system.conf
và/etc/systemd/user.conf
nếu muốn cấu hình toàn hệ thống.
Các bước thực hiện:
- Bước 1: Mở terminal và chuyển đến thư mục chứa file:
cd /etc/security
- Bước 2: Mở file
limits.conf
bằng trình soạn thảo văn bản, ví dụ vớivim
:sudo vim limits.conf
- Bước 3: Thêm hoặc chỉnh sửa dòng cấu hình theo cú pháp:
<domain> <type> <item> <value>
Trong đó:
<domain>
: Tên người dùng, nhóm hoặc ký tự đại diện*
(tất cả người dùng),%groupname
(nhóm).<type>
:soft limit
hoặchard limit
.<item>
: Loại tài nguyên muốn giới hạn (nhưnofile
,nproc
,fsize
,rss
, v.v).<value>
: Giá trị cụ thể cho giới hạn (số nguyên).

Ví dụ:
@developers hard nofile 10000
@developers soft nofile 5000
Vietnix hard nproc 100
Vietnix soft nproc 50
* soft core 0
Giải thích:
- Nhóm
developers
chỉ được mở tối đa 10.000 file (giới hạn cứng), mặc định là 5.000 (soft limit
). - Người dùng
Vietnix
chỉ được chạy tối đa 100 tiến trình. - Tất cả người dùng (
*
) không được tạo file core dump (soft limit là 0).
Lưu ý
Sau khi chỉnh sửa, bạn cần đăng xuất và đăng nhập lại để giới hạn có hiệu lực (hoặc khởi động lại dịch vụ với systemd nếu áp dụng bằng
Limit*
).ulimit chỉ đặt giới hạn tạm thời, hiệu lực chỉ trong phiên shell hiện tại. Nếu bạn muốn giới hạn áp dụng sau mỗi lần đăng nhập, phải cấu hình trong
limits.conf
hoặc systemd.
Giải pháp VPS chất lượng từ Vietnix – Nền tảng vững chắc cho hệ thống của bạn
Vietnix là đơn vị cung cấp dịch vụ VPS và hosting hiệu suất cao, đáp ứng nhu cầu tăng tốc website, đảm bảo tính ổn định và an toàn trong vận hành. Với hạ tầng máy chủ hiện đại đặt tại các trung tâm dữ liệu đạt chuẩn, cùng đội ngũ kỹ thuật giàu kinh nghiệm, Vietnix cam kết mang đến dịch vụ lưu trữ chất lượng, bảo mật tiên tiến và hỗ trợ khách hàng 24/7. Từ website cá nhân đến hệ thống doanh nghiệp, dịch vụ tại Vietnix giúp bạn yên tâm về hiệu suất và độ tin cậy trong mọi tình huống.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP HCM.
Câu hỏi thường gặp
Lệnh ulimit có thể thay đổi giới hạn tài nguyên không?
Có, lệnh ulimit
cho phép thay đổi các giới hạn tài nguyên tạm thời của người dùng trong phiên làm việc hiện tại.
Lệnh ulimit
có thể lưu lại sau khi reboot không?
Mặc định, giới hạn thay đổi qua lệnh ulimit
sẽ không được lưu lại sau khi reboot. Để lưu lại vĩnh viễn, cần cấu hình trong file như limits.conf
hoặc thông qua systemd.
Cách thiết lập ulimit vĩnh viễn trong Linux?
Để cấu hình ulimit
vĩnh viễn, bạn cần chỉnh sửa các file cấu hình như /etc/security/limits.conf
và /etc/pam.d/common-session
.
Làm sao để thay đổi giới hạn ulimit cho tất cả người dùng trong Linux?
Cấu hình limits.conf
trong /etc/security/limits.conf
để thay đổi giới hạn tài nguyên cho tất cả người dùng hệ thống.
Sự khác biệt giữa giới hạn trên ulimit
, limits.conf
và systemd
là gì?
ulimit
thay đổi tạm thời trong phiên làm việc, limits.conf
cấu hình vĩnh viễn cho người dùng và nhóm người dùng, trong khi systemd
có thể quản lý giới hạn tài nguyên cho các dịch vụ hệ thống.
Có thể thiết lập giới hạn tài nguyên cho một dịch vụ cụ thể trong systemd
không?
Có, bạn có thể thiết lập giới hạn tài nguyên cho dịch vụ cụ thể trong file cấu hình service
của systemd
bằng cách sử dụng các tham số như LimitNOFILE
, LimitNPROC
, v.v.
Tại sao không thể thay đổi giới hạn ulimit cho một tiến trình nếu không chạy dưới quyền root?
Giới hạn ulimit
không thể vượt quá giá trị hard limit
. Người dùng thông thường không thể thay đổi hard limit
mà phải có quyền root để thực hiện thay đổi này.
Tại sao giới hạn tài nguyên của ulimit
có thể không hiệu quả trên các hệ thống sử dụng systemd
?
ulimit
chỉ áp dụng cho phiên làm việc của người dùng, trong khi systemd
kiểm soát tài nguyên của các dịch vụ. Cần cấu hình thêm thông qua systemd để áp dụng giới hạn tài nguyên cho dịch vụ.
Lời kết
Sử dụng hiệu quả lệnh ulimit
giúp bạn kiểm soát tài nguyên hệ thống tốt hơn, tăng độ ổn định và giảm rủi ro quá tải. Nếu bạn có bất cứ thắc mắc nào liên quan đến cách dùng ulimit
, cấu hình limits.conf
hoặc tối ưu giới hạn tài nguyên cho VPS, đừng ngần ngại để lại bình luận. Bạn cũng có thể liên hệ đội ngũ kỹ thuật tại Vietnix để được hỗ trợ chuyên sâu. Cùng khai thác tối đa hiệu suất hệ thống với công cụ có sẵn từ Linux.
Mọi người cũng xem: