/etc/init.d
được duy trì trên Ubuntu để tương thích ngược với các công cụ sysvinit. Nếu bạn thực sự nhìn vào /etc/init.d/rc.local
bạn sẽ thấy (cũng từ Máy chủ 12.04 LTS):
#! /bin/sh
### BEGIN INIT INFORMATION
# Provides: rc.local
# Required-Start: $remote_fs $syslog $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO
Và "Run /etc/rc.local" chính xác là những gì nó làm. Toàn bộ /etc/rc.local
là:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
Tôi đoán mục đích của việc này là cung cấp một vị trí đơn giản đã chết để đặt các lệnh shell mà bạn muốn chạy khi khởi động, mà không phải xử lý các công cụ dịch vụ dừng | bắt đầu /etc/init.d/rc.local
.
Vì vậy, nó trong thực tế là một dịch vụ, và có thể được chạy như vậy. Tôi đã thêm một echo
dòng vào /etc/rc.local
và:
»service rc.local start
hello world
Tuy nhiên, tôi không tin rằng nó được tham chiếu bởi bất cứ thứ gì trong thư mục mới bắt đầu /etc/init
(không phải init.d!):
»initctl start rc.local
initctl: Unknown job: rc.local
Có một vài dịch vụ "RC" mới bắt đầu:
»initctl list | grep rc
rc stop/waiting
rcS stop/waiting
rc-sysinit stop/waiting
Nhưng dường như không ai trong số họ có liên quan gì đến RC.local.