Các server luôn có nhu cầu khởi động các dịch vụ mình đảm nhiệm lúc boot máy, do đó khi cài một dịch vụ mới lên, bạn phải biết cách làm cho nó tự động chạy. Sau đây là một số cách mà Abel đã làm.

1. Trên các hệ điều hành Debian like (Ubuntu, SuSE…): Dùng công cụ update-rc.d
Ví dụ sau khi cài xong bind (gói DNS Server), Abel muốn cho trình named (file exe của bind) phải tự động chạy khi máy khởi động. Vị trí của file named là: /usr/bin/named.

1.1 Đầu tiên Abel viết một đoạn shell script nho nhỏ với ba nhiệm vụ chính sau đây:
-Kiểm tra xem file /usr/bin/named có thể thực thi được hay không
-Kiểm tra file cấu hình /etc/named có tồn tại hay không
-Nếu hai điều kiện trên thỏa thì xuất ra dòng “Starting named” và chạy file /usr/bin/named

Cụ thể nó thế này:

Code:

#!/bin/sh#file khoi dong named luc boot may if test −x /usr/bin/named −a −f /etc/named.confthenecho “Starting named”/usr/bin/namedFi

(Với những dịch vụ khác cách viết file script là hoàn toàn tương tự)
1.2 Lưu nó lại với cái tên gì đó, ví dụ bootnamed, rồi nhét nó vô thư mục /etc/init.d
1.3 “Biến” nó thành file exe: chmod 755 /etc/init.d/bootnamed
1.4 Dùng lệnh

Code:

update-rc.d bootnamed defaults

Để cập nhật bootnamed vào các thư mục rc.d, các thư mục mà khi
boot hệ thống sẽ vào kiểm tra để lôi dịch vụ ra chạy. Tham số defaults
cho biết bootnamed sẽ được boot tự động ở init-mode default của hệ
thống (ví dụ trong file inittab bạn để init default là 3 thì cứ vào 3
là nó chạy named!)
1.5 Reboot lại máy để kiểm tra

2. Trên các hệ điều hành Redhat like (Redhat, CentOS, Fedora…): Dùng công cụ chkconfig
Đây là một công cụ quản lí service at boottime rất mạnh của Redhat. Ví
dụ để xem các service nào được auto run ở level 3, ta dùng lệnh:

Code:

[root@centos init.d]# chkconfig –list | grep 3:on atd 0:off 1:off 2:off 3:on 4:on 5:on 6:offsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:offsendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:offautofs 0:off 1:off 2:off 3:on 4:on 5:on 6:offnetwork 0:off 1:off 2:on 3:on 4:on 5:on 6:off…

Để enable một service ở level được định trước:

Code:

[root@centos init.d]# chkconfig wine on [root@centos init.d]# chkconfig –list wine wine 0:off 1:off 2:on 3:on 4:off 5:off 6:off

Disable nó ở tất cả các level:

Code:

root@centos init.d]# chkconfig wine off[root@centos init.d]# chkconfig –list winewine 0:off 1:off 2:off 3:off 4:off 5:off 6:off

Đặc điểm của chkconfig là ta không cần tạo script như với
update-rc.d, mà chkconfig sẽ đọc một số dòng đầu của file thực thi của
dịch vụ (hay còn gọi là file rc) để xác định file thực thi đó sẽ chạy ở
các level nào và độ ưu tiên như thế nào. Ví dụ với dịch vụ sshd ta xem
thử file thực thi nó có cái gì

Code:

[root@centos init.d]# head -8 sshd #!/bin/bash## Init file for OpenSSH server daemon## chkconfig: 2345 55 25# description: OpenSSH server daemon#

Ý nghĩa các tham số:

Code:

# chkconfig: 2345 55 25 | | | | | độ ưu tiên của kill scripts | | | độ ưu tiên của start scripts | các level mà service được start (2, 3, 4, 5)

Giờ ta sẽ đưa named vào các dịch vụ được boot khi khởi động máy
2.1 Kiểm tra named đã được autorun ở level nào chưa:

Code:

[root@centos init.d]# chkconfig –list namednamed 0:off 1:off 2:off 3:off 4:off 5:off 6:off

2.2 Sửa file rc của named lại để cho nó auto run ở level
3. Ban đầu do không autorun ở level nào hết nên 8 dòng đầu của named rc
file có dạng:

Code:

[root@cent init.d]# head -8 named#!/bin/bash## named This shell script takes care of starting and stopping# named (BIND DNS server).## chkconfig: _ 55 45# description: named (BIND) is a Domain Name Server (DNS) # that is used to resolve host names to IP addresses.

Ta sửa dòng chkconfig thành:

Code:

#chkconfig: 3 55 45

2.3 Add named vào trình quản lí chkconfig

Code:

[root@centos init.d]# chkconfig named –add

2.4 Enable nó lên

Code:

[root@centos init.d]# chkconfig named on

2.5 Kiểm tra lại

Code:

[root@centos rc2.d]# chkconfig named –listsshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off

Thế là xong!

Kết: Hãy chắc chắn là bạn hoàn toàn kiểm soát được những dịch vụ nào đang autorun trên hệ thống của bạn.