Một số cách chạy dịch vụ tự động trong Nux

21/01/2015

Hôm nay lại được gặp lại các bạn trong chuyên mục Kiến Thức, bài viết trước mình đã chia sẻ với các bạn một số kinh nghiệm lúc dùng Linux với máy ảo VMWare chạy trên Windows , hôm nay mình xin tiếp tục chia sẻ với các bạn một số cách chạy dịch vụ tự động trong NUX . Các bạn có thể tham khảo qua nhé.

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à tôi đã 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), tôi 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 tôi 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:
#!/bin/sh
#file khoi dong named luc boot may
if test −x /usr/bin/named −a −f /etc/named.conf
then
echo "Starting named"
/usr/bin/named
Fi

(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
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:

[root@centos init.d]# chkconfig --list | grep 3:on
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
...

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

[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:

root@centos init.d]# chkconfig wine off
[root@centos init.d]# chkconfig --list wine
wine 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ì

[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ố:

# 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:

[root@centos init.d]# chkconfig --list named
named 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:

[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:

#chkconfig: 3 55 45
2.3 Add named vào trình quản lí chkconfig

[root@centos init.d]# chkconfig named --add
2.4 Enable nó lên

[root@centos init.d]# chkconfig named on
2.5 Kiểm tra lại

[root@centos rc2.d]# chkconfig named --list
sshd 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.

Kết Luận : VDO khuyên bạn trước khi cài đặt những dịch vụ tự động trong Nux thì hãy đảm bảo rằng bạn sẽ kiểm soát được những dich vụ tự động đó trên hệ thống của bạn

Chúc các bạn thành công

ĐT

Một số cách chạy dịch vụ tự động trong Nux
Rate this post

About admin

Thanh Hồng là một hot blogger công nghệ của VDO. Cô đã có 5 năm kinh nghiệm làm việc tại phòng Marketting và Sale tại VDO. Cô sở hữu rất nhiều website và blog liên quan đến công nghệ, dịch vụ máy chủ, sản phẩm worktion, phần mềm bản quyền,…Cô đã cố gắng học hỏi, tích lũy và truyền đạt hết những kinh nghiệm đó trong các bài viết chia sẻ của mình. Blog của Thanh Hồng là một trong những nguồn thông tin tốt nhất giúp bạn lựa chọn được một sản phẩm, dịch vụ công nghệ hoàn hảo. Đặc biệt vì đam mê tìm hiểu về công nghệ nên cô đã dành rất nhiều thời gian đi cập nhật các tin tức công nghệ mới, các giải pháp mới, hoàn hảo nhất phù hợp cho nhiều mô hình doanh nghiệp và chia sẻ chúng theo quan điểm thú vị của riêng mình.