Ubuntu — Hệ điều hành mình yêu thích nhất
Linux

Windows rất phổ biến. macOS có hệ sinh thái phần cứng và phần mềm được kiểm soát chặt chẽ. Nhưng nếu phải chọn một hệ điều hành mà mình thích sử dụng nhất cho công việc kỹ thuật, mình chọn Ubuntu.
Không phải vì Ubuntu hoàn hảo.
Mà bởi vì Ubuntu cho mình cảm giác rằng: mình thực sự đang làm chủ chiếc máy tính của mình.
Mình đến với Ubuntu như thế nào?
Ban đầu, mình đến với Ubuntu vì công việc.
Là một developer, đặc biệt khi làm backend và DevOps, mình thường xuyên phải làm việc với Linux server, Docker, Nginx, PostgreSQL, Redis, Git, SSH và các công cụ command-line.
Dần dần mình nhận ra một điều:
Nếu mình đã phải làm việc với Linux server mỗi ngày, tại sao không sử dụng Linux luôn trên máy cá nhân?
Từ đó, Ubuntu trở thành môi trường làm việc chính của mình.
Hiện tại, phần lớn những thứ mình làm hằng ngày đều có thể thực hiện trực tiếp trên Ubuntu:
Code
Git
Docker
SSH
Linux
Node.js
PostgreSQL
Redis
Nginx
CI/CD
Debug production
Và quan trọng hơn, mình không cảm thấy những thứ này là các công cụ tách rời nhau.
Chúng nằm trong cùng một môi trường.
Ubuntu cho mình một môi trường development rất gần production
Đây có lẽ là lý do lớn nhất khiến mình thích Ubuntu.
Một ngày làm việc của mình có thể bắt đầu bằng:
git pull
Sau đó:
npm install
npm run dev
Kiểm tra Docker:
docker ps
docker logs <container>
SSH vào server:
ssh user@server
Kiểm tra process:
htop
Kiểm tra disk:
df -h
Kiểm tra memory:
free -h
Kiểm tra network:
ss -tulpn
Nhìn qua thì đây chỉ là những command đơn giản.
Nhưng khi làm việc lâu với Linux, mình bắt đầu hiểu rằng phía sau những command đó là cả một hệ thống.
Process.
Memory.
Filesystem.
Network.
Permission.
Service.
Port.
Container.
Kernel.
Terminal thay đổi cách mình làm việc
Có một giai đoạn mình nghĩ terminal chỉ là một công cụ dành cho những người thích “gõ lệnh”.
Sau này mình nhận ra terminal không chỉ là một cách điều khiển máy tính.
Nó là một cách tư duy về hệ thống.
Ví dụ khi một ứng dụng không hoạt động, mình không chỉ nhìn vào giao diện.
Mình bắt đầu hỏi:
Process có chạy không?
↓
Port có mở không?
↓
Container có healthy không?
↓
Application có log lỗi không?
↓
Database có kết nối được không?
↓
Network có vấn đề không?
↓
Permission có đúng không?
Từ đó, việc debug không còn là:
"Thử restart xem có chạy không."
Mà trở thành:
"Hệ thống đang sai ở layer nào?"
Đây là một trong những thay đổi lớn nhất trong cách mình làm engineering.
Docker + Ubuntu
Nếu Ubuntu là nền tảng thì Docker gần như trở thành một phần tự nhiên trong môi trường làm việc của mình.
Một hệ thống web hiện đại có thể gồm:
Next.js
↓
NestJS
↓
PostgreSQL
↓
Redis
↓
Worker
↓
Nginx
Thay vì cài tất cả trực tiếp lên máy, mình có thể đóng gói chúng thành các container.
Ví dụ:
docker compose up -d
Sau đó:
docker compose ps
Kiểm tra log:
docker compose logs -f backend
Restart một service:
docker compose restart backend
Những thao tác này trở thành một phần rất tự nhiên trong công việc hằng ngày.
Ubuntu + Docker cho mình một môi trường rất gần với cách mình triển khai hệ thống thật trên server.
Ubuntu khiến mình hiểu Linux sâu hơn
Một điều thú vị là ban đầu mình dùng Ubuntu để code.
Sau đó mình bắt đầu học Linux vì công việc.
Rồi cuối cùng mình nhận ra:
Ubuntu không chỉ là một desktop operating system đối với mình.
Nó trở thành môi trường để học về computer systems.
Mình bắt đầu quan tâm đến:
Filesystem
Process
Thread
Memory
CPU
Network
TCP/IP
DNS
SSH
Permission
Systemd
Logs
Containers
Reverse Proxy
Ví dụ một câu hỏi rất đơn giản:
"Tại sao website không truy cập được?"
Có thể dẫn đến hàng chục câu hỏi khác:
DNS
↓
IP
↓
Firewall
↓
Port
↓
Nginx
↓
Docker
↓
Container
↓
Application
↓
Database
Đó là lúc Linux trở nên thú vị.
Ubuntu cũng cho mình nhiều quyền kiểm soát
Mình thích việc có thể nhìn thấy và kiểm soát rất nhiều thứ trên hệ thống.
Muốn biết process nào đang chạy?
ps aux
Muốn biết process nào đang chiếm port?
ss -tulpn
Muốn biết disk đang dùng bao nhiêu?
df -h
Muốn xem thư mục nào chiếm nhiều dung lượng?
du -sh *
Muốn xem log service?
journalctl
Muốn kiểm tra service?
systemctl status <service>
Không cần phải đi qua quá nhiều lớp abstraction.
Mình có thể đi thẳng xuống hệ thống.
Và đối với một người làm backend, infrastructure và DevOps, cảm giác đó rất quan trọng.
Ubuntu không phải lúc nào cũng dễ dàng
Mình cũng không nghĩ Ubuntu là hệ điều hành hoàn hảo.
Có những lúc driver gây vấn đề.
Có lúc Wi-Fi hoặc Bluetooth gặp lỗi.
Có lúc Docker chiếm RAM.
Có lúc permission làm mình mất cả buổi để tìm nguyên nhân.
Có lúc một command chạy sai và mình phải đọc documentation.
Có lúc update một package khiến một thứ khác không còn hoạt động như trước.
Nhưng chính những vấn đề đó lại khiến mình học được rất nhiều.
Windows hoặc macOS có thể giúp mình tránh được một số vấn đề ở tầng hệ thống.
Ubuntu thì đôi khi bắt mình phải hiểu nó.
Và mình thích điều đó.
Ubuntu thay đổi cách mình nhìn về máy tính
Ngày trước, mình nhìn máy tính chủ yếu như một công cụ:
Mở IDE → code → build → chạy.
Bây giờ mình nhìn nó như một hệ thống:
Hardware
↓
Kernel
↓
Operating System
↓
Process
↓
Runtime
↓
Application
↓
Network
↓
Infrastructure
Khi hiểu được từng layer, mình cảm thấy mình kiểm soát hệ thống tốt hơn.
Và đó cũng là lý do mình thích Linux nói chung và Ubuntu nói riêng.
Ubuntu và công việc của mình
Trong công việc thực tế, mình thường phải đi qua nhiều layer.
Có lúc mình đang viết React.
Một lúc sau chuyển sang NestJS.
Sau đó debug PostgreSQL.
Rồi kiểm tra Redis.
Rồi SSH vào server.
Rồi kiểm tra Docker.
Rồi xem Nginx.
Rồi kiểm tra CI/CD.
Một ngày có thể chạm vào rất nhiều thứ.
Ubuntu cho mình một môi trường thống nhất để làm những việc đó.
Không phải lúc nào mình cũng cần một GUI.
Nhiều khi một terminal là đủ.
ssh
git
docker
grep
find
curl
curl
top
htop
vim
nano
systemctl
journalctl
Những công cụ rất nhỏ.
Nhưng ghép chúng lại, mình có thể quản lý cả một hệ thống.
Điều mình thích nhất ở Ubuntu
Không phải giao diện.
Không phải logo.
Không phải việc Ubuntu miễn phí.
Mà là tinh thần của nó.
Mình có thể mở terminal lên và hỏi:
"Chuyện gì đang xảy ra bên trong máy này?"
Và Linux cho mình rất nhiều cách để tìm câu trả lời.
Đối với mình, đó là một phần rất đẹp của engineering.
Không chỉ sử dụng công nghệ.
Mà còn hiểu công nghệ đang hoạt động như thế nào.
Ubuntu là môi trường học tập của mình
Mình không nghĩ rằng việc sử dụng Ubuntu tự động khiến một developer giỏi hơn.
Dùng Linux không phải một huy hiệu.
Nhưng với mình, Ubuntu đã trở thành một môi trường học tập rất tốt.
Mỗi lần gặp một vấn đề:
Server không chạy
Docker lỗi
Port bị chiếm
Permission sai
Disk đầy
Memory cao
Network lỗi
Process chết
mình lại có thêm một cơ hội để hiểu hệ thống sâu hơn.
Và những kiến thức đó không chỉ dành cho Ubuntu.
Nó đi theo mình đến server.
Đến Docker.
Đến cloud.
Đến CI/CD.
Đến production.
Cuối cùng
Nếu hỏi mình:
"Tại sao bạn thích Ubuntu?"
Câu trả lời ngắn nhất có lẽ là:
Vì Ubuntu cho mình quyền kiểm soát và cơ hội để hiểu chiếc máy tính mình đang sử dụng.
Mình không xem Ubuntu đơn thuần là một operating system.
Đối với mình, nó là:
Development Environment
+
Learning Environment
+
Server Environment
+
Engineering Playground
Và có lẽ đó là lý do sau nhiều năm làm web development, backend và DevOps, Ubuntu vẫn là hệ điều hành mình yêu thích nhất.
Không phải vì Ubuntu làm mọi thứ dễ hơn. Mà vì nó khiến mình hiểu tại sao mọi thứ hoạt động.