Trang chủ / Linux / Bài 4: Tìm hiểu về init process và systemd trong Linux

Bài 4: Tìm hiểu về init process và systemd trong Linux

Trong bài trước chúng ta đã tìm hiểu về quá trình khởi động của máy tính. Mình đã giới thiệu qua BiosGRUB Boot Loader. Hôm nay chúng ta sẽ tìm hiểu về init processsystemd.

Init process là gì?

Init process là một tiến trình được khởi động lên đầu tiên trong hệ thống Linux. Tức là sau khi bạn chọn hệ điều hành trong menu của Boot Loader. Hệ điều hành bắt đầu được khởi động và tiến trình đầu tiên khởi động lên là init. Nhiệm vụ của init là start và stop các process, services… cần thiết khác.

init là tiến trình được khởi động đầu tiên của hệ thống Linux nên:

  • Init process luôn có PID (Process ID) là 1.
  • Tiến trình init là tiến trình cha (hoặc ông nội =)) ) của các tiến trình khác.

Có ba kiểu triển khai init system chính trong hệ thống Linux là:

  • System V (đọc là System Five – V là số 5 la mã đó): là phiên bản truyền thống của init system trên nhiều hệ thống Linux.
  • Upstart: Được phát triển bởi Canonical vào khoảng năm 2009 và sử dụng trong các phiên bản Ubuntu cũ hơn bản 15.04.
  • Systemd: Là một init system được phát triển khoảng năm 2010 và được nhiều Linux distributions sử dụng để thay thế các init system cũ. Ubuntu từ phiên bản 15.04Centos từ phiên bản 7 đã sử dụng systemd làm init system mặc định.

Tìm hiểu về systemd.

Systemd là một init system mới và đang dần thay thế các init system cũ vì nhiều lý do. Hiện nay Centos 7Ubuntu 16.04 đã sử dụng systemd làm init system mặc định của hệ thống.

Vì series này chúng ta đang học về Ubuntu Server 16.04 LTS nên chúng ta chỉ tập trung tìm hiều về systemd nha các bạn.

Systemd không chỉ dừng lại ở việc start hoặc stop các services nó còn có thể mount filesystems, quản lý network sockets… Và để thực hiện được những công việc đó nó phân chia ra các đơn vị units:

  • Service units (.service) – để start và stop các service.
  • Mount units (.mount) – Để quản lý các mount point.
  • Target units (.target) – Để điều khiển các “runlevels” (khái niệm runlevels chỉ sử dụng trong SysV init).

Làm sao biết được hệ thống của bạn đang dùng systemd?

Để kiểm tra xem hệ thống của bạn có đang sử dụng systemd hay không thì:

  • Hãy kiểm tra xem bạn có thư mục /usr/lib/systemd không.
  • Gõ lệnh pstree -Ap | more bạn sẽ nhìn thấy systemdprocess ID1 và nó là cha (hoặc ông nội :)) ) của các process khác.
Xem PID của systemd kìa mấy bạn
Xem PID của systemd kìa mấy bạn

“Runlevels” trong systemd.

Trong SysV init system (nếu bạn đã biết Linux từ trước) có các runlevels:

  • 0: halt
  • 1: single-user
  • 2: multi-user
  • 3: multi-user with networking
  • 4: undefined (user defined)
  • 5: multi-user with display manager (graphical login)
  • 6: reboot

Trong systemd khái niệm “runlevels” được thay thế bằng các targets để boot vào như:

  • poweroff.target – shutdown system
  • rescue.target – single user mode
  • multi-user.target – multiuser with networking
  • graphical.target – multiuser with networking and GUI
  • reboot.target – restart

Bảng so sánh SysV init và Systemd.

Dưới đây là bảng tóm tắt so sánh các lệnh quản lý dịch vụ do linoxide.com thực hiện. Mình cảm thấy rất có ích cho những bạn nào đã sử dụng các phiên bản trước đó.

Link gốc: http://images.linoxide.com/systemd-vs-sysVinit-cheatsheet.jpg

systemd-vs-sysvinit-cheatsheet

Xem video hướng dẫn.

Giới thiệu chipchip

Chipchip là một chú gà con đam mê công nghệ và ham học hỏi. Thích màu hồng. Câu nói yêu thích "Kiến thức không của riêng ai, kiến thức là để chia sẻ"

Đọc thêm

Ubuntu 17.04 Beta 1 đã ra mắt người dùng

Theo kế hoạch phát hành của Canonical, phiên bản chính thức của Ubuntu 17.04 sẽ …

Gửi phản hồi

Nhắn tin cho chúng tôi