รับทําเว็บไซต์ รับทําseo
บทความที่น่าสนใจ

บทความ ที่น่าสนใจ

Linux Server (CentOS) : วิธีการเปิด ปิด เซอร์วิสของ CentOS

    โปรแกรมที่รันเป็นเซิร์ฟเวอร์ หรือโปรเซสควบคุมการทำงานของเครื่องบนลีนุกซ์ (นิยมเรียกโปรแกรมแบบนี้ว่า เซอร์วิส) ที่ติดตั้งจากไฟล์ rpm จะมีสคริปต์ไฟล์ช่วยในการเปิด ปิด หรือตรวจสอบสถานะของแต่ละโปรแกรมได้

    สคริปต์ไฟล์นี้ เราเรียกว่า “System V init script” หรือเรียกย่อๆ ว่า “init script” ส่วนใหญ่แล้วจะเขียนด้วย Shell script อยู่ในไดเร็คทอรี /etc/rc.d/init.d/ (หรือ /etc/init.d/ เป็นลิ้งค์ไฟล์เชื่อมโยงกัน)

    ถ้าเปรียบเทียบกับ Windows ก็เหมือนกับ Services ที่อยู่ใน Administrative Tools ของ Control Panel

    ตัวอย่างบางส่วนของสคริปต์ไฟล์ ที่ใช้ควบคุม sshd (Secure Shell)

    #!/bin/bash # # sshd          Start up the OpenSSH server daemon # # chkconfig: 2345 55 25 # description: SSH is a protocol for secure remote shell access.  #              This service starts up the OpenSSH server daemon. ... start() {         [ -x $SSHD ] || exit 5         [ -f /etc/ssh/sshd_config ] || exit 6 ...         echo -n $"Starting $prog: "         $SSHD $OPTIONS && success || failure ... stop() {         echo -n $"Stopping $prog: "         if [ -n "`pidfileofproc $SSHD`" ] ; then             killproc $SSHD         else             failure $"Stopping $prog"         fi ...

    หากต้องการจะเปิด หรือปิด โปรแกรมหรือเซอร์วิส เราสามารถรันสคริปต์ไฟล์นี้ได้โดยตรง เช่นต้องการปิด (stop) เซอร์วิส sshd ก็รันสคริปต์แล้วตามด้วยออปชั่น stop

    [root@cent6 ~]# /etc/rc.d/init.d/sshd stop Stopping sshd:                                             [  OK  ]

    หรือต้องการเปิด (start) เซอร์วิส sshd  ก็รันสคริปต์แล้วตามด้วยออปชั่น start

    [root@cent6 ~]# /etc/rc.d/init.d/sshd start Starting sshd:                                             [  OK  ] 

    ข้อดีของการใช้สคริปต์ นอกจากใช้เปิด ปิดเซอร์วิสได้แล้ว ในไฟล์สคริปต์ จะมีการตรวจสอบความถูกต้องก่อนรันโปรแกรม เช่นคอนฟิกมีหรือยัง คอนฟิกที่ใส่ไว้ถูกต้องหรือไม่ ไฟล์ที่จำเป็นต้องใช้มีครบถ้วนหรือไม่ ลำดับในการเปิดเซอร์วิส หรือลำดับในการปิด และเมื่อรันสคริปต์ไปแล้ว ผลการรันเป็นอย่างไร รันได้ถูกต้องหรือไม่

    ตัวอย่างถ้าคอนฟิกไฟล์ไม่ถูกต้อง สคริปต์จะฟ้องว่ารันไม่สำเร็จ

    [root@cent6 ~]# service sshd start Starting sshd: /etc/ssh/sshd_config: line 129: Bad configuration option: anner /etc/ssh/sshd_config: terminating, 1 bad configuration options                                                            [FAILED]

    การใช้คำสั่ง service

    แต่เพื่อความสะดวก เราสามารถใช้คำสั่ง service เพื่อช่วยในการรันสคริปต์ แทนการพิมพ์แบบรันไฟล์ได้  รูปแบบการใช้คำสั่ง service คือ

    # service <SCRIPT> <COMMAND> [OPTIONS]

    คำอธิบาย

        - <SCRIPT>   ชื่อสคริปต์ไฟล์ที่อยู่ภายใต้ /etc/rc.d/init.d/ ไม่ต้องระบุเป็น พาธเต็มเช่น ระบุแค่ sshd
        - <COMMAND>   ระบุคำสั่งที่ต้องการ เช่น เปิด (start) ปิด (stop)
        - [OPTIONS]   ออปชั่นอื่นๆ เพิ่มเติม โดยทั่วไปแล้วไม่ค่อยได้ใช้

    ตัวอย่างเช่น หากต้องการปิด (stop) เซอร์วิส sshd ก็สามารถทำได้โดย

    [root@cent6 ~]# service sshd stop Stopping sshd:                                             [  OK  ]

    หรือต้องการเปิด (start) เซอร์วิส sshd ก็สามารถทำได้โดย

    [root@cent6 ~]# service sshd start Starting sshd:                                             [  OK  ]

    แต่ละเซอร์วิส จะมีคำสั่ง (COMMAND) ไม่เหมือนกัน แต่ส่วนใหญ่แล้วจะมีคำสั่งเหล่านี้

        - start – เปิดหรือรันเซอร์วิส
        - stop – ปิด หรือ หยุดการรันเซอร์วิส
        - status – ดูสถานะของเซอร์วิส
        - restart – ปิด แล้ว เปิด เซอร์วิสใหม่ โดยส่วนใหญ่จะเป็นการเรียกคำสั่ง stop แล้ว start อีกครั้ง คำสั่งนี้ อาจมีผลกระทบ ทำให้ผู้ใช้งานเซอร์วิสนี้อยู่ ใช้งานไม่ได้ชั่วคราว
        - reload – เริ่มรันเซอร์วิสใหม่ ด้วยการส่ง signal HUP ไปที่ตัวโปรแกรม นิยมใช้คำสั่งนี้ หลังจากแก้ไขคอนฟิกใหม่ เพราะจะกระทบกับผู้ใช้งานน้อยกว่าการใช้คำสั่ง restart มาก

    หากต้องการตรวจสอบว่าเซอร์วิสที่จะรันมีคำสั่ง (COMMAND) อะไรให้ใช้บ้าง ให้พิมพ์คำสั่ง service แล้วตามด้วยชื่อสคริปต์โดยไม่ต้องระบบคำสั่ง เช่น

    [root@cent6 ~]# service sshd Usage: /etc/init.d/sshd {start|stop|restart|reload|force-reload|condrestart|try-restart|status}

    ผลลัพธ์ที่ได้จากการใช้คำสั่ง service ของแต่ละเซอร์วิส อาจไม่เหมือนกัน

    ตัวอย่างการใช้คำสั่ง service ตรวจสอบสถานะเซอร์วิส sshd ผลลัพธ์ที่ได้มีสถานะการรัน พร้อมบอก PID ของ sshd

    [root@cent6 ~]# service sshd status openssh-daemon (pid  1864) is running...  [root@cent6 ~]# ps -ef | grep 1864 root      1864     1  0 22:18 ?        00:00:00 /usr/sbin/sshd

    แต่ถ้าใช้คำสั่ง service ตรวจสอบสถานะของเซอร์วิส iptables จะแสดงกฎ (rule) ที่เปิดใช้อยู่

    [root@cent6 ~]# service iptables status Table: filter Chain INPUT (policy ACCEPT) num  target     prot opt source               destination 1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0 3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0 4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited  Chain FORWARD (policy ACCEPT) num  target     prot opt source               destination 1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited  Chain OUTPUT (policy ACCEPT) num  target     prot opt source               destination