Ubuntu sử dụng Upstart
thay vì init
hệ thống truyền thống. Upstart mạnh hơn init, nhưng nó phức tạp hơn một chút so với init
.
Ngược lại, ngược lại, là dựa trên sự kiện. Một "sự kiện" có thể là một cái gì đó như "khởi động" ... hoặc nó có thể cụ thể hơn rất nhiều, như "mạng đã sẵn sàng để sử dụng ngay bây giờ". Bạn có thể chỉ định tập lệnh nào phụ thuộc vào sự kiện nào. Bất cứ điều gì không chờ đợi một sự kiện đều có thể chạy bất cứ khi nào có sẵn CPU.
Hệ thống dựa trên sự kiện này có một lợi thế khác: về mặt lý thuyết bạn có thể sử dụng nó ngay cả khi hệ thống đã hoạt động. Upstart cuối cùng được dự kiến sẽ đảm nhận các nhiệm vụ như hoặc cắm vào các thiết bị bên ngoài như ổ ngón tay cái (hiện đang được xử lý bởi udev và hal) hoặc chạy các chương trình tại thời điểm cụ thể (hiện đang được xử lý bởi cron).
Như bạn đã biết bây giờ, một daemon đã chết (không chạy khi khởi động) có thể còn sống và bắt đầu vì một sự kiện.
Ubuntu có cả / etc / init, cho Upstart và /etc/init.d, cho các tệp SysV cũ. Một số tệp trong đó là các tập lệnh SysV init thông thường chưa được di chuyển. Nhưng một số dịch vụ đã di chuyển duy trì một liên kết từ /etc/init.d đến / lib / init / upstart-job. Nếu bạn chạy một trong số đó, nó sẽ hoạt động, nhưng nó sẽ in cảnh báo trước:
Thay vì gọi các tập lệnh init thông qua /etc/init.d, hãy sử dụng tiện ích dịch vụ (8), vd service mysql restart
Vì tập lệnh mà bạn đang cố gắng gọi đã được chuyển đổi thành công việc Upstart, bạn cũng có thể sử dụng tiện ích khởi động lại (8), ví dụ: khởi động lại mysql.
Trên máy Upstart, init xuất phát từ upstart. Thay vì chạy một tập lệnh RC chính gọi các tập lệnh cho một runlevel cụ thể, init của Upstart nhận công việc từ thư mục công việc của nó.
Bây giờ chúng tôi biết không có cách đơn giản nào để liệt kê các trình tự khởi động, bạn nên liệt kê tất cả các trình tiện ích và kiểm tra từng cái một. Trình nền có thể được bắt đầu init
bằng upstart
hoặc thậm chí bởi một sự kiện sau đó.
Cách đơn giản nhất để có được danh sách này là chạy lệnh này trong trình bao:
initctl show-config
Đầu ra trông như thế này:
...
hostname
start on startup
udevtrigger
start on ((startup and started udev) and not-container)
tty2
start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...
Một số mục như cái đầu tiên rất đơn giản, hostname
bắt đầu khởi động. Nhưng các mặt hàng khác có thể trông phức tạp hơn. (Nhưng may mắn thay, con người có thể đọc được :-))
chkconfig --list
sẽ làm việc phải không?on
có nghĩa là dịch vụ đang chạy trên runlevel đó và dịch vụ đó sẽ tự động khởi động khi hệ thống khởi động.