Lệnh inittab — Linux / Unix

inittab - định dạng của tệp inittab được sử dụng bởi quá trình init tương thích với sysv

Sự miêu tả

Tệp inittab mô tả quá trình nào được khởi động lúc khởi động và trong quá trình hoạt động bình thường (ví dụ /etc/init.d/boot, /etc/init.d/rc, gettys ...). Init (8) phân biệt nhiều runlevel , mỗi runlevel có thể có một bộ các tiến trình riêng được bắt đầu. Các runlevel hợp lệ là 0 - 6 cộng với A , BC cho các mục nhập ondemand . Mục nhập trong tệp inittab có định dạng sau:

id: runlevels: action: process

Các dòng bắt đầu bằng `# 'bị bỏ qua.

id là một chuỗi duy nhất gồm 1-4 ký tự xác định mục nhập trong inittab (đối với các phiên bản sysvinit được biên dịch với thư viện <5.2.18 hoặc thư viện a.out giới hạn là 2 ký tự).

Lưu ý: Đối với các gettys hoặc các quá trình đăng nhập khác, trường id phải là hậu tố tty của tty tương ứng, ví dụ 1 cho tty1 . Nếu không, kế toán đăng nhập có thể không hoạt động chính xác.

runlevels liệt kê các runlevel mà hành động được chỉ định sẽ được thực hiện.

hành động mô tả hành động nào nên được thực hiện.

quy trình chỉ định quy trình được thực thi. Nếu trường tiến trình bắt đầu bằng ký tự `+ ', init sẽ không làm utmp và wtmp kế toán cho quá trình đó. Điều này là cần thiết cho gettys mà nhấn mạnh vào làm vệ sinh utmp / wtmp riêng của họ. Đây cũng là một lỗi lịch sử.

Trường runlevel có thể chứa nhiều ký tự cho các runlevel khác nhau. Ví dụ, 123 quy định rằng quá trình nên được bắt đầu trong các runlevel 1, 2 và 3. Các runlevel cho các mục nhập ondemand có thể chứa một A , B hoặc C. Trường runlevel của các mục nhập sysinit , bootbootwait được bỏ qua.

Khi runlevel hệ thống được thay đổi, bất kỳ tiến trình đang chạy nào không được chỉ định cho runlevel mới đều bị giết, đầu tiên với SIGTERM, sau đó với SIGKILL.

Các hành động hợp lệ cho trường hành động là:

hồi sinh

Quá trình sẽ được khởi động lại bất cứ khi nào nó kết thúc (ví dụ như getty).

chờ đợi

Quá trình này sẽ được bắt đầu một lần khi runlevel được chỉ định được nhập vào và init sẽ đợi kết thúc của nó.

Một lần

Quá trình sẽ được thực hiện một lần khi runlevel được chỉ định được nhập vào.

khởi động

Quá trình sẽ được thực thi trong quá trình khởi động hệ thống. Trường runlevel được bỏ qua.

bootwait

Quá trình sẽ được thực hiện trong khi khởi động hệ thống, trong khi init chờ kết thúc của nó (ví dụ / etc / rc). Trường runlevel được bỏ qua.

tắt

Điều này không có gì.

ondemand

Một quá trình được đánh dấu bằng runndvel ondemand sẽ được thực hiện bất cứ khi nào runndvel ondemand được chỉ định được gọi. Tuy nhiên, không có thay đổi runlevel nào xảy ra (các runndels của ondemand là `a ',` b' và `c ').

initdefault

Mục nhập initdefault chỉ định runlevel sẽ được nhập sau khi khởi động hệ thống. Nếu không tồn tại, init sẽ yêu cầu một runlevel trên bàn điều khiển. Trường xử lý được bỏ qua.

sysinit

Quá trình sẽ được thực thi trong quá trình khởi động hệ thống . Nó sẽ được thực thi trước bất kỳ mục khởi động hoặc bootwait nào. Trường runlevel được bỏ qua.

powerwait

Quá trình sẽ được thực thi khi mất điện. Init thường được thông báo về điều này bằng một quá trình nói chuyện với một UPS kết nối với máy tính. Init sẽ đợi quá trình kết thúc trước khi tiếp tục.

điện không

Đối với powerwait , ngoại trừ init đó không chờ đợi cho quá trình hoàn thành.

powerokwait

Quá trình này sẽ được thực thi ngay sau khi init được thông báo rằng sức mạnh đã được khôi phục.

powerfailnow

Quá trình này sẽ được thực hiện khi init được thông báo rằng pin của UPS bên ngoài gần như trống và nguồn điện bị lỗi (miễn là UPS bên ngoài và quá trình giám sát có thể phát hiện tình trạng này).

ctrlaltdel

Quá trình sẽ được thực thi khi init nhận tín hiệu SIGINT. Điều này có nghĩa là ai đó trên bảng điều khiển hệ thống đã nhấn tổ hợp phím CTRL-ALT-DEL . Thông thường người ta muốn thực hiện một số loại tắt máy hoặc để có được vào cấp độ người dùng đơn hoặc khởi động lại máy.

kbrequest

Quá trình sẽ được thực hiện khi init nhận được tín hiệu từ bộ xử lý bàn phím mà một tổ hợp phím đặc biệt được nhấn trên bàn phím điều khiển.

Tài liệu cho hàm này chưa hoàn thành; Bạn có thể tìm thêm tài liệu trong các gói kbd-x.xx (gần đây nhất là kbd-0.94 tại thời điểm viết bài này). Về cơ bản bạn muốn ánh xạ một số tổ hợp bàn phím cho hành động "KeyboardSignal". Ví dụ: để ánh xạ Alt-Uparrow cho mục đích này, hãy sử dụng thông tin sau trong tệp keymap của bạn:

alt keycode 103 = KeyboardSignal

VÍ DỤ

Đây là một ví dụ về một inittab giống với inittab Linux cũ:

# inittab cho id linux: 1: initdefault: rc :: bootwait: / etc / rc 1: 1: respawn: / etc / getty 9600 tty1 2: 1: respawn: / etc / getty 9600 tty2 3: 1: respawn: / vv / getty 9600 tty3 4: 1: respawn: / etc / getty 9600 tty4

Tệp inittab này thực thi / etc / rc trong khi khởi động và bắt đầu các gettys trên tty1-tty4.

Một inittab phức tạp hơn với runlevel khác nhau (xem các ý kiến ​​bên trong):

# Cấp để chạy trong id: 2: initdefault: # Khởi tạo hệ thống trước mọi thứ khác. si :: sysinit: /etc/rc.d/bcheckrc # Runlevel 0,6 bị tạm dừng và khởi động lại, 1 là chế độ bảo trì. l0: 0: wait: /etc/rc.d/rc.halt l1: 1: wait: /etc/rc.d/rc.single l2: 2345: wait: /etc/rc.d/rc.multi l6: 6: wait: /etc/rc.d/rc.reboot # Làm gì ở "3 ngón tay chào". ca :: ctrlaltdel: / sbin / shutdown -t5 -rf bây giờ # Runlevel 2 & 3: getty trên console, cấp 3 cũng getty trên cổng modem. 1: 23: respawn: / sbin / getty tty1 VC linux 2: 23: respawn: / sbin / getty tty2 VC linux 3: 23: respawn: / sbin / getty tty3 VC linux 4: 23: respawn: / sbin / getty tty4 VC linux S2: 3: respawn: / sbin / uugetty ttyS2 M19200

Xem thêm

init (8), telinit ( 8)

Quan trọng: Sử dụng lệnh man ( % man ) để xem cách một lệnh được sử dụng trên máy tính cụ thể của bạn.