วันอาทิตย์ที่ 21 พฤษภาคม พ.ศ. 2560

กำหนด IP address และ host name eth0 (Ethernet card เบอร์แรกคือเบอร์ 0)

กำหนด IP address และ host name
: เพื่อกำหนด ip ให้กับ eth0 (Ethernet card เบอร์แรกคือเบอร์ 0)
    ขั้นตอนการแก้ไข IP และ Host name
    /etc/hosts
    
      127.0.0.1 localhost.localdomain localhost 202.29.78.1 www.isinthai.com isinthai.com www
    /etc/sysconfig/network
      NETWORKING = yes HOSTNAME = yn1 GATEWAY = 202.29.78.254
    /etc/sysconfig/network-scripts/ifcfg-eth0
      DEVICE=eth0 BOOTPROTO=static BROADCAST=202.29.78.255 IPADDR=202.29.78.12 NETMASK=255.255.255.0 NETWORK=202.29.78.0 ONBOOT=yes TYPE=Ethernet
    /etc/resolv.conf
      nameserver 202.29.78.12
    สามารถใช้คำสั่ง setup แล้วเลือก Network Configuration เป็นอีกวิธีหนึ่ง เพื่อเข้าแก้ IP Address ซึ่งจะแก้ไขแฟ้มต่าง ๆ ให้อัตโนมัติ จากนั้นก็สั่ง #/etc/init.d/network restart

การติดตั้ง Mysql linux

การติดตั้ง Mysql
: Mysql คือส่งบริการฐานข้อมูล เพื่อให้ใช้ภาษาต่าง ๆ เข้ามาดึงข้อมูลไปได้เช่น PHP, VB เป็นต้น


โปรแกรมจาก www.mysql.com mysql-3.22.32.tar.gz ขนาด 4,295,387
เว็บที่เกี่ยวข้อง www.apache.org, www.php3.net, www.mysql.com
ตรวจสอบ process mysql run อยู่หรือไม่ด้วยคำสั่ง ps aux|grep mysql
วิธี set password ของ root /usr/local/bin/mysqladmin -u root password helloisinthai คำว่า helloisinthai เป็นคำที่ท่านเปลี่ยนได้ ครั้งต่อไปที่จะเข้า mysql ในฐานะ root ก็จะต้องกรอก password
    start Mysql ด้วยคำสั่ง
    cd /usr/local/bin
    ./safe_mysqld &
    
    ทดสอบ run Mysql
    ./mysql
    mysql>status
    mysql>exit
    
    ขั้นตอนการติดตั้ง
    su
    cd /usr/local
    tar xfvz /home/burin/mysql-3.22.32.tar.gz
    ln -sf mysql-3.22.32 mysql
    adduser mysql
    chown -R mysql:root mysql-3.22.32 mysql 
    su mysql
    เป็น su ก็ทำได้ พอเป็น mysql มีปัญหา ว่าไม่สามารถใช้ gcc ที่ถูก lock ตาม 9.52
    cd mysql
    ./configure --with-charset=tis620
    make
    su
    make install
    ./scripts/mysql_install_db
    cd /usr/local
    chown -R mysql:root var
    cd /etc/rc.d/init.d
    cp /usr/local/mysql/support-files/mysql.server mysql
    chmod +x mysql
    /sbin/chkconfig --del mysql
    /sbin/chkconfig --add mysql
    

เพิ่มสมาชิกใหม่ผ่าน php ใน Linux

เพิ่มสมาชิกใหม่ผ่าน php ใน Linux
: เพิ่มสมาชิกใหม่ด้วย shell_exec
    โดยปกติผลการ ทดสอบ 1 จะประมวลผลได้สำเร็จ ใช้งานได้ทั้งในระบบปฏิบัติการ Windows และ Linux แต่ถ้าผู้ดูแลระบบไม่ต้องการให้นักพัฒนาใช้ shell_exec สามารถทำได้โดยกำหนด safe_mode เป็น On ใน php.ini ก็จะใช้ฟังก์ชัน shell_exec ไม่ได้
    การใช้ sudo และ useradd
    - ต้องเปลี่ยนสิทธิ์ของ /etc/sudoers จาก 440 เป็น 777
    - แล้วเพิ่ม apache ALL= NOPASSWD: /usr/sbin/useradd, /usr/bin/passwd เข้าไปในแฟ้ม /etc/sudoers
    - ต้องเปลี่ยนสิทธิ์ของ /etc/sudoers กลับเป็น 440
    // ทดสอบ 1
    $host = "127.0.0.1";
    $output = shell_exec("ping -c1 $host"); 
    echo "<pre>$output</pre>";
    
    // ทดสอบ 2
    $user = "hello";
    $pass = "wow";
    echo shell_exec("sudo -u root -S /usr/sbin/useradd $user");
    echo shell_exec("echo $pass |sudo -u root -S /usr/bin/passwd $user --stdin");
    echo shell_exec("id $user");
    

Upload ด้วย php

Upload ด้วย php
: รับชื่อแฟ้มแล้วส่งเข้าไปในห้องที่ต้องการ โดยตรวจรหัสผ่านที่เก็บไว้ในห้องนั้น
    upload.htm ส่วนนี้เป็น html สำหรับส่งค่าให้ upload.php
    <body>
    <form enctype="multipart/form-data" method=post action=upload.php>
    <input type=hidden name="MAX_FILE_SIZE" value=200000>
    User <input type=text name=guser><br>
    Password <input type=password name=gpassword><br>
    Select file <input type=file name=upload><br>
    <input type=submit value=Upload>
    </form>
    <form enctype="multipart/form-data" method=post action=listfile.php>
    User <input type=text name=guser><br>
    Password <input type=password name=gpassword><br>
    <input type=submit value=List>
    </form>
    </body>
    
    upload.php ทำหน้าที่ส่งแฟ้มจากเครื่องท่านเข้าไปเก็บใน server
    โปรแกรมนี้เขียนได้เพราะอ่านวิธี upload จากหนังสือ PHP ของสุพิน วรรณา เล่มสีส้ม มีรูปหน้าคนครึ่งหน้า หน้า 494
    แต่ได้ปรับปรุงนิดหน่อย เพื่อให้ใช้งานใน isinthai.com ขณะที่ปิด telnet หรือ ftp (เดือนพฤษภาคม 2544)
    <?
    include("updateinclude.php");
    setupinit();
    if ($upload <> "none" and $upload_size < 200000) {
      echo "User: $guser<br>";
      echo "Local File: $upload<br>";
      echo "Name: $upload_name<br>";
      echo "Size: $upload_size<br>";
      echo "Type: $upload_type<br>";
      copy($upload,"$fpath/$upload_name");
      chmod("$fpath/$upload_name",0700);
      unlink($upload);
      } else {
      echo "Please select file";
    }
    ?>
    
    uploadinclude.php ใช้ในทุกโปรแกรม เพื่อตรวจสิทธิที่จะเข้า update
    ใช้ตรวจ guser และ gpassword กับแฟ้ม password.pl เพื่อตรวจว่าเป็นผู้ใช้ที่ถูกต้องหรือไม่
    ในการเขียนแบบนี้ทำให้ ระบบข้อมูลถูก hack ได้ง่ายมาก แต่ต้องใช้ php เข้าไป hack
    <?
    function setupinit() {
      global $guser,$gpassword,$fpath;
      $fpath="/home/burin/public_html/$guser";  
      if ($guser) {
        $f = fopen("$fpath/password.pl","r");
        if (!feof($f)) {
         $d = fgets($f,14);
          fclose($f);
        }
        if (strlen($d) <> 13){    
          $d = crypt(substr($d,0,strlen($d)),$guser);
          if ($d == crypt($gpassword,$guser)) {
            $f = fopen("$fpath/password.pl","w");
            if ($f) {
              fputs($f,$d);
              fclose($f);
            }
          }  
          echo "Crypt password.pl : OK $d".crypt($gpassword,$guser)."<hr>";
        }
      }
      if ($d == crypt($gpassword,$guser)) {
        echo "Welcome.. <b>$guser</b> : OK<hr>";
        } else {
        echo "Password invalid of $guser";
        exit;
      }
    }
    ?>
    
    listfile.php ดูรายชื่อแฟ้ม
    โดยใช้ include file สำหรับตรวจ guser และ gpassword ที่เหมาะสมกับแฟ้ม password.pl
    <?
    include("updateinclude.php");
    setupinit();
    $dir_handle = opendir($fpath);
    echo "<pre><font size=4 face=fixed>";
    while($list = readdir($dir_handle)) {
      if (substr($list,0,1) <> "." and $list <> "mail" and $list <> "bash_profile" and
          $list <> "pico.save" and $list <> "password.pl") { 
         echo  $list." - ".filesize("$fpath/$list")." Byte<br>"; 
      }
    }
    closedir($dir_handle);
    ?>
    

ใช้ php อ่านข้อมูลจาก /var/log/maillog


: เพื่อรายงานสถิติการใช้ e-mail ของบุคลากร


วันหนึ่งผมอ่านข้อมูลการเข้าใช้ e-mail จาก /var/www/html/mail/database/username_yn1.yonok.ac.th/inbox โดยเช็คจากเวลา update filectime() แต่พบว่าข้อมูลที่ได้คือ ไม่รวมไปถึง user ที่ใช้ outlook อ่าน e-mail ผ่าน pop3 จึงต้องไปอ่านข้อมูลการเข้าใช้ e-mail จากแฟ้ม /var/log/maillog ทำให้รายงายได้ละเอียดขึ้น สามารถดูผลของโปรแกรมนี้ที่ http://www.isinthai.com/mail/database/index.php
อันที่จริง โปรแกรมนี้จะอยู่ที่ไหนก็ได้ แต่ผมเก็บไว้ที่นี่ เพราะห้องนี้ยังไม่เก็บอะไรเกี่ยงกับ mail ที่สำคัญ แต่สิ่งที่ต้องทำคือการ chmod 644 maillog แต่เดิมคุณสมบัติของแฟ้มเป็น 600 จะใช้ php ของ apache ไปอ่านมาไม่ได้
    ตัวอย่างโปรแกรม /var/www/html/mail/database/index.php
    <html><head><title>Username of /var/log/maillog</title></head>
    <body bgcolor=gray topmargin=0 leftmargin=0><font face="fixedsys" size=0><?
    $datefull = date("F d, Y");
    if(date("j") < 10) {$d = date("M")."  ".date("j");}else{$d = date("M j");}
    echo "Today : <font color=yellow>".$datefull."</font><br>";
    echo "Last login: <a href=index.php?act=total>total</a> ";
    if ($_GET['act'] <> "view" && $_GET['act'] <> "total") {
      echo ", <a href=index.php?act=view>today</a> ";
    } else {
    echo "<ol><font color=white>";
    $ar = file("/var/log/maillog");
    if ($_GET['act'] == "total") { $max = 0; } else { $max = count($ar) - 500; }
    $j = 0;
    for ($i=count($ar);$i>=$max;$i--) {  
      if (strpos($ar[$i],"Login user=") && _
         (strpos($ar[$i],"$d") > -1 || $_GET['act'] == "total")) {
        $user = stristr($ar[$i],"user=");
        $uofar = substr($user,5,strpos($user," ")-5);
        $found = "no";
        for($k=0;$k<$j;$k++) { 
          if (strpos($ur[$k],"$uofar") > -1) { $found = "yes"; }
        }
        if ($found == "no") {
          if (strpos($ar[$i],"host=yonok.ac.th") == false) {
            $p="pop";
          } else {
            $p=" ";
          }
          $ur[$j] = $uofar." <font color=black>".substr($ar[$i],7,8)."</font> ".$p;
          $ut[$j] = $uofar." <font color=black>".substr($ar[$i],0,6)."</font> ".$p;
          $j = $j + 1;
        }
      }
    }
    for ($i=0;$i<$j;$i++) { 
      if ($_GET['act'] == "total") {
        echo "<li>".$ut[$i]; 
      } else {
        echo "<li>".$ur[$i]; 
      } 
    }
    }
    ?>
    </ol></body></html>
    

ดูข้อมูลในแฟ้มต่าง ๆ ด้วยโปรแกรม php

ดูข้อมูลในแฟ้มต่าง ๆ ด้วยโปรแกรม php
: โปรแกรมนี้ช่วยให้ดูแฟ้มต่าง ๆ ในระบบโดยไม่ต้องเข้า Linux ไม่ควรใช้ถ้าผู้ให้บริการไม่ยอมให้ใช้ ลองถามเขาก่อนใช้นะครับ
    ตัวอย่างโปรแกรม lastmsg.php
    <form action=http://www.isinthai.com/lock/lastmsg.php method=get>
    File: <input name=file value=messages>
    Line: <input name=l value=20>
    Password: <input name=p type=password value=suwit>
    <input type=submit value=tail>
    </form><font face='courier new'><pre>
    <?
    if ($_GET['p'] == "prasert") {
    $x = "tail --lines=" . $_GET['l'] . " ". $_GET['file'];
    echo `$x`;
    }
    ?>
    

บริการส่ง mail ด้วย php

บริการส่ง mail ด้วย php
: เพื่อให้ web server ที่เปิดบริการ SMTP (/usr/sbin/sendmail) ถูกเรียกใช้โดย php สำหรับส่ง mail


บริการนี้เปิดให้ทดสอบว่าส่งถึงท่านไหม แต่อาจใช้ไม่ได้ทุกเครือข่าย เพราะกำหนด RELAY ให้เฉพาะบางเครือข่ายเท่านั้น แต่ถ้า copy source code ไปใช้ก็น่าจะใช้ได้เลย โดยโปรแกรมตัวอย่างได้มีการตรวจสอบอะไรนิดหน่อย ซึ่งอาจนำไปประยุกต์ใช้งานสำหรับริการต่าง ๆ ได้ง่ายขึ้น เช่น contact us หรือ e-commerce เป็นต้น โปรแกรมนี้ได้ทดสอบแล้วที่ http://www.isinthai.com/~php/mail.htm และ http://lampang.thcity.com/mail.htm
ข้อควรทราบ : โปรแกรมนี้ไม่ได้ตรวจสอบอะไรมากมาย โดยแบ่งโปรแกรมออกเป็น 2 ส่วน เพื่อให้ง่ายสำหรับผมในการอธิบาย ว่า ส่วนที่ 1 ใช้รับค่าจากผู้ใช้ ส่วนที่ 2 ใช้ส่ง e-mail โดยตรง แต่การจะส่ง mail ได้ เครื่องที่ท่านนำโปรแกรมทั้ง 2 นี้ไปวางต้องมีคุณสมบัติ 2 ประการ 1. ต้องเป็น web server ที่บริการ php 2. ต้องให้บริการ smtp โดยเปิด relay ให้กับผู้ใช้เข้ามาใช้ได้
    Source code : mail.htm
    <body>
    <form action=mail.php method=get>
    <input name=refer type=hidden value="http://www.isinthai.com/~php/mail.htm">
    From : <input name=from value="saleman@oho.com" size=30><br>
    To : <input name=to value="burin@yonok.ac.th" size=30><br>
    Subject : <input name=subject value="test sendmail by isinthai.com" size=50><br>
    <textarea name=message rows=5 cols=80>
    Test form isinthai.com/~php/mail.htm
    </textarea><br>
    <input type=submit value=send>
    </form>
    </body>
    Source code : mail.php : สำหรับรับข้อมูลเพื่อส่ง mail ออกไป (ทำหน้าที่ส่ง e-mail โดยตรง)
    <body>
    <font color=blue>Send mail : </font><font color=red>
    <?
      $lf = chr(13). chr(10);
      $msg = $_GET['message'] . $lf ."IP address: " . $_SERVER["REMOTE_ADDR"];
      $msg = $msg . $lf ."Service by: http://www.isinthai.com/~php/mail.htm";  
      // mail ("burin@yonok.ac.th","your order","want 100 car today","From: saleman@oho.com");
      if ($_GET['to'] <> "burin@yonok.ac.th" || $_GET['from'] <> "saleman@oho.com") {
        mail($_GET['to'],":: ".$_GET['subject'],$msg,"From : ".$_GET['from']);
        echo "ok";
      } else {
        echo "invalid";
      }
    ?>
    </font><br><a href=<? echo $_GET['refer']; ?>><? echo $_GET['refer']; ?></a>
    </body>
    
อีก code หนึ่ง /var/www/html/isinthai/sndform.php ที่ใช้งานอยู่จริง
    
    <?
    $mto = $_POST["mto"];
    $msubj = $_POST["msubj"];
    $mfrom = $_POST["mfrom"];
    $message = $_POST["message"];
    $redirect = $_POST["redirect"];
    if (empty($redirect)) { $redirect = "http://www.isinthai.com/isinthai/sndform.php"; }
    if (empty($mto) || empty($msubj) || empty($mfrom) || empty($message)) {
    echo "<body bgcolor=#ffffdd><font face='courier new'>";
    echo "<form action=sndform.php method=post>";
    echo ".... To : <select name=mto size=3>";
    echo "<option value=nirund@yonok.ac.th selected>ดร.นิรันดร์ จิวะสันติการ";
    echo "<option value=atichart@yonok.ac.th>อติชาต หาญชาญชัย";
    echo "<option value=burin@yonok.ac.th>ผู้ดูแลเครือข่าย, HW, SW, ฐานข้อมูล";
    echo "</select><br>.. From : <input name=mfrom size=30> EX. yourname@hotmail.com<br>";
    echo "Subject : <input name=msubj size=50> EX. Why the name is YONOK?<br>";
    echo "Messages: <textarea name=message rows=10 cols=80>";
    echo "</textarea> <input type=submit value=Send_mail><br>";
    echo "<input name=redirect type=hidden value=http://www.isinthai.com/isinthai/sndform.php>";
    echo "</form>";
    $message = "hi\nthis is test\nthis is line.";
    $mto = "burin@yonok.ac.th";
    $msubj = "the subject";
    $mfrom = "burin@thaiall.com";
    } else {
    $message=$message."\n\nService from http://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
    $message=$message."\nScript developer by webmaster@yonok.ac.th";
    $message=$message."\nIP address : ".$_SERVER["REMOTE_ADDR"];
    $msubj = "Subject_".$msubj;
    $txtfrom = "From: ".$mfrom."\nX-Mailer: PHP/" . phpversion();
    mail($mto, $msubj, $message, $txtfrom );
    echo "<html><head><meta http-equiv=Refresh CONTENT='50; URL=$redirect'>";
    echo "</head><body><font face='courier new'>";
    echo "Your message sending [ <b>completely</b> ]<hr color=red><pre>";
    echo "From    : $mfrom \n";
    echo "To      : $mto \n";
    echo "Subject : $msubj \n";
    echo "Message : $message</pre>";
    }
    ?>
    

เพิ่มระเบียนใหม่เข้า Mysql หลายระเบียนผ่าน form


: รับข้อมูลได้หลายรายการพร้อม ๆ กันส่งเข้า Mysql
    ตัวอย่างโปรแกรมที่ใช้ป้อนข้อมูล เตรียมส่งเข้า mysql (addmany.htm)
    
    ข้อมูลที่ส่งเข้าจะใช้เครื่องหมาย , แยกระหว่างเขตข้อมูล และ 1 บรรทัดก็คือ 1 ระเบียน ทำให้ผู้ใช้สามารถนำข้อมูลจาก Excel มา export CSV และใช้ที่นี่ได้
    
    
    <form action=addmany.php> <textarea name=manyrecord rows=6 cols=40></textarea> <input type=submit></form>
    ตัวอย่างโปรแกรมที่ใช้ส่งข้อมูลเข้า Mysql (addmany.php ถูกสั่งจาก addmany.htm)
    <?
    $getline = preg_split("/[\s\n]+/",$manyrecord);
    for ($j=0;$j<count($getline);$j++) {
      $l = $j + 1;
      $getfield = preg_split("/[\s,]+/",$getline[$j]);   
      print "$l $getfield[0] - $getfield[1] - $getfield[2]<br>";
    }
    $link = mysql_connect("localhost","thaiall","some_pass");
    if ($link) {
      echo "Connect OK<hr>";
      mysql_select_db("test",$link);
      for ($j=0;$j<count($getline);$j++) {
        $l = $j + 1;
        $getfield = preg_split("/[\s,]+/",$getline[$j]);   
        print "$l $getfield[0] - $getfield[1] - $getfield[2]";
        $query = "insert into testf values('$getfield[0]','$getfield[1]',$getfield[2])";
        $result = mysql_db_query("test",$query);
        if (!$result) {
          echo "ผิดพลาด";
        } else {
          echo "เพิ่มเรียบร้อย";
        }  
     echo "<br>";
      }  
      mysql_close($link);
    } else {
      echo "Connect error"; 
    }
    ?>
    

เพิ่มระเบียนใหม่เข้า Mysql

เพิ่มระเบียนใหม่เข้า Mysql
: รับข้อมูลทีละรายการส่งเข้า Mysql
    ตัวอย่างโปรแกรม addone.php
    <?
    $link = mysql_connect("localhost","thaiall","some_pass");
    if ($link) {
      echo "Connect OK<hr>";
      mysql_select_db("test",$link);
      $query = "insert into testf values('abc','def',5)";
      $result = mysql_db_query("test",$query);
      if (!result) {
        echo "ผิดพลาด";
      } else {
        echo "เพิ่มเรียบร้อย";
      }
      mysql_close($link);
    } else {
      echo "Connect error"; 
    }
    ?>
    

อ่านข้อมูลจาก Mysql มาแสดงผล

อ่านข้อมูลจาก Mysql มาแสดงผล
: การใช้ความสามารถของ Mysql ในการเลือกข้อมูลมาให้ PHP
    ตัวอย่างโปรแกรม listall.php
    <?
    echo "First line of the printing on screen.";
    $link = mysql_connect("localhost","thaiall","some_pass");
    if ($link) {
      echo "Connect OK<hr>";
      mysql_select_db("test",$link);
      $query = "select * from testf";
      $process = mysql_query($query,$link);
      $i = 1;
      while ($obj = mysql_fetch_object($process)) {
        echo $i.$obj->fld1." - ";
        echo $obj->fld2." - ";
        echo $obj->fld3."<br>";
     $i++;
      }
      mysql_close($link);
    } else {
      echo "Connect error"; 
    }
    ?>
    

3.7 การเปิด perl ให้เฉพาะ account

3.7 การเปิด perl ให้เฉพาะ account
: กำหนดว่าห้องใดสามารถใช้ภาษา perl หรือ cgi ได้
    เพื่อความปลอดภัย server ส่วนใหญ่จะไม่เปิดบริการ cgi หรือ perl ให้กับทุกคน หากต้องการเปิดบริการให้ใคร ก็จะกำหนดให้เฉพาะคนนั้น หลักการนี้ผมนำไปใช้กับการกำหนดในส่วนของ virtual host ทำให้ใช้งานได้ยืดหยุน และปลอดภัย มากกว่าการเปิดให้บริการทุกคน
    การกำหนดว่าห้องใด หรือ host name ใด สามารถใช้บริการ perl หรือ cgi ได้สามารถกำหนดในแฟ้ม /etc/httpd/conf/httpd.conf มีหลายจุดในแฟ้มนี้ที่สามารเปิด หรือปิดบริการได้ โดยใช้คำว่า options ExecCGI หรือ options all กำหนดบริการ ดูรายละเอียดเพิ่มเติมได้จากหัวข้อ 9.11 และ 9.62

3.6 Perl เรียกตัวเองมาแสดงผล

3.6 Perl เรียกตัวเองมาแสดงผล
: โปรแกรมนี้เป็น ภาษา perl ซึ่งทดสอบให้ ประมวลผลได้ใน linux เครื่อง isinthai.com นี้


โปรแกรมนี้ชื่อ testf.pl ถูกเก็บไว้ในห้อง /home/burin/public_html และ link ไปยังห้อง /var/www/html/burin ซึ่งต้องกำหนดให้ chmod 700 เพื่อให้สั่งประมวลผล shell script ตัวนี้ได้ การเรียก Perl script ตัวนี้ ให้ทำตามข้างล่างนี้ >> http://www.isinthai.com/thaiall/testf.pl
    ตัวอย่างโปรแกรมที่ใช้ทดสอบ
    #!/usr/bin/perl
    $filename = "/home/burin/public_html/testf.pl";
    print"Content-type:text/html\n\n";
    print"<body bgcolor=#ffffdd><pre>";
    open(myfile,"$filename");
    @getrec = <myfile>
    close(myfile);  
    $i = 1;
    foreach $r (@getrec) {
       $r =~ s/</</g;
       $r =~ s/>/>/g;
       $r =~ s/"/"/g;
       print $i,". ",$r,"<br>";
       $i++;
    }    
    print"<hr>";
    

3.5 Perl สำหรับลบระเบียน

3.5 Perl สำหรับลบระเบียน
: โปรแกรมเล็ก ๆ ที่ใช้ลบระเบียนตาม key field ที่ป้อนเข้าไป
    Delete record on s-id :
    Html ที่ใช้เรียก perl มาทำงาน
    <form action=http://www.isinthai.com/thaiall/perldel.pl method=post>Delete record on
    s-id : <input type=text name=sid> <input type=submit value=Del_dataperl.txt>
    </form>
    
    ตัวอย่างโปรแกรม perl
    #!/usr/bin/perl
    &parse_form;
    print"Content-type:text/html\n\n";   
    $filename = "/home/burin/public_html/dataperl.txt";
    print "<body bgcolor=#ddffff><pre>";
    open(myfile,"<$filename");
    @getrec = <myfile>;
    close(myfile);      
    $i = 1;
    open(myfile,">$filename");
    foreach $rec (@getrec) {
      @r = split(/:/,$rec);
      if ($r[0] ne $config{'sid'}) {
        print myfile $rec;
      }
    }
    close(myfile);
    print "Delete : Finish";
    exit;
    
    sub parse_form {
      if ($ENV{'REQUEST_METHOD'} eq 'GET') {
        @pairs = split(/&/, $ENV{'QUERY_STRING'});
      } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
        read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
        @pairs = split(/&/, $buffer);
      }  
      foreach $pair (@pairs) {
        local($name, $value) = split(/=/, $pair);
        $name =~ tr/+/ /;
        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ s/<!--(.|\n)*-->//g; 
        $config{$name} = $value;
      }
    }
    

3.4 Perl สำหรับเพิ่มระเบียนใหม่

3.4 Perl สำหรับเพิ่มระเบียนใหม่
: โปรแกรมเล็ก ๆ เพิ่มระเบียนใหม่อย่างง่าย ๆ ทีละระเบียน
    Add new
    s-id :
    s-name :
    s-surname :
    s-salary :
    status:
    Html ที่ใช้เรียก perl มาทำงาน
    <form action=http://www.isinthai.com/thaiall/perladd.pl method=post>Add new<br>
    s-id : <input type=text name=sid><br>
    s-name : <input type=text name=sn><br>
    s-surname : <input type=text name=ss><br>
    s-salary : <input type=text name=ssal><br>
    status: <input type=text name=stat><br>
    <input type=submit value=Add_dataperl.txt>
    </form>
    
    ตัวอย่างโปรแกรม perl
    #!/usr/bin/perl
    &parse_form;
    print"Content-type:text/html\n\n";   
    $filename = "/home/burin/public_html/dataperl.txt";
    open(myfile,">>$filename");
    $dat = "$config{'sid'}:$config{'sn'}:$config{'ss'}:$config{'ssal'}:$config{'stat'}:\n";
    print myfile $dat;
    close(myfile);   
    print "Add new : Finish";
    exit;
    
    sub parse_form {
      if ($ENV{'REQUEST_METHOD'} eq 'GET') {
        @pairs = split(/&/, $ENV{'QUERY_STRING'});
      } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
        read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
        @pairs = split(/&/, $buffer);
      }  
      foreach $pair (@pairs) {
        local($name, $value) = split(/=/, $pair);
        $name =~ tr/+/ /;
        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ s/<!--(.|\n)*-->//g; 
        $config{$name} = $value;
      }
    }
    

3.3 Perl สำหรับแสดงข้อมูลจากแฟ้ม

: โปรแกรมเล็ก ๆ ที่อ่านข้อมูลจากแฟ้มมาแสดง

    perllst.pl
    Html ที่ใช้เรียก perl มาทำงาน
    <form action=http://www.isinthai.com/thaiall/perllst.pl method=post>
    <input type=submit value=List_dataperl.txt> perllst.pl
    </form>
    
    หรือ จะเรียกตรง ๆ ผ่าน URL ก็ได้เช่น http://www.isinthai.com/thaiall/perllst.pl
    ตัวอย่างโปรแกรม perl
    #!/usr/bin/perl
    print"Content-type:text/html\n\n";   
    $filename = "/home/burin/public_html/dataperl.txt";
    print "<body bgcolor=#ddffff><pre>";
    open(myfile,"<$filename");
    @getrec = <myfile>;
    close(myfile);      
    $i = 1;
    foreach $rec (@getrec) {
      @r = split(/:/,$rec);
      print $i,$r[0]," - ",$r[1],$r[2],$r[3],$r[4],$r[5],"\n";
      $i++;
    }
    

3.2 Perl สำหรับสร้างแฟ้ม

3.2 Perl สำหรับสร้างแฟ้ม
: โปรแกรมเล็ก ๆที่ใช้ในการสร้างแฟ้ม ตัวอย่างนี้มี 6 ระเบียน 5 เขตข้อมูล
    perlcrt.pl
    Html ที่ใช้เรียก perl มาทำงาน
    <form action=http://www.isinthai.com/thaiall/perlcrt.pl method=post>
    <input type=submit value=Create_dataperl.txt> perlcrt.pl
    </form>
    
    หรือ จะเรียกตรง ๆ ผ่าน URL ก็ได้เช่น http://www.isinthai.com/thaiall/perlcrt.pl
    ตัวอย่างโปรแกรม perl
    #!/usr/bin/perl
    print"Content-type:text/html\n\n";   
    $filename = "/home/burin/public_html/dataperl.txt";
    open(myfile,">$filename");
    $dat = "3101001:Tom:Jojo:16000:A:\n";
    print myfile $dat;
    $dat = "3101002:Naja:Rujj:5600:R:\n";
    print myfile $dat;
    $dat = "3101003:Packman:Somsu:7000:L:\n";
    print myfile $dat;
    $dat = "3101004:Nichole:Jaiboon:15000:A:\n";
    print myfile $dat;
    $dat = "3101005:Suwi:Hancharn:10600:A:\n";
    print myfile $dat;
    $dat = "3101006:Nirund:Jiva:9700:A:\n";
    print myfile $dat;
    close(myfile);   
    print "<body bgcolor=#ddffff>Create 6 Records and 5 Fields : Finish";
    

3.1 เริ่มต้นกับ perl

3.1 เริ่มต้นกับ perl


: เมื่อเขียน perl สักโปรแกรมหนึ่ง แล้วใช้ ftp upload เข้าไปใน home directory ของท่าน ก็ถือว่าผ่านจุดแรกแล้ว

    ตัวอย่างโปรแกรม perl ที่ใช้ในการทดสอบ 3 บรรทัด
    #!/usr/bin/perl
    print"Content-type:text/html\n\n";   
    print"<body bgcolor=#ffffdd>";
    print"<h1>This is test.</h1><br>By tester</body>";
    
    วิธีการทำให้ perl ใช้งานได้
  1. Host name ที่ท่านจะใช้อ้างอิงในการ upload คือ www.isinthai.com
  2. ก่อน upload ต้องให้แน่ใจว่า โปรแกรมของท่าน มีนามสกุลเป็น .pl
  3. ก่อน upload ต้องให้แน่ใจว่ากำหนด mode การส่งแบบ ascii ไม่ใช่ bin เพราะถ้าเป็น binary จะใช้งานไม่ได้
  4. หลัง upload แล้วให้ใช้ ftp version ใหม่หน่อย ทำการ chmod เป็น 755 เช่น chmod 755 f.pl เป็นต้น
  5. ตอนเรียกใช้ให้เรียกทาง url ดังนี้ http://www.isinthai.com/uname/f.pl
  6. ถ้าเรียกใช้แบบ http://www.isinthai.com/uname/f.pl จะแสดง source code ออกมาตรง ๆ ไม่ผ่านการประมวลผล
  7. ควรทราบว่า Home directory อยู่ที่ /home/uname

ภาษาเพิร์ล : Perl

ภาษาเพิร์ล (อังกฤษ: Perl) (ย่อมาจาก Practical Extraction and Report Language) เป็นภาษาโปรแกรมแบบไดนามิก พัฒนาโดยนายแลร์รี วอลล์ (Larry Wall) ในปี ค.ศ. 1987 เพื่อใช้งานกับระบบปฏิบัติการยูนิกซ์

ประวัติภาษา Perl   
            ภาษา Perl ย่อมาจากคำว่า Practical Extraction and Report Language ถูกพัฒนาขึ้นโดยนายแลร์รี วอลล์ (Larry Wall) ในปี 1996 เพื่อใช้งานกับระบบปฏิบัติการ Unix ซึ่งในขณะนั้นการพัฒนาแอพพลิเคชันบนระบบ Unix เป็นเรื่องที่ยุ่งยากและต้องมีความรู้ความเข้าใจในภาษาโปรแกรมหลายภาษา เพราะในขณะนั้นภาษาโปรแกรมแต่ละภาษาจะทำงานในเครื่องใดเครื่องหนึ่งโดยเฉพาะ การจะทำงานออกมาสักงานหนึ่งจะต้องใช้โปรแกรมแทบทุกภาษาที่มีในขณะนั้น อย่างเช่น ในส่วนของการทำงานกับไฟลืต้องใช้ภาษา awk หรือ grep และแก้ไขไฟล์ด้วยภาษา ded เป็นต้น
          ภาษา Perl ถูกสร้างขึ้นมาเพื่อทำงานทุกส่วนเสร็จสมบูรณ์ในตัวเองไม่ต้องไปเรียกใช้ภาษา อื่นอีก โดยที่ภาษา Perl ได้รวบรวมเอาข้อดีของภาษาต่างๆ ในขณะนั้นเข้ามาไว้ด้วยกัน อย่างเช่นภาษา grep/awk, sh, sed และ C ทำให้การสร้างแอพพลิเคชั่นบนระบบปฏิบัติการ Unix เป็นไปได้อย่างมีประสิทธิภาพมากขึ้น และที่สำคัญภาษา Perl ถูกออกแบบมาเพื่อให้ใช้งานง่าย
         ในปัจจุบันภาษา Perl สามารถใช้งานกับระบบปฏิบัติการที่หลากหลายไม่ว่าจะเป็น Unix, Linux, MVS, VMS, OS/2, Amiga และ Windows นอกจากนี้ด้วยความสามารถที่สำคัญของภาษา Perl ที่สามารถทำงานได้หลายด้าน เป็นเหตุให้ตัวภาษา Perl ถูกนำมาใช้เขียนโปรแกรมบนอินเทอร์เน็ตประเภทต่างต่าง เช่น เว็บ E-Commerce
ภาษา Perl ดีอย่างไร
      สำหรับข้อดีหลักๆ ที่สำคัญของการใช้งานภาษา Perl พอสรุปได้ดังนี้
1. ง่ายต่อการเรียนรู้ โดยภาษา Perl มีโครงสร้างของภาษาไม่ซับซ้อนเข้าใจง่าย ซึ่งโครงสร้างภาษา Perl จะคล้ายกับภาษา C มาก เพราะภาษา Perl สร้างขึ้นมาโดยใช้ภาษา C ทำให้ผู้ที่คุ้นเคยภาษา C อยู้แล้วใช้งานภาษา Perl ได้ไม่ยาก นอกจากนี้โดยตัวภาษาเองมีความยืดหยุ่นสูงทำให้การจัดการกับงานด้านข้อความ และ Text File ได้เป้นอย่างดี
2. ไม่ต้องเสียค่าใช้จ่ายใดๆ ทั้งสิ้น เพราะตัวแปรภาษา Perl อยู่ภายใต้ลิขสิทธิ์ GNU
3. ใช้ได้หลายแพลตฟอร์ม ในช่วงแรกภาษา Perl ถูกออกแบบใช้งานกับระบบ Unix อยู่ก็จริง แต่ในปัจจุบันได้มีการพัฒนาตัวแปลภาษา Perl ให้สามารถใช้กับระบบปฏิบัติการอื่นๆ อาทิเช่น Linux, Windows 95/98/ME, Windows NT, Windows 2000, OS/2, Macintosh
4. ภาษา Perl ถูกสร้างขึ้นโดยได้รวบรวมเอาส่วนดีของภาษาต่างๆ เข้ามาไว้ด้วยกัน อาทิเช่น ภาษา C, grep/awk, sh, sed
5. ภาษา Perl เป็นภาษาประเภท Server side Script คือการทำงานของภาษา Perl จะทำงานด้านฝั่ง Server แล้วส่งผลลัพธ์กลับมายัง Client ทำให้มีความปลอดภัยสูง
ภาษาเพิร์ล นั้นถูกออกแบบมาให้ใช้งานได้ง่าย โครงสร้างของภาษาจึงไม่ซับซ้อน มีลักษณะคล้ายกับภาษาซี นอกจากนี้เพิร์ลยังได้แนวคิดบางอย่างมาจากเชลล์สคริปต์, ภาษา AWK, sed และ Lisp
ปัจจุบันเวอร์ชันล่าสุดคือ 5.18.0

บทที่ 2 : คำสั่งสำหรับผู้ใช้ระดับกลาง (Intermediate user command) เพื่อต้องการตรวจสอบระบบ

บทที่ 2 : คำสั่งสำหรับผู้ใช้ระดับกลาง (Intermediate user command) เพื่อต้องการตรวจสอบระบบ

    2.1 คำสั่ง df : : : แสดง partition ของ linux พร้อมขนาดที่ใช้ไป 
    : แสดงเนื้อที่ใช้งานทั้งหมดของ Harddisk ว่าเหลือเท่าใด
ช่วยให้ผู้ดูแลระบบรู้ว่าตอนนี้เนื้อที่ใน Harddisk เหลืออยู่เท่าใด และอาจใช้ตรวจสอบได้ว่า มีใครแอบมา upload แฟ้มขนาดใหญ่ไว้หรือไม่ จะได้ตรวจสอบในรายละเอียดของแต่ละ user ต่อไป (ผมเองก็ใช้บ่อย เพราะถ้า server เล็ก ๆ จะเต็มบ่อยครับ ต้องคอย clear เสมอ)
    ตัวอย่างคำสั่ง และการใช้งาน
    df :: เพื่อแสดงรายงานสรุปการใช้ในแต่ละส่วน
      Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda5 505605 82764 396737 18% / /dev/hda1 101089 9180 86690 10% /boot /dev/hda3 1423096 41956 1308848 4% /home none 30740 0 30740 0% /dev/shm /dev/hda2 3889924 1551872 2140456 43% /usr /dev/hda6 1027768 952876 22684 98% /var
    : report filesystem disk space usage

     
    2.2 คำสั่ง du : : : แสดงพื้นที่ใช้งานในแต่ละ Directory 
    : แสดงเนื้อที่ใช้งาน ของแต่ละ directory โดยละเอียด
ช่วยให้ผู้ดูแลระบบรู้ว่า directory ใด ใช้เนื้อที่ใด หรือใช้ดูรวม ๆ ว่า ผู้ใช้แต่ละคนใช้เนื้อที่เก็บข้อมูลกันเท่าใด เพราะผู้ใช้ปกติจะใช้กันไม่เยอะ แต่ถ้าตรวจสอบแล้วเยอะผิดปกติ ก็จะเข้าไปดูว่า เยอะเพราะอะไร จะได้แก้ไขได้
    ตัวอย่างคำสั่ง และการใช้งาน
    du :: เพื่อแสดงรายชื่อ directory และเนื้อที่ที่ใช้ไป
    du -all :: เพื่อแสดงโดยละเอียดว่าแต่ละแฟ้มมีขนาดเท่าใด ใน directory ปัจจุบัน
    du | sort -g :: แสดงการใช้พื้นที่ของแต่ละ directory พร้อม sort จากน้อยไปมาก มีหน่วยเป็น Kb
    du -b :: แสดงหน่วยเป็น byte ของแต่ละ directory
    : estimate file space usage

     
    2.3 คำสั่ง ps : : : แสดง process ที่กำลังทำงานอยู่ทั้งของเครื่อง และตนเอง 
    : แสดง Process หรือโปรแกรมที่ประมวลผลอยู่ในระบบขณะนั้น
ช่วยให้ผู้ดูแลระบบ ติดตามได้ว่ามีโปรแกรมอะไรที่ไม่ถูกต้อง run อยู่ หรือโปรแกรมอะไร ที่ผู้ศึกษาลองประมวลผลแล้วค้างอยู่ จะได้ทำการแก้ไข มิเช่นนั้นระบบก็จะทำงานค้าง เพราะโปรแกรมที่ไม่ควรอยู่ในระบบ กำลังประมวลผลโดยไม่จำเป็น โดยเฉพาะพวก bot จะทำให้ server ล่มง่ายมาก
    ตัวอย่างคำสั่ง และการใช้งาน
    ps -ef :: แสดงข้อมูลของ process โดยละเอียด
    ps -ax :: แสดงข้อมูลของ process พร้อมชื่อโปรแกรมได้ละเอียด
    ps -aux :: แสดงข้อมูลของ process พร้อมชื่อโปรแกรม และชื่อผู้สั่งได้ละเอียดมาก
    ps -aux | grep sendmail :: sendmail เชื่อมต่อไปที่ใดขณะนี้
    : report a snapshot of the current processes.

     
    2.4 คำสั่ง kill : : : ยกเลิก process ที่ทำงานอยู่ 
    : เมื่อทราบว่า process ใดที่มีปัญหา สามารถลบ process ตามเลข process ออกจากระบบได้
ช่วยยกเลิก process ที่ไม่ถูกต้องออกจากระบบ ถ้าขณะนั้นผู้ใช้คนหนึ่งกำลังใช้งานอยู่ หาก process หลักของเขาถูก kill จะทำให้ผู้ใช้ท่านนั้น หลุดออกจากระบบทันที (สำหรับคำสั่งนี้จะถูกใช้โดย super user เท่านั้น ผู้ใช้ธรรมดาไม่มีสิทธิ)
    ตัวอย่างคำสั่ง และการใช้งาน
    kill -9 เลขประจำprocess :: เลขประจำ process ท่านจะได้จากการใช้ ps -ef อยู่แล้ว
    kill -9 1255 :: ลบ process ที่ 1255 ออกจากระบบไป
    : terminate a process

     
    2.5 คำสั่ง find : : : ค้นหาแฟ้มที่ต้องการภายในทุก ๆ directory ได้ 
: ค้นหาแฟ้มที่ต้องการว่าอยู่ที่ใดในเครื่องเรา

    ตัวอย่างคำสั่ง และการใช้งาน
    find / -name hello.pl :: ใช้ค้นหาแฟ้ม hello.pl ในทุก directory
    find / -name hello* :: ใช้ค้นหาแฟ้มที่ขึ้นต้นด้วยคำว่า hello
    find /bin -size 626188c :: ใช้ค้นหาแฟ้มที่มีขนาด 626188 ถ้าเป็น RH8 จะพบแฟ้ม bash
     
    2.6 คำสั่ง gzip : : : คลายการบีบอัด หรือแตกแฟ้มประเภท .gz 
: ใช้สำหรับแตกแฟ้มที่ถูกบีบอัด ซึ่งมีสกุล .gz .z แต่อาจใช้ tar แทนได้สำหรับ .tar.gz

    ตัวอย่างคำสั่ง และการใช้งาน
    gzip -d x.tar.gz :: ใช้แตกแฟ้มที่นามสกุล gz
    man gzip :: ใช้ดูว่า gzip ใช้งานอะไรได้บ้าง
    gzip -d radius-1.16.1.tar.Z :: ได้แฟ้มนี้จาก ftp.livingston.com/pub/le/radius/ เป็นระบบรับโทรศัพท์เข้าเครือข่าย
    gzip -dc x.tar.Z|tar xvf - :: ประหยัดขั้นตอนในการใช้คำสั่ง 2 ครั้ง เพราะคำสั่งชุดนี้จะใช้ทั้ง gzip และ tar กับ x.tar.z ได้ตามลำดับ
     
    2.7 คำสั่ง tar : : : คลายการบีบอัด หรือแตกแฟ้มประเภท .tar 
: ใช้สำหรับแตกแฟ้มที่ถูกบีบอัด แล้วนามสกุล tar

    ตัวอย่างคำสั่ง และการใช้งาน
    tar xvf x.tar :: ใช้สำหรับแตกแฟ้มที่นามสกุล tar ปกติแล้วจะมีการสร้าง directory ของแฟ้มพร้อมโปรแกรมอีกเพียบ
    tar xvfz squid-2.3-200103110000-src.tar.gz :: จะคลาย gz พร้อมกับใช้คำสั่ง tar ได้พร้อม ๆ กัน ไม่ต้องใช้ gzip และมาใช้ tar
    man tar :: ใช้ดูว่า tar ใช้งานอะไรได้บ้าง
    tar zcvf abc.tar.gz /etc :: ใช้ copy /etc เก็บเป็นแฟ้ม abc.tar.gz แบบบีบอัด
    tar zxvf abc.tar.gz :: ใช้คลายแฟ้ม abc.tar.gz ซึ่งจะได้ directory /etc ออกมาทั้งหมด
     
    2.8 คำสั่ง last : : : แสดงรายชื่อผู้ใช้งานระบบปัจจุบันไปถึงอดีต 
: ใช้แสดงรายชื่อผู้ login เข้ามาล่าสุด

    ตัวอย่างคำสั่ง และการใช้งาน
    last |grep reboot :: ใช้ดูระบบถูก reboot เมื่อใดบ้าง
    last |more :: ใช้รายชื่อผู้ login เข้ามาในระบบล่าสุดทีละหน้า
     
    2.9 คำสั่ง grep : : : เลือกข้อความที่ต้องการภายในแต่ละบรรทัด 
: ใช้สำหรับเลือกข้อมูลเฉพาะบรรทัดที่ต้องการ

    ตัวอย่างคำสั่ง และการใช้งาน
    more /etc/passwd|grep thaiall :: ใช้แสดงข้อมูลในแฟ้ม /etc/passwd แต่เลือกเฉพาะบรรทัดที่มีคำว่า thaiall
    rpm -qa|grep ftp :: ใช้ดูว่าระบบลงโปรแกรม ftp หรือยัง เวอร์ชั่นใดบ้าง
    last |grep reboot :: ใช้ดูระบบถูก reboot เมื่อใดบ้าง
     
    2.10 คำสั่ง date, hwclock : : : ใช้กำหนด หรือแสดงเวลาปัจจุบัน 
: ใช้ดูวันที่ หรือเปลี่ยนวันที่ และเวลาได้ date [OPTION] [MMDDhhmm[[CC]YY][.ss]]

    ตัวอย่างคำสั่ง และการใช้งาน
    date +%x :: ดูวันที่ปัจจุบัน เช่นการแสดงเลข 04/27/01 ออกมา
    date +%d :: ดูวันที่ปัจจุบัน เช่นการแสดงเลข 27 ออกมา
    date 04271340 :: กำหนดวันที่ใหม่ให้เป็น วันที่ 27 เดือน 4 เวลา 13.40 น. (mmddhhmmccyy)
    hwclock --systohc :: เมื่อเปลี่ยนเวลาด้วย date หาก restart เครื่องเวลาจะผิดเหมือนเดิมต้องใช้คำสั่งนี้ เพื่อเขียนเวลาลงไปใน hardware clock จึงจะเปลี่ยนเวลา hardware ได้
     
    2.11 คำสั่ง top : : : แสดง process ที่ทำงานในปัจจุบัน พร้อม refresh ตลอดเวลา 
: ใช้แสดงสถานะการใช้ทรัพยากร ภายในเครื่อง

    ตัวอย่างคำสั่ง และการใช้งาน
    top :: แสดงการใช้ทรัพยากรของเครื่อง จากแต่ละ process ทดสอบคำสั่งนี้ใน Redhat 8.0
    ตัวอย่างผลของการใช้คำสั่ง
    CPU states:  0.5% user,  1.3% system,  0.0% nice, 98.0% idle
    Mem:    31328K av,   28872K used,    2456K free,       0K shrd,    1032K buff
    Swap: 1718912K av,    2608K used, 1716304K free                   16528K cached
    
      PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME COMMAND
    18306 root      14   0   852  852   672 R       0  1.5  2.7   0:00 top
    18229 root       1   0  1684 1536  1240 S       0  0.3  4.9   0:00 sshd
        1 root       0   0   160  116    92 S       0  0.0  0.3   0:08 init
        2 root       0   0     0    0     0 SW      0  0.0  0.0   0:01 kflushd
    
     
    2.12 คำสั่ง ntsysv และ setup : : : กำหนดบริการที่ต้องการเปิด หรือปิด เช่น httpd หรือ vsftp เป็นต้น 
                 : ใช้เปิด-ปิด บริการของเครื่องที่สะดวกรวดเร็ว

    ตัวอย่างคำสั่ง และการใช้งาน
    setup :: แสดงการตัวเลือกให้กำหนดบริการต่าง ๆ ปกติจะเลือก system services
    บริการที่เปิดใน server ของผมประกอบด้วย httpd, imap, ipop3, iptables, named, network, sendmail, servers, services, vsftpd, xinetd เพื่อให้บริการ web, mail, ftp และ dns
    ntsysv :: ใช้เปิด-ปิดบริการ ให้ผลเหมือน setup, services (แต่คำสั่งนี้ถูกยกเลิกใน RH รุ่นใหม่ ลองใน Fedora พบว่าใช้ได้ครับ)
     
    2.13 คำสั่ง route : : : ใช้กำหนด แสดง ตารางเส้นทาง 
: ใช้เส้นทางการเชื่อมเครือข่าย

    ตัวอย่างคำสั่ง และการใช้งาน
    # route
    
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    202.29.78.0     *               255.255.255.0   U     0      0        0 eth0
    127.0.0.0       *               255.0.0.0       U     0      0        0 lo
    default         202.29.78.254   0.0.0.0         UG    0      0        0 eth0
    
     
    2.14 คำสั่ง shutdown, reboot : : : ใช้ปิดเครื่อง หรือ ปิดและเปิดเครื่องใหม่อย่างถูกวิธี 
: ใช้ปิดเครื่อง หรือ ปิดและเปิดเครื่องใหม่อย่างถูกวิธี

    ตัวอย่างคำสั่ง และการใช้งาน
    shutdown -h now หรือ halt :: สั่งปิดเครื่องทันที (แต่ใช้เวลาประมาณ 1 นาทีเพื่อปิดบริการต่าง ๆ)
    reboot หรือ shutdown -r now :: ปิด และเปิดเครื่องใหม่ หากติดตั้งโปรแกรมบางตัว และ clear ค่าต่าง ๆ หากไม่แน่ใจ
     
    2.15 คำสั่ง runlevel : : : คู่กับแฟ้ม /etc/inittab 
    : คู่กับแฟ้ม /etc/inittab เพื่อบอกว่าปัจจุบันอยู่ใน level ใด
: ถ้าต้องการเปลี่ยน level ต้องใช้คำสั่ง chkconfig ให้ดูเพิ่มเติมจาก 2.18

    ตัวอย่างคำสั่ง และการใช้งาน
    #/sbin/runlevel :: แสดง level ปัจจุบัน
    #cat /etc/inittab :: แสดงตาราง กำหนดการสั่งเครื่อง ว่าใช้ level ใด
     
    2.16 คำสั่ง fsck : : : ซ่อมแซมระบบแฟ้มใน linux 
: ซ่อมแซมระบบแฟ้มใน linux

    ตัวอย่างคำสั่ง และการใช้งาน
    #fsck / :: ใช้ซ่อม harddisk ในห้อง / เมื่อ harddisk เกิดปัญหา
    #fsck /dev/hdc :: ใช้ซ่อม harddisk ที่ชื่อ /dev/hdc ถ้าต่อ harddisk ไว้หลายตัว
     
    2.17 คำสั่ง chown, chgrp : : : เปลี่ยนเจ้าของ หรือเปลี่ยนกลุ่ม 
    : เปลี่ยนเจ้าของ หรือเปลี่ยนกลุ่ม

ตามหัวข้อ 1.2 เรื่องคำสั่ง chmod ทำให้ทราบว่า แฟ้มแต่ละแฟ้มมี 3 ส่วน คือเจ้าของ กลุ่ม และทั่วไป เมื่อต้องการเปลี่ยนความเป็นเจ้าของ หรือกลุ่ม ก็สามารถทำได้ ซึ่งเป็นหลักการง่าย ๆ ไม่ยุ่งยาก
    ตัวอย่างคำสั่ง และการใช้งาน
    #chown burin:users x :: เปลี่ยนเจ้าของของแฟ้ม x ให้เป็น burin และอยู่ในกลุ่มของ users
    #chgrp users y :: เปลี่ยนกลุ่มของแฟ้ม x ให้เป็น users
     
    2.18 คำสั่ง chkconfig : : : กำหนด หรือแสดง บริการที่สั่งประมวลผลใน level ต่าง ๆ ขณะเปิดเครื่อง 
    : กำหนด หรือแสดง บริการที่สั่งประมวลผลใน level ต่าง ๆ ขณะเปิดเครื่อง

คำว่า level คือระดับในการเปิดเครื่อง ดูได้จากแฟ้ม /etc/inittab โดยโปรแกรมต่าง ๆ ที่สั่งให้ประมวลผล สามารถเลือกให้ทำงานใน level ใดได้ หากสั่งให้ประมวลผลปิด level เมื่อมีการ start linux ใน level หนึ่ง โปรแกรมที่คิดว่าสั่งให้ทำงานขณะเปิดเครื่อง ก็จะไม่ทำงาน
    # /etc/inittab
    # Default runlevel. The runlevels used by RHS are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode
    #   4 - unused
    #   5 - X11
    #   6 - reboot (Do NOT set initdefault to this)
    #id:5:initdefault:
    id:3:initdefault:
    
    ตัวอย่างคำสั่ง และการใช้งาน
    #/sbin/chkconfig --add mysql :: สั่งให้เพิ่ม mysql เข้าไปในระบบ system services
    #/sbin/chkconfig --list :: แสดงรายการโปรแกรมทั้งหมด ที่สั่งให้ทำงานใน level ต่าง ๆ
    #/sbin/chkconfig --level 3 sendmail on :: สั่งโปรแกรม sendmail ทำงานใน level 3 (Text mode)
    #/sbin/chkconfig --level 5 sendmail on :: สั่งโปรแกรม sendmail ทำงานใน level 5 (X Windows)
     
    2.19 คำสั่ง mount, umount : : : สั่งเชื่อมต่ออุปกรณ์ หรือ partition เช่น Diskette หรือ Handy drive เป็นต้น 
    : สั่งเชื่อมต่ออุปกรณ์ หรือ partition เช่น Diskette หรือ Handy drive เป็นต้น

การใช้ mount เป็นสิ่งที่ผู้ดูแลระบบต้องเข้าใจหลักการให้ได้ เพราะเป็นช่องทางในการติดต่อกับอุปกรณ์ต่าง ๆ ล่าสุด ผมต่อ harddisk เข้าไปในเครื่อง server เพิ่มอีก 1 ตัว ซึ่งระบบมอง harddisk ตัวที่เพิ่มเข้าไปเป็น hdc ด้วยคำสั่ง fdisk -l เมื่อต้องการ partition ที่ 1 ของ hdc มาเป็นห้อง /x ก็เพียงแต่ใช้คำสั่งสร้างห้องคือ #mkdir /x สำหรับครั้งแรก แล้วใช้คำสั่ง #mount /dev/hdc1 /x ก็จะใช้ห้อง /x ซึ่งอยู่ใน harddisk อีกตัวหนึ่งได้ทันที
    คำสั่งที่เกี่ยวข้องกับคำสั่ง mount
      #cat /etc/fstab : ดู file system table เพื่อบอกว่ามีอะไร mount ไว้แล้วบ้าง
      #cat /etc/mtab : ดูรายละเอียดการ mount ในอีกรูปแบบหนึ่ง
      #cat /proc/mounts : บอกว่ามีอะไร mount ไว้แล้วบ้าง
      #cat /proc/partitions : บอกชื่อ และขนาดของแต่ละ partitions
      #cat /proc/filesystems : บอกประเภทของ filesystems ที่มีการสนับสนุน
      #/sbin/fdisk -l : แสดง partition จาก harddisk ทุกตัวที่เชื่อมต่อในเครื่องนั้น

    ตัวอย่างคำสั่ง และการใช้งาน
    #mount --bind /var/www /home/yourname/www
    #mount
    แสดงข้อมูลที่เคย mount ไว้ทั้งหมด

    วิธีใช้แผ่น Floppy Disk ใน linux
      #mkdir /floppy
      #mkfs -t ext3 /dev/fd0 1440
      #mount -t ext3 /dev/fd0 /floppy
      - or -
      #mkdir /floppy
      #mkfs -t msdos /dev/fd0 1440
      #mount -t msdos /dev/fd0 /floppy

      ต่อไปในห้อง /floppy ก็คือแผ่น disk ใน drive A ส่วน /dev/fd1 ก็คือ drive B แต่ต้องเริ่มทำใหม่นะครับ
    วิธีใช้ Handy Drive เช่น Apacer (ต้อง umount ก่อนดึง apacer ออกก่อนเสมอ)
      #mkdir /mnt/apacer (Just first time)
      #mount /dev/sda1 /mnt/apacer
      ...
      #cd /
      #umount /dev/sda1
      - and -
      #pico /etc/fstab Add: /dev/sda1 /mnt/apacer auto noauto,user 0 0
    วิธีเรียกใช้แฟ้มใน Partition อื่น เช่น WindowsXP
    cd / :: ย้ายตัวเองไปยัง root directory
    mkdir hd :: สร้างห้องชื่อ hd ซึ่งเป็นห้องเปล่าไม่มีอะไร
    fdisk -l :: ดูว่ามี partition อะไรในเครื่องบ้าง ที่ต้องการ mount เข้ากับ /hd
    mount /dev/hdb2 /hd :: ทำให้เรียกใช้ /dev/hdb2 จาก /hd ได้ เช่น cd /hd/etc ถ้าใน hdb2 มีห้องชื่อ etc
    umount /hd :: ยกเลิกการ mount /hd

    วิธีใช้ CDROM
    mount :: แสดงรายการอุปกรณ์ หรือห้องต่าง ๆ ที่ถูก mount ไว้แล้ว
    mount -t ext3 :: แสดงให้เห็นว่า partition แบบ ext3 มีอะไรถูก mount ไว้บ้าง
    mount -t vfat :: แสดงให้เห็นว่า partition แบบ vfat มีอะไรถูก mount ไว้บ้าง
    mount /dev/cdrom :: ใช้ติดต่อ CD ROM เมื่อเข้าไปใช้เช่น #cd /mnt/cdrom และใช้ #ls
    umount /dev/cdrom :: เพื่อเลิกใช้ CD ROM หรือต้องการดึงแผ่นออก แต่ท่านต้องออกมาก่อนด้วยคำสั่ง #cd / เป็นต้น
    eject :: ถ้าไม่ umount ด้านล่าง ก็สั่ง eject เพื่อดีด CD-ROM ออกได้เลยครับ และไม่ต้องสั่ง umount หรือออกจากห้องก่อนนะ

    ตัวอย่างผลการใช้คำสั่ง #mount ใน server ตัวหนึ่ง
    /dev/hda5 on / type ext3 (rw)
    none on /proc type proc (rw)
    /dev/hda1 on /boot type ext3 (rw)
    none on /dev/pts type devpts (rw,gid=5,mode=620)
    /dev/hda3 on /home type ext3 (rw)
    none on /dev/shm type tmpfs (rw)
    /dev/hda2 on /usr type ext3 (rw)
    /dev/hda6 on /var type ext3 (rw)
     
    2.20 คำสั่ง mkbootdisk : : : สร้างแผ่น boot disk เพื่อใช้ boot ระบบ linux ขึ้นมาภายหลัง 
    : สร้างแผ่น boot disk เพื่อใช้ boot ระบบ linux ขึ้นมาภายหลัง และมีการทำงานแบบ stand alone

คำสั่งนี้ผมเคยใช้ตอนคัดลอก harddisk ที่เป็น linux 2 ตัว แต่ตัวลูกเมื่อนำไปเสียบเข้าเครื่องใหม่ พบว่า boot ด้วยตนเองไม่ได้ จึงต้องหาแผ่น boot จนเข้าไปใน harddisk ได้ จากนั้นก็สั่ง #lilo เพื่อให้การ boot ครั้งต่อไปสามารถทำงานตาม /etc/lilo.conf ได้ตามปกติ ส่วนตัวเลข 2.4.18-14 เป็นเลขรุ่นของ kernel ใน Redhat 8.0 สังเกตเลขนี้ได้ตอน boot เครื่อง
    ตัวอย่างคำสั่ง และการใช้งาน
    mkbootdisk --device /dev/fd0 2.4.18-14 :: สร้างแผ่น disk เพื่อใช้ boot เข้า linux ในกรณีที่ระบบ boot ของเครื่องมีปัญหา
     
    2.21 คำสั่ง traceroute : : : แสดงเลข ip ของเครื่องที่ถูกเชื่อมต่อ ไปยังปลายทางที่ต้องการ 
    : แสดงเลข ip ของเครื่องที่ถูกเชื่อมต่อทั้งหมด ไปยังปลายทางที่ต้องการ

ตัวอย่างข้างล่างนี้แสดงให้เห็นว่า เมื่อในวิทยาลัยโยนกเปิดเว็บ www.thai.net จะต้องติดต่อผ่านเครื่องบริการ 8 ตัว ดังตัวอย่างล่างนี้ ถ้าเปิดเว็บไซต์ต่างประเทศ ก็จะมีจำนวนเครื่องในการติดต่อมากขึ้นไปด้วย เครื่องบริการในที่นี้ มักเป็นอุปกรณ์ที่เรียกว่า router และ router ทุกตัวจะมี ip และความสามารถเฉพาะตัวที่ต่างกันไป โดยหน้าที่หลักของ router ก็คือการกำหนดเส้นทางในการติดต่อนั่นเอง
    ตัวอย่างคำสั่ง และการใช้งาน
    /usr/sbin/traceroute www.thai.net
      traceroute to www.thai.net (203.150.13.2), 30 hops max, 38 byte packets
       1  door.yonok.ac.th (202.29.78.254)  2.046 ms  1.962 ms  2.532 ms
       2  202.28.29.41 (202.28.29.41)  3.703 ms  3.294 ms  3.760 ms
       3  UniNet-BKK2-ATM1-0-0.700.uni.net.th (202.28.28.129)  14.185 ms  13.226 ms  14.614 ms
       4  202.28.28.18 (202.28.28.18)  13.705 ms  13.227 ms  14.130 ms
       5  202.47.255.2 (202.47.255.2)  13.222 ms  13.890 ms  13.210 ms
       6  202.129.63.182 (202.129.63.182)  16.649 ms  14.960 ms  15.659 ms
       7  juliet-vlan-2.bkk.inet-th.net (203.150.14.22)  14.817 ms  15.573 ms  15.610 ms
       8  www.thai.net (203.150.13.2)  15.628 ms  14.775 ms  14.222 ms
      
     
    2.22 คำสั่ง rpm : : : ใช้ตรวจสอบ เพิ่ม หรือลบ package ของระบบ linux เกือบทั้งหมด 
    : ใช้ตรวจสอบ เพิ่ม หรือลบ package ของระบบ linux เกือบทั้งหมด

จากประสบการณ์ ไม่แน่ใจว่าเกิดจากอะไร เมื่อลง Redhat 7.2 แล้ว แต่ระบบไม่บริการ pop3 จึงได้ทำการ mount /dev/cdrom จากนั้นก็ทำการ install package pop เพิ่มเข้าไป ที่รู้เพราะลองใช้คำสั่ง telnet localhost 110 แล้ว error จึงต้องทำการเพิ่ม package pop เข้าไปใหม่ โดยใช้คำสั่ง rpm -i imap-4.7-5.i386.rpm ที่รู้เพราะได้ใช้ cd เข้าไปในห้อง /mnt/cdrom/RedHat/RPMS จึงพบแฟ้มมากมายที่สามารถ install เพิ่มได้
    ตัวอย่างคำสั่ง และการใช้งาน
    rpm -i imap-4.7-5.i386.rpm :: ใช้ install package pop เข้าไปใน linux ใหม่ เพราะไม่มี และให้ดูเพิ่มเติมจาก 8.99 เกี่ยวกับการติดตั้งโปรแกรมจาก CD-ROM
    rpm -qa|grep imap :: ใช้ดูว่ามี package อะไรบ้างที่ขึ้นต้นด้วย imap
    rpm -qa :: ใช้ดูรายชื่อ package ทุกตัวที่ install ไว้แล้ว
    rpm -q telnet :: ใช้ตรวจว่ามี package ชื่อ telnet อยู่หรือไม่
    rpm -qpl imap-4.7-5.i386.rpm :: แสดงชื่อแฟ้มใน package แต่ต้องเข้าไปที่ /mnt/cdrom/RedHat/RPMS ก่อนนะครับ
    rpm -qf /usr/sbin/vi :: จะแสดง vim-minimal-5.6-11 ซึ่งเป็นรุ่นของ vi นั้น
    rpm -qf /usr/sbin/httpd :: จะได้ apache-1.3.12-2 ซึ่งเป็นรุ่นที่ติดตั้งมาใน linux 6.2
    rpm -e apache-1.3.12-2 :: ลบ หรือ erase โปรแกรม apache-1.3.12-2 ออกจากเครื่อง
    rpm -Fvh openssl-0.9.5a-2.6.x.i386.rpm :: Upgrade โปรแกรม แต่ต้องลงโปรแกรมก่อนมิเช่นนั้น ไม่สำเร็จนะครับ
    rpm -qi vsftpd :: แสดงรายละเอียดของ Application เช่น ขนาด วันติดตั้ง รุ่น ผู้ผลิต เป็นต้น
    ในกรณีที่ท่านมีโปรแกรมตัวใหม่มา สามารถที่จะลบโปรแกรมเพิ่มโดยใช้คำสั่ง rpm ได้ หรือต้องการตรวจสอบว่า มี package บางตัว install อยู่หรือไม่ หรือจะยกเลิกโปรแกรมบางตัวออกจากระบบก็ทำได้ หรือจะแสดงรายชื่อ package ทั้งหมดในระบบก็ทำได้อีก รวมทั้งการตรวจ version ของ package แต่ละตัว
     
    2.23 คำสั่ง su : : : ขอเปลี่ยนตนเองเป็น Super user เพื่อใช้สิทธิสูงสุดในการบริหารระบบ ที่ผู้ใช้ปกติทำไม่ได้ 
    : ขอเปลี่ยนตนเองเป็น Super user หรือ root เพื่อใช้สิทธิสูงสุดในการบริหารระบบ ที่ผู้ใช้ปกติทำไม่ได้

shell_exec("echo $pass |sudo -u root -S /usr/bin/passwd $user --stdin"); ใช้กำหนดรหัสผ่าน หลังสร้างรหัสผู้ใช้แล้ว
    การจะใช้ su ได้จะต้องเป็นผู้ใช้ตามปกติ เมื่อพิมพ์ su แล้วระบบจะถามรหัสผ่านของ user root หากพิมพ์รหัสผ่านถูกต้อง ท่านก็จะสามารถกระทำการใด ๆ ก็ได้ ในฐานะ root เพราะ root หรือ super user คือผู้ที่มีอำนาจสูงสุดในระบบ เช่น เพิ่มผู้ใช้ท่านใหม่ ลบผู้ใช้คนเดิม เป็นต้น (เพียงแต่พิมพ์คำว่า su ท่านก็สามารถเปลี่ยนสิทธิได้แล้ว ถ้าท่านมีรหัสผ่านของ su) เดิมผมใช้แค่คำว่า su ต่อมาคุณประเสริฐ แนะนำว่าต้องใช้ su - จึงจะสมบูรณ์ พอทดสอบก็พบว่า $PATH ที่ได้แตกต่างกันจริง
      ตัวอย่างคำสั่ง และการใช้งาน
      #su - :: เปลี่ยนตนเองเป็น super user เพื่อกระทำการใด ๆ ก็ได้กับตัวระบบ
      #su prasert :: ไม่ว่าขณะที่ login เป็น user ใด เมื่อต้องการเปลี่ยนเป็น user prasert ก็ไม่ต้อง logout แล้ว login ใหม่ ใช้คำสั่งนี้ได้เลย
    คำสั่ง sudo คือ execute a command as another user เมื่อเรียกด้วยภาษา php
    shell_exec("sudo -u root -S /usr/sbin/useradd $user"); ใช้ความเป็นผู้ใช้ root เรียกใช้คำสั่ง useradd

     
    2.24 คำสั่ง useradd : : : เพิ่มผู้ใช้รายใหม่เข้าไปในระบบ 
                               : เพิ่มผู้ใช้รายใหม่เข้าไปในระบบ

    ตัวอย่างคำสั่ง และการใช้งาน
    #useradd theman :: เพิ่มผู้ใช้รายใหม่เข้าไปในระบบชื่อ theman ในกลุ่ม theman และมี home directory เป็น /home/theman
    #useradd -g users -d /home/theman -c "user name here" theman :: เพิ่มผู้ใช้รายใหม่เข้าไปในระบบชื่อ theman
     
    2.25 คำสั่ง userdel : : : ลบผู้ใช้รายเดิม ออกจากระบบ 
: ลบผู้ใช้รายเดิม ออกจากระบบ

    ตัวอย่างคำสั่ง และการใช้งาน
    #userdel -r theman :: ลบ theman และ home directory ของ theman ออกหมด
     
    2.26 คำสั่ง usermod : : : แก้ไขข้อมูลของผู้ใช้ได้ 
: แก้ไขข้อมูลของผู้ใช้ได้

    ตัวอย่างคำสั่ง และการใช้งาน
    #usermod -s /rbin/menu theman :: กำหนดให้ shell สำหรับ user ที่ชื่อ theman ใหม่ เพื่อจำกัดสิทธิในการเข้าใช้ shell
    #usermod -d /home/theman theman :: กำหนดให้ theman มี homedirectory อยู่ที่ /home/theman
    #usermod -c "Mr.Suwit Somsupabrungyod" theman :: กำหนดให้ comment หรือชื่อ เป็น Mr.Suwit Somsupabrungyod ซึ่ง comment จะไปแสดงผลให้เห็นชัดเจนตอนที่ใช้ pine เมื่อพิมพ์คำว่า theman ในช่อง to ขณะที่กำลัง compose จะแสดง comment หน้า email ให้ทันที
     
    2.27 คำสั่ง crontab : : : ตั้งเวลาสั่งงานคอมพิวเตอร์ 
: ตั้งเวลาสั่งงานคอมพิวเตอร์

    ตัวอย่างคำสั่ง และการใช้งาน
    #crontab -l :: แสดงกำหนดการของการสั่งให้คอมพิวเตอร์ทำงานอย่างอัตโนมัติ ตามเวลาที่กำหนด
    #cat /etc/crontab :: แสดงตาราง crontab ในเครื่อง
     
    2.28 คำสั่ง lspci : : : ตรวจสอบอุปกรณ์ที่เชื่อมต่อภายในเครื่อง 
: ตรวจสอบอุปกรณ์ที่เชื่อมต่อภายในเครื่อง

    ตัวอย่างคำสั่ง และการใช้งาน
    #lspci
      00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
      00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
      00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)
      00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
      00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
      00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 02)
      00:0f.0 PCI bridge: Digital Equipment Corporation DECchip 21152 (rev 03)
      00:11.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 24)
      01:00.0 VGA compatible controller: ATI Technologies Inc 3D Rage Pro AGP 1X/2X (rev 5c)
      
     
    2.29 คำสั่ง nmap : : : ตรวจสอบเครือข่ายแบบกวาดทั้งในเครื่อง และ class C
: ตรวจสอบเครือข่ายแบบกวาดทั้งในเครื่อง และ class C
    ตัวอย่างคำสั่ง และการใช้งาน
      #nmap -sP 202.29.78.* 
      Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
      Host   (202.29.78.0) seems to be a subnet broadcast address (returned 1 extra pings). 
      Note -- the actual IP also responded.
      Host www.isinthai.com (202.29.78.1) appears to be up.
      Host course.yonok.ac.th (202.29.78.5) appears to be up.
      Host yonok.ac.th (202.29.78.12) appears to be up.
      Host w2kdhcp.yonok.ac.th (202.29.78.17) appears to be up.
      Host  (202.29.78.31) appears to be up.
      Host  (202.29.78.32) appears to be up.
      Host  (202.29.78.33) appears to be up.
      
      #nmap -sT www.yonok.ac.th (on TCP)
      Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
      Interesting ports on yonok.ac.th (202.29.78.12):
      (The 1590 ports scanned but not shown below are in state: closed)
      Port       State       Service
      21/tcp     open        ftp
      22/tcp     open        ssh
      25/tcp     open        smtp
      53/tcp     open        domain
      80/tcp     open        http
      109/tcp    open        pop-2
      110/tcp    open        pop-3
      
      #nmap www.yonok.ac.th -sU (on UDP)
      Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
      Interesting ports on yn1.yonok.ac.th (202.29.78.12):
      (The 1465 ports scanned but not shown below are in state: closed)
      Port       State       Service
      53/udp     open        domain
      111/udp    open        sunrpc
      867/udp    open        unknown
      
     

วันศุกร์ที่ 19 พฤษภาคม พ.ศ. 2560

บทที่ 1 : คำสั่งสำหรับผู้ใช้พื้นฐาน (Basic user command)

How to linux (Case study จาก Redhat 6.2 ไปถึง Fedora Core 4)

บทที่ 1 : คำสั่งสำหรับผู้ใช้พื้นฐาน (Basic user command)
    1.1 คำสั่ง ls : : : แสดงรายชื่อแฟ้มในห้องปัจจุบัน หรือห้องอื่น ๆ ที่ต้องการ 
               : ใช้แสดงรายชื่อแฟ้มทั้งหมดใน home directory
ทุกท่านที่มี account ใน linux จะมี home directory ของตนเอง เพื่อใช้เก็บแฟ้มต่าง ๆ ภายใต้ระบบ linux เมื่อต้องการทราบว่ามีแฟ้มอะไร เก็บไว้บ้าง สามารถใช้คำสั่ง ls ได้ และสามารถกำหนด parameter ได้หลายตัว เช่น -al --sort เป็นต้น ถ้าต้องการทราบว่าปัจจุบันตนเองอยู่ใน Directory ใด ให้ใช้คำสั่ง pwd
    ตัวอย่างคำสั่ง และการใช้งาน
    ls -alt :: เพื่อแสดงรายชื่อแฟ้ม และจัดเรียงตามเวลา (a=all, l=long listing, t=sort by modification time)
    ls -alt | more :: เพื่อแสดงรายชื่อแฟ้มทั้งหมด แต่หยุดทีละหน้า ถ้ามีจำนวนแฟ้มเกินที่จะแสดงได้ ใน 1 หน้า
    ls -al --sort=time | more :: แสดงรายชื่อแฟ้มเรียงตามเวลา แยกทีละหน้า แบบ long listing
    ls -R | more :: แสดงรายชื่อในทุก directory ในห้องปัจจุบัน (R=Recursive)
    ls -alSR | grep Trash | more :: แสดงข้อมูลแฟ้ม Trash จากทุก Sub directory
    ls -alS | more :: แสดงรายชื่อแบบจัดเรียงตามขนาดแบบ Descending ใช้ดูขนาด mail box ใน /var/mail ได้ดี
    ถ้าสังเกตนะครับ แฟ้มที่มี . หน้าชื่อแฟ้ม หมายถึง แฟ้มที่ซ่อนไว้ ถ้าใช้คำสั่ง ls หรือ ls -l จะไม่เห็นแฟ้มเหล่านี้
    ถ้ามีอักษร D ที่ Column แรก ในส่วนแสดงรายชื่อแฟ้ม ด้วยคำสั่ง ls -al จะหมายถึง directory
    : list directory contents

     
    1.2 คำสั่ง chmod : : : เปลี่ยนสถานะของแฟ้มเช่น Read Write eXecute 
    : ใช้เปลี่ยนสิทธิของแฟ้ม เจ้าของ(Owner), คนในกลุ่ม(Group), คนอื่น(Other) สามารถทำอะไรได้บ้าง
เมื่อใช้คำสั่ง ls ท่านจะเห็นตัวอักษร RWXRWXRWX หรือทำนองนี้หน้าชื่อแฟ้ม ซึ่งเป็นการกำหนด สิทธิของแต่ละแฟ้ม ว่า อ่านได้ เขียนได้ และประมวลผลได้ โดยแยกเป็นส่วนของ เจ้าของ กลุ่ม คนอื่น ซึ่งเป็นคำสั่งที่จำเป็นมากสำหรับ webmaster ในการดูแลระบบ และท่านที่ต้องการเขียน CGI จะต้องรู้คำสั่งนี้ เพราะ เมื่อส่งแฟ้ม CGI เข้าไปใน server และต้องการให้คนทั่วไปเข้ามาใช้บริการ โปรแกรมของตนที่เขียนขึ้นด้วย Perl จะไม่สามารถใช้ได้ ถ้าไม่กำหนดให้คนอื่น สามารถประมวลผลได้ (x) จึงจำเป็นต้องใช้คำสั่ง เช่น chmod 755 hello.pl หรือ chmod 775 fileforyou.pl หรือ chmod +x test.pl เป็นต้น
ในแต่ละกลุ่มจะมีการกำหนดสิทธิได้ 3 แบบ
ตัวอักษร R มาจาก Read หมายถึง อ่าน
ตัวอักษร W มาจาก Write หมายถึง เขียน
ตัวอักษร X มาจาก Execute หมายถึง ประมวลผล
ตัวอย่างเช่น
--- : ไม่มีสิทธิอะไรเลย (เลขที่ใช้คือ 0)
--X : ประมวลผลได้อย่างเดียว (เลขที่ใช้คือ 1)
R-- : อ่านได้อย่างเดียว (เลขที่ใช้คือ 4)
RW- : อ่าน และเขียนได้ (เลขที่ใช้คือ 6)
R-X : อ่าน และประมวลผลได้ (เลขที่ใช้คือ 5)
RWX : อ่าน เขียน และประมวลผลได้ (เลขที่ใช้คือ 7)
ความหมายของ RWXRWXRWX จะเห็นว่ามีอักษร 9 ตัว
3 ตัวแรกหมายถึง เจ้าของ
3 ตัวที่สองหมายถึง กลุ่ม
3 ตัวที่สามหมายถึง คนอื่น
ตัวอย่างเช่น
RWX------ : เจ้าของเท่านั้นที่มีสิทธิทุกอย่าง (เลขที่ใช้คือ 700)
RWXRWX--- : เจ้าของ และสมาชิกกลุ่มเดียวกันมีสิทธิทุกอย่าง (เลขที่ใช้คือ 770)
RWXR-XR-X : เจ้าของทำได้หมด ส่วนกลุ่มและคนอื่นอ่านและประมวลผลได้ (เลขที่ใช้คือ 755)
R--R--R-- : ทุกคนอ่านได้อย่างเดียว (เลขที่ใช้คือ 444)
    ตัวอย่างคำสั่ง และการใช้งาน
    chmod 777 index.php :: ทำให้แฟ้มนี้ อ่าน เขียน และประมวลผล โดยทั้ง 3 กลุ่ม
    chmod 755 * -Rf :: ทำให้ทุกแฟ้ม ทุก direcroty ในห้องปัจจุบัน เปลี่ยนตามที่กำหนด
    : change file access permissions

    1.3 คำสั่ง man : : : แสดงรายละเอียดของคำสั่ง (Manual) 
    : เป็นคำสั่งที่สำคัญมาก เพราะจะช่วยให้อธิบายคำสั่งต่าง ๆ ให้ท่านได้
ผมเชื่อว่าทุกคนที่ใช้ unix หรือ linux ต้องเคยใช้คำสั่งนี้มาก่อน เพราะจะเป็นคำสั่งที่ช่วยอธิบายหน้าที่ของคำสั่ง พร้อมกับแสดง parameter ที่สามารถใช้ได้ทั้งหมดของคำสั่งนั้น และยังมีตัวอย่างการใช้ และคำสั่งที่เกี่ยวข้องอีก ทำให้ประหยัดเวลาในการค้นเอกสารได้อย่างมาก บางท่านอาจศึกษา linux ด้วยการอ่านจาก man อย่างเดียวเลยก็มีนะครับ โดยไม่ต้องไปหาซื้อหนังสือที่ไหนมาอ่านก็ทำได้
    ตัวอย่างคำสั่ง และการใช้งาน
    man man :: เพื่ออธิบายคำสั่ง man เอง ว่าตัวคำสั่งนี้ใช้อย่างไร
    man ls :: เพื่ออธิบายคำสั่ง ls ว่าใช้อย่างไร
    man useradd :: เพื่ออธิบายคำสั่ง useradd ว่าใช้อย่างไร
    : format and display the on-line manual pages

     
    1.4 คำสั่ง mkdir, rmdir, cd : : : คำสั่งเกี่ยวกับ Directory หรือ Folder เพื่อสร้าง หรือลบ 
    : งานต่าง ๆ เกี่ยวกับ directory
cd หมายถึงเปลี่ยน directory (change working directory)
    ตัวอย่างคำสั่ง และการใช้งาน
    mkdir hello :: สร้าง directory ชื่อ hello ในห้องปัจจุบัน
    rmdir hello.htm :: จะลบแฟ้มชื่อ hello.htm
    cd / :: ย้าย directory ไปยัง root หรือห้องนอกสุด
    cd .. :: ย้าย directory ออกไปข้างบน 1 ระดับ
    cd ~/x :: เข้าไปยังห้อง x ของ home directory เช่น /home/thaiall/x ถ้า home directory คือ /home/thaiall
    : make, remove empty, change working directory

    ผู้ใช้คอมพิวเตอร์ที่ใช้ dos มาก่อนต้องคุ้นเคยกับ directory แน่นอน สำหรับคำสั่งเกี่ยวกับ directory ในที่นี้มี 3 คำสั่ง
    mkdir หมายถึง สร้าง directory (make directories)
    rm หมายถึง ลบ directory (remove files or directories) และคำสั่งนี้ยังใช้ลบแฟ้มตามปกติได้อีกด้วย
     
    1.5 คำสั่ง pico : : : editor ยอดฮิตใน Linux ที่ต้องมากับ Pine เป็น Text mode ที่ใช้ง่ายที่สุด
    : เป็น editor ที่ใช้สำหรับแก้ไขแฟ้มแบบ text คล้าย vi แต่มีประสิทธิภาพกว่ามาก

หลายครั้ง ที่พิมพ์คำว่า pico แล้วไม่มีในเครื่อง ก็เพราะไม่ได้ลงโปรแกรม pine เมื่อต้องการใช้ pico ก็ต้องติดตั้งโปรแกรม pine เข้าไปในเครื่อง จากแผ่น CD ด้วยคำสั่ง rpm -i pine*
    เพียงแต่พิมพ์คำว่า pico แล้ว enter ก็ใช้งานได้เลย การจะจัดเก็บ หรืองานต่าง ๆ ที่มีบริการไว้มากมาย ท่านสามารถอ่านได้จากเมนูด้านล่าง ซึ่งเครือ่งหมาย ^ หมายถึงการกดปุ่ม Ctrl ประกอบอักษรต่าง ๆ นั่นเอง ผมคิดว่าท่านน่าจะพออ่านรู้เรื่อง หรือจะพิมพ์ว่า pico xx ก็จะเป็นการสร้างแฟ้มชื่อ xx ให้ทันที แต่หากมีแล้ว ก็จะเปิดแฟ้ม xx มาให้แก้ไขในโปรแกรม xx เมื่อท่านต้องการเลิกก็ทำได้โดยกดปุ่ม Ctrl-X เป็นอันเรียบร้อย หากท่านใดเคยใช้ vi เมื่อลองใช้โปรแกรมนี้จะติดใจอย่างแน่นอน เพราะใช้งานได้ง่ายกว่า หลายเท่านัก

     
    1.6 คำสั่ง emacs : : : editor ยอดฮิตใน Linux ใช้ยากกว่า pico นิดหน่อย 
    : เป็น editor ที่ใช้สำหรับแก้ไขแฟ้มแบบ text คล้าย vi แต่มีประสิทธิภาพกว่ามาก

ทำงานได้คล้าย ๆ กับ pico แต่หลายคนบอกว่า ตัวนี้ทำงานได้ดีกว่า แต่ผมว่า pico ใช้งานได้ง่ายกว่ากันเยอะเลย เพราะเห็นเมนูด้านล่าง แต่ของ emacs จะใช้ ctrl-h ดูส่วนช่วยเหลือ และกด ctrl-x + ctrl-c จึงจะออกจากโปรแกรม อาจเป็นเพราะผมใช้ไม่ชำนาญมังครับ ในเมื่อผมใช้ pico เป็น editor ผมคงไม่จำเป็นต้องศึกษา emacs เพิ่มเติมแล้ว ยกเว้นว่าสักวันอาจมีเหตุจำเป็นที่ความสามารถของ pico ให้ไม่ได้ แต่ emacs ให้ได้ก็เป็นได้
    Welcome to GNU Emacs, one component of a Linux-based GNU system.
    Get help           C-h  (Hold down CTRL and press h)
    Undo changes       C-x u       Exit Emacs               C-x C-c
    Get a tutorial     C-h t       Use Info to read docs    C-h i
    Ordering manuals   C-h RET
    Activate menubar   F10  or  ESC `  or   M-`
    (`C-' means use the CTRL key.  `M-' means use the Meta (or Alt) key.
    If you have no Meta key, you may instead type ESC followed by the character.)
    
     
    1.7 คำสั่ง vi : : : editor ยอดฮิตใน Linux ที่ใช้ยากที่สุด 
    : เป็น editor ที่ใช้สำหรับแก้ไขแฟ้มแบบ text
Text editor ที่ใช้งานได้ยาก แต่มีใน linux ทุกรุ่น ในบางเครื่องไม่มี pico เพราะไม่ได้ติดตั้ง mail หรือ pine จึงจำเป็นต้องใช้โปรแกรม vi สำหรับแก้ไขข้อมูลในแฟ้มต่าง ๆ ของ linux เช่นการใช้คำสั่ง man ก็คือการใช้ความสามารถของ vi ในการนำข้อมูลมาแสดงผลนั่นเอง
    ตัวอย่างคำสั่ง และการใช้งาน
    esc     กลับไปยังโหมดคำสั่ง
    enter   ย้ายไปยังต้นบรรทัดของบรรทัดถัดไป
    i       ใส่ข้อความก่อนเคอร์เซอร์
    a       ใส่ข้อความหลังเคอร์เซอร์
    A       ใส่ข้อความที่ท้ายบรรทัดปัจจุบัน
    dd      ลบบรรทัดปัจจุบันทั้งบรรทัด
    x       ลบอักษร 1 ตัวอักษร
    cw      เปลี่ยนข้อความ
    :w      บันทึกแฟ้ม
    :q!     ออกโดยไม่ เปลี่ยนแปลงใด ๆ
    :wq     บันทึกแฟ้ม และออกจากโปรแกรม vi
    
    : a programmers text editor

     
    1.8 คำสั่ง id, finger, who, w : : : โปรแกรมตรวจสอบ username ของตนเอง 
    : ทุกคำสั่งข้างต้นใช้สำหรับตรวจสอบผู้ใช้ แต่จะให้รายละเอียดต่างกันไป
: print real and effective UIDs and GIDs

    ตัวอย่างคำสั่ง และการใช้งาน
    id uname :: ใช้ตรวจดูว่ามี account ในระบบหรือไม่ (ผลแสดงรหัสผลู้ใช้ และชื่อกลุ่ม)
    finger uname :: ใช้ตรวจดูว่ามี account uname นี้ในระบบหรือไม่ ให้ผลละเอียด ทั้ง last login หรือ email ฉบับล่าสุด
    finger :: ใช้แสดงรายชื่อทุกคนในระบบที่กำลัง login อยู่
    finger @www.isinthai.com :: ใช้แสดงรายชื่อทุกคนในระบบที่กำลัง login อยู่ ตรวจ server นอกระบบได้ ถ้าเขาไม่ปิด
    who |grep thai :: ใช้แสดงรายชื่อทุกคนในระบบ แต่ใช้นอกระบบตนเองไม่ได้ และเลือกเฉพาะบรรทัดที่มีอักษร thai
    w :: ใช้แสดงรายชื่อทุกคนในระบบ แต่ใช้นอกระบบตนเองไม่ได้
     
    1.9 คำสั่ง cat : : : แสดงข้อมูลในแฟ้มเหมือนคำสั่ง type ในระบบ DOS 
    : แสดงข้อมูลในแฟ้ม คล้ายคำสั่ง type ในระบบ DOS
: concatenate files and print on the standard output

    ตัวอย่างคำสั่ง และการใช้งาน
    cat /etc/passwd :: แสดงข้อมูลในแฟ้ม /etc/passwd
    cat /etc/passwd | more :: แสดงข้อมูลในแฟ้ม /etc/passwd ทีละหน้า
    ตัวอย่างข้อมูลในแฟ้ม passwd
    suwit:x:500:500:Suwit:/home/suwit:/bin/bash
    prasert:x:501:501::/home/prasert:/bin/bash
    bcom101:x:502:502::/home/bcom302:/bin/bash
     
    1.10 คำสั่ง ifconfig : : : ดู IP หรือเพิ่ม IP เข้าไปใน linux server 
    : แสดงข้อมูลเกี่ยวกับ Network interface และแสดง ip ต่าง ๆ ที่มีการเพิ่มเข้าไปใน server ได้
: configure a network interface

    ดูผลการทำงานของคำสั่งifconfig
    eth0      Link encap:Ethernet  HWaddr 00:20:18:C0:06:C4
              inet addr:202.29.78.12  Bcast:202.29.78.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:673054 errors:0 dropped:0 overruns:0 frame:0
              TX packets:666268 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:100
              RX bytes:74892865 (71.4 Mb)  TX bytes:680121131 (648.6 Mb)
              Interrupt:9 Base address:0xcf00
    eth0:1    Link encap:Ethernet  HWaddr 00:20:18:C0:06:C4
              inet addr:202.29.78.1  Bcast:202.29.78.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              Interrupt:9 Base address:0xcf00

    เพิ่ม ip ใหม่อีก 1 ip เช่น#/sbin/ifconfig eth0:1 202.29.78.1
    สามารถดูวิธีเพิ่มหลาย IP ในคอมพิวเตอร์เครื่องเดียว ได้จากหัวข้อ 9.10 ด้วยการแก้ไขแฟ้ม /etc/rc.d/rc.local
     
    1.11 คำสั่ง netstat : : : แสดงสถานะของเครือข่าย 
    : แสดงสถานะของเครือข่ายว่ามีโปรแกรมใดเปิดให้บริการ
: Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

    ดูผลการทำงานของคำสั่ง netstat -a
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 *:mysql                 *:*                     LISTEN
    tcp        0      0 *:http                  *:*                     LISTEN
    tcp        0      0 *:ftp                   *:*                     LISTEN
    tcp        0      0 *:ssh                   *:*                     LISTEN
    tcp        0      0 *:smtp                  *:*                     LISTEN
    tcp        0      0 *:https                 *:*                     LISTEN
    tcp        0      0 www.isinthai.com:ssh    202.29.78.200:1225      ESTABLISHED
    Active UNIX domain sockets (servers and established)
    Proto RefCnt Flags       Type       State         I-Node Path
    unix  2      [ ACC ]     STREAM     LISTENING     855    /var/lib/mysql/mysql.sock
    unix  2      [ ACC ]     STREAM     LISTENING     119    /dev/log
    unix  2      [ ]         STREAM     CONNECTED     3007
    unix  2      [ ]         STREAM     CONNECTED     859
    
     
    1.12 คำสั่ง service : : : แสดงสถานะโปรแกรมที่เปิดให้บริการ 
    : ดูสถานะของบริการต่าง ๆ ว่าถูกเปิดหรือ running อยู่หรือไม่
: Internet network services list

    ดูผลการทำงานของคำสั่ง service --status-all
    httpd (pid 2160 2159 2158 2155 2114 583 579 578 577 576 575 573) is running...
    mysqld (pid 446 429 427 414) is running...
    sendmail (pid 1700 1690) is running...
    sshd (pid 2970 358) is running...
    xinetd (pid 3923 369) is running...
    
     
    1.13 คำสั่ง xinetd : : : แสดงบริการที่เปิดใต้โปรแกรม xinetd 
: ดูบริการภายใน xinetd ว่าอะไรเปิดอยู่บ้าง ทำให้เข้าไปเปิดที่ห้อง /etc/xinetd.d แล้วเลือกเปิดบริการเฉพาะที่ต้องการ เช่นแก้แฟ้ม talk เพื่อให้เปิดบริการ talk ใน server เป็นต้น แต่ใน Fedora ที่ผมติดตั้งไม่มีคำสั่งนี้ครับ

    ดูผลบางส่วนจากการทำงานของคำสั่ง xinetd -d
    Service configuration: ftp
            id = ftp
            flags = IPv4
            socket_type = stream
            Protocol (name,number) = (tcp,6)
            Nice = 10
            Groups = no
            Bind = All addresses.
            Server = /usr/sbin/vsftpd
            Server argv = vsftpd
            Only from: All sites
            No access: No blocked sites
            Logging to syslog. Facility = authpriv, level = info
            Log_on_success flags = HOST PID
            Log_on_failure flags = HOST
    
     
    1.14 คำสั่ง whereis : : : ค้นหาแฟ้มที่ต้องการว่าอยู่ที่ห้องใด 
    : ค้นหาแฟ้มที่ต้องการว่าอยู่ที่ห้องใด แต่ค้นได้เฉพาะที่กำหนดไว้ใน PATH เท่านั้น หากต้องการค้นทั้งเครื่องต้องใช้คำสั่ง find
: locate the binary, source, and manual page files for a command

    ตัวอย่างคำสั่ง และการใช้งาน
    whereis usermod :: แสดงห้องที่เก็บคำสั่ง usermod ทำให้สามารถสั่ง run จากห้องที่เก็บคำสั่งโดยตรงได้
    whereis ifconfig :: แสดงห้องที่เก็บคำสั่ง ifconfig ทำให้ใช้คำสั่งเช่น /sbin/ifconfig ได้โดยตรง
     
    1.15 คำสั่ง cp, rm, mv : : : จัดการแฟ้มเช่น คัดลอก ลบ และย้าย 
: จัดการแฟ้มเช่น คัดลอก ลบ และย้าย

    ตัวอย่างคำสั่ง และการใช้งาน
    cp x y :: เดิมมีแฟ้มชื่อ x ต้องการแฟ้ม y ที่เหมือน x ขึ้นมาใหม่ สามารถใช้คำสั่ง cp
    rm y :: ลบแฟ้ม y ออกจากเครื่อง ซึ่งอยู่ใน directory ปัจจุบัน
    rm -r [directoryname] :: จะลบ directory ในเครื่อง sun และแฟ้มทั้งหมดใน directory นั้น และการลบแฟ้ม จะมีการถาม confirm ทุกแฟ้มเสมอ
    rm -rf [directoryname] :: จะลบ directory ใช้ใน Redhat และแฟ้มทั้งหมดใน directory นั้น และการลบแฟ้ม จะมีการถาม confirm ทุกแฟ้มเสมอ
    rm -f * :: ลบแฟ้มทั้งหมดโดยไม่ถาม yes
    mv x /root :: ย้ายแฟ้ม x จากห้องปัจจุบันไปไว้ในห้อง /root
     
    1.16 คำสั่ง ping : : : ตรวจสอบ ip และการเชื่อมต่อ internet 
    : ตรวจสอบ ip ของเครื่องเป้าหมาย และการเชื่อมต่อ internet
: send ICMP ECHO_REQUEST to network hosts

    ตัวอย่างคำสั่ง และการใช้งาน
    ping www.thaiall.com :: ตัวสอบการมีอยู่ของ www.thaiall.com และแสดงเลข IP ของเว็บนี้
    ping 202.29.78.100 -c 5 :: แสดงผลการทดสอบเพียง 5 บรรทัด
    ping 202.29.78.2 :: ผลดังข้างล่างนี้ แสดงว่าไม่พบเครื่องที่มีเลข ip ดังกล่าว
    PING 202.29.78.2 (202.29.78.2) from 202.29.78.12 : 56(84) bytes of data.
    From 202.29.78.12 icmp_seq=1 Destination Host Unreachable
    From 202.29.78.12 icmp_seq=2 Destination Host Unreachable
    From 202.29.78.12 icmp_seq=3 Destination Host Unreachable
     
    1.17 คำสั่ง env : : : แสดงค่า environment ปัจจุบัน 
    : แสดงค่า environment ปัจจุบัน
: run a program in a modified environment

    ตัวอย่างคำสั่ง และการใช้งาน
    env
      HISTSIZE=1000 SSH_CLIENT=202.29.78.100 1091 22 OLDPWD=/usr/sbin QTDIR=/usr/lib/qt3-gcc3.2 SSH_TTY=/dev/pts/0 USER=burin LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;.... : PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin MAIL=/var/spool/mail/burin PWD=/etc INPUTRC=/etc/inputrc LANG=en_US.UTF-8 HOME=/root SHLVL=2 LOGNAME=burin LESSOPEN=|/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env
     
    1.18 คำสั่ง lynx : : : Text browser ที่ใช้งานง่าย ใช้ดู source หรือ download ได้ 
: Text browser ที่ใช้งานง่าย ใช้ดู source หรือ download ได้ (ในเครื่องผมไม่ได้ลงไว้)

    ตัวอย่างคำสั่ง และการใช้งาน
    lynx www.thaiall.com :: เพื่อเปิดเว็บ www.thaiall.com แบบ text mode
    lynx http://www.yonok.ac.th :: เพื่อเปิดเว็บ www.yonok.ac.th แบบ text mode
    lynx -dump http://www.yonok.ac.th :: เพื่อแสดงผลลัพธ์แบบไม่ interactive คือการ view ผลแล้วหยุดทันที
    lynx -dump -width=500 http://piology.org/.procmailrc.html|grep '^|'|cut -c3- :: ตัวอย่างการนำไปใช้
     
    1.19 คำสั่ง nslookup : : : แสดงข้อมูลเกี่ยวกับ name server จาก ip หรือ domain name 
    : แสดงข้อมูลเกี่ยวกับ name server จาก ip หรือ domain name
: query Internet name servers interactively

    คำสั่งนี้ ถูกประกาศว่าต่อไปอาจไม่พบใน Redhat รุ่นใหม่ ถ้าต้องการใช้คำสั่งแบบนี้สามารถใช้ dig หรือ host แทนได้
     เช่น host yn1.yonok.ac.th หรือ dig yn1.yonok.ac.th เมื่อเข้าไปใน nslookup สามารถออกมาได้ด้วยการพิมพ์คำสั่ง exit หลังเครื่องหมาย > ตัวอย่างคำสั่ง และการใช้งาน nslookup 202.28.18.65
      Non-authoritative answer: 65.18.28.202.in-addr.arpa name = mars.uni.net.th. Authoritative answers can be found from: 18.28.202.in-addr.arpa nameserver = mars.uni.net.th. 18.28.202.in-addr.arpa nameserver = ns.netserv.chula.ac.th. mars.uni.net.th internet address = 202.28.18.65
    nslookup www.thaiall.com
      Name: www.thaiall.com Address: 66.150.1.141
     
    1.20 คำสั่ง tail : : : แสดงส่วนท้ายของแฟ้มที่มีขนาดใหญ่ ต้องข้ามกับ cat ที่ดูตั้งแต่เริ่มแฟ้ม
    : แสดงส่วนท้ายของแฟ้มที่มีขนาดใหญ่ ตรงข้ามกับ cat ที่ดูตั้งแต่เริ่มแฟ้ม
: output the last part of files

    ตัวอย่างคำสั่ง และการใช้งาน
    tail index.html :: ดูส่วนท้ายของแฟ้ม index.html ใน Current directory
    tail --lines=5 /var/log/messages :: ดูส่วนท้ายของแฟ้ม /var/log/messages แต่ต้องเป็น root จึงจะดูได้
    tail /var/log/html/access.log :: ดูส่วนท้ายเพียง 10 บรรทัด ซึ่งเป็นค่า default ที่ไม่ได้กำหนดจำนวนบรรทัด
    tail --lines=100 /var/log/html/access_log > access_bak :: เป็นการ backup ในขั้นแรก ก่อนใช้ mv ย้ายไปทับแฟ้มเดิม
     
     1.21 คำสั่ง telnet : : : ใช้ติดต่อเข้า server ต่าง ๆ ตาม port ที่ต้องการ . 

: ใช้ติดต่อเข้า server ต่าง ๆ ตาม port ที่ต้องการ แต่ปัจจุบัน server ต่าง ๆ ปิดบริการ telnet แต่เปิด SSH แทน
: user interface to the TELNET protocol

    ตัวอย่างคำสั่ง และการใช้งาน
    telnet 202.202.202.202 :: ขอติดต่อเข้าเครื่อง 202.202.202.202 การไม่กำหนด port คือเข้า port 23
    telnet www.school.net.th 21 :: ขอติดต่อผ่าน port 21 ซึ่งเป็น FTP port
    telnet mail.loxinfo.co.th 25 :: ตรวจ smtp ว่าตอบสนองกลับมา หรือไม่
    telnet class.yonok.ac.th 110 :: ทดสอบ pop service ของ windows server 2003
    Microsoft Windows POP3 Service Version 1.0 ready.
    USER aa@class.yonok.ac.th
    +OK
    PASS xxxxxxx
    +OK User successfully logged on
    telnet 202.29.78.13 80 :: ให้พิมพ์คำสั่ง GET แม้มองไม่เห็นหลังกดปุ่ม enter (ใช้ทดสอบการตอบสนองของ server)
    GET /index.html
    <frameset>
    <frame src=index.php>
    </frameset>
    Connection to host lost.
    C:\>
100 : Continue
101 : Switching Protocols
200 : OK
201 : Created
202 : Accepted
203 : Non-Authoritative Information
204 : No Content
205 : Reset Content
206 : Partial Content
300 : Multiple Choices
301 : Moved Permanently
302 : Moved Temporarily
303 : See Other
304 : Not Modified
305 : Use Proxy
400 : Bad Request
401 : Unauthorized
402 : Payment Required
403 : Forbidden
404 : Not Found
405 : Method Not Allowed
406 : Not Acceptable
407 : Proxy Authentication Required
408 : Request Time-out
409 : Conflict
410 : Gone
411 : Length Required
412 : Precondition Failed
413 : Request Entity Too Large
414 : Request-URI Too Large
415 : Unsupported Media Type
500 : Internal Server Error
501 : Not Implemented
502 : Bad Gateway
503 : Service Unavailable
504 : Gateway Time-out
505 : HTTP Version not supported

Set MongoDB in the windows path environment

  Let’s set MongoDB in the windows environment in just a few steps. Step 1: First download a suitable MongoDB version according to your mach...