<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>คำสั่ง เบื้องต้น บน Unix</title>
	<atom:link href="http://knowladledge.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://knowladledge.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sun, 05 Jul 2009 18:17:27 +0000</lastBuildDate>
	<language>th</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='knowladledge.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>คำสั่ง เบื้องต้น บน Unix</title>
		<link>http://knowladledge.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://knowladledge.wordpress.com/osd.xml" title="คำสั่ง เบื้องต้น บน Unix" />
	<atom:link rel='hub' href='http://knowladledge.wordpress.com/?pushpress=hub'/>
		<item>
		<title>คำสั่งเบื้องต้นที่ใช้ใน Unix</title>
		<link>http://knowladledge.wordpress.com/2009/06/24/command-line/</link>
		<comments>http://knowladledge.wordpress.com/2009/06/24/command-line/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 15:04:18 +0000</pubDate>
		<dc:creator>emol2ock</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[คำสั่ง]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ls]]></category>
		<category><![CDATA[open solaris]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[unic]]></category>

		<guid isPermaLink="false">http://knowladledge.wordpress.com/2009/06/24/%e0%b8%84%e0%b8%b3%e0%b8%aa%e0%b8%b1%e0%b9%88%e0%b8%87%e0%b9%80%e0%b8%9a%e0%b8%b7%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b8%95%e0%b9%89%e0%b8%99%e0%b8%97%e0%b8%b5%e0%b9%88%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b9%83/</guid>
		<description><![CDATA[ระบบปฏิบัติการ (Operating System) คือ กลุ่มของคำสั่งที่ร่วมกันทำงาน เพื่อควบคุมการทำงานของ Hardware และ software Application อื่นๆ ของคอมพิวเตอร์ เราอาจจะแบ่ง OS ตามลักษณะการใช้งานออกเป็น 2 จำพวกคือ 1.Single-User เป็น OS ที่ในขณะใดขณะหนึ่งจะให้บริการแก้ผู้ใช้เพียงคนเดียว เป็นระบบปฏิบัติการขนาดเล็ก สะดวกในการควบคุมการทำงาน เช่น DOS Windows95/98 ฯลฯ 2.Multi-User เป็น OS ที่ให้ผู้ใช้มากกว่าหนึ่งคนเข้าทำงานได้พร้อม ๆ กัน โดยการต่อออกเป็น terminal ย่อยๆ ใช้กับระบบขนาดใหญ่ เป็น OS ที่ไม่ยึดติดกับระบบเครื่องระบบใดระบบหนึ่ง เป็น OS ที่เป็น Multi-user และ Multi-tasking เช่น Unix , Novell , Linux , SunOS ฯลฯ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=knowladledge.wordpress.com&amp;blog=8309308&amp;post=3&amp;subd=knowladledge&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ระบบปฏิบัติการ (Operating System) คือ กลุ่มของคำสั่งที่ร่วมกันทำงาน เพื่อควบคุมการทำงานของ Hardware และ software Application อื่นๆ ของคอมพิวเตอร์ เราอาจจะแบ่ง OS ตามลักษณะการใช้งานออกเป็น 2 จำพวกคือ</p>
<p>1.Single-User เป็น OS ที่ในขณะใดขณะหนึ่งจะให้บริการแก้ผู้ใช้เพียงคนเดียว เป็นระบบปฏิบัติการขนาดเล็ก สะดวกในการควบคุมการทำงาน เช่น DOS Windows95/98 ฯลฯ</p>
<p>2.Multi-User เป็น OS ที่ให้ผู้ใช้มากกว่าหนึ่งคนเข้าทำงานได้พร้อม ๆ กัน โดยการต่อออกเป็น terminal ย่อยๆ ใช้กับระบบขนาดใหญ่ เป็น OS ที่ไม่ยึดติดกับระบบเครื่องระบบใดระบบหนึ่ง เป็น OS ที่เป็น Multi-user และ Multi-tasking เช่น Unix , Novell , Linux , SunOS ฯลฯ</p>
<p><strong>หน้าที่ของ OS ที่เป็น Multi User<br />
</strong><br />
I/O คือการนำเข้าและจัดเก็บข้อมูลลงบนอุปกรณ์ของคอมพิวเตอร์ เช่น การบันทึกลง disk หรือการแสดงผลทาง จอภาพหรือ Printer</p>
<p>การจัดการข้อมูล คือการจัดเก็บข้อมูลเป็นไฟล์(files)หรือรวมกันเป็น directory</p>
<p>Command คือคำสั่งที่จะให้ผู้ใช้พิมพ์ให้ คอมพิวเตอร์ประมวลผล</p>
<p>Time Sharing การบริหารเวลาสำหรับการทำงานพร้อมกันหลายๆ งานหรือหลายๆ คน</p>
<p>โปรแกรม ที่ช่วยในการพัฒนาโปรแกรม เช่น Complier ต่างที่มีอยู่บน OS แต่ละตัว เช่นใน linux ก็จะมีภาษาต่างๆเช่น C , C++ และอื่นๆอีกหลายภาษา</p>
<p>ระบบความปลอดภัยของข้อมูลของแต่ละ user ที่คนอื่นไม่สามารถเข้ามากระทำได้โดยมิได้รับอนุญาต</p>
<p>การติดต่อกันเป็นเครือข่ายเพื่อใช้ทรัพยากรร่วมกัน</p>
<hr size="2" /><strong>คำสั่ง </strong></p>
<p><strong>คำสั่ง </strong><strong>telnet</strong><br />
เป็นคำสั่งที่เปลี่ยน host ที่ใช้อยู่ไปยัง host อื่น (ใน Windows 95 ก็มี)<br />
รูปแบบ $ telnet hostname<br />
เช่น c:&gt; telnet student.rit.ac.th เปลี่ยนไปใช้ host ชื่อ student.rit.ac.th<br />
$ telnet 202.44.130.165 เปลี่ยนไปใช้ host ที่มี IP = 202.44.130.165<br />
$ telnet 0 telnet เข้า host ที่ใช้อยู่นะขณะนั้น<br />
เมื่อเข้าไปได้แล้วก็จะต้องใส่ login และ password และเข้าสู่ระบบยูนิกส์นั้นเอง</p>
<p><strong>คำสั่ง ftp</strong><br />
ftp เป็นคำสั่งที่ใช้ถ่ายโอนไฟล์ข้อมูลจากที่หนึ่ง ไปยังอีกที่หนึ่ง โดยการติดต่อกับ host ที่เป็น ftp นั้นจะต้องมี user name และมี password ที่สร้างขึ้นไว้แล้ว แต่ก็มี ftp host ที่เป็น public อยู่ไม่น้อยเช่นกัน ดังนั้นจะมี user name ที่เป็น publicเช่นกัน คือ user ที่ชื่อว่า anonymous ส่วน password ของ user anonymous นี้จะใช้เป็น E-mail ของผู้ที่จะ connect เข้าไปและโปรแกรมส่วนใหญ่ก็จะอยู่ใน directory ชื่อ pub<br />
รูปแบบ $ ftp hostname<br />
เช่น c:windows&gt; ftp wihok.itgo.com<br />
$ ftp ftp.nectec.or.th<br />
คำสั่ง ftp จะมีคำสั่งย่อยที่สำคัญๆ ได้แก่<br />
ftp&gt; help ใช้เมื่อต้องการดูคำสั่งที่มีอยู่ในคำสั่ง ftp<br />
ftp&gt; open hostname ใช้เมื่อต้องการ connect ไปยัง host ที่ต้องการ<br />
ftp&gt; close ใช้เมื่อต้องการ disconnect ออกจาก host ที่ใช้งานอยู่<br />
ftp&gt; bye หรือ quit ใช้เมื่อต้องการออกจากคำสั่ง ftp<br />
ftp&gt; ls หรีอ dir ใช้แสดงชื่อไฟล์ที่มีอยู่ใน current directory ของ host นั้น<br />
ftp&gt; get ใช้โอนไฟล์ทีละไฟล์จาก host ปลายทางมายัง localhost หรือเครื่องของเรานั้นเอง<br />
ftp&gt; mget ใช้โอนไฟล์ทีละหลายๆไฟล์จาก host ปลายทางมายัง localhost<br />
ftp&gt; put ใช้โอนไฟล์ทีละไฟล์จาก localhost ไปเก็บยัง host ปลายทาง<br />
ftp&gt; mput ใช้โอนไฟล์ทีละหลายๆไฟล์จาก localhost ไปเก็บยัง host ปลายทาง<br />
ftp&gt; cd ใช้เปลี่ยน directory<br />
ftp&gt; delete และ mdelete ใช้ลบไฟล์</p>
<p><strong>คำสั่ง ls<br />
</strong>มีค่าเหมือนกับ คำสั่ง dir ของ dos<br />
รูปแบบ $ ls [-option] [file]<br />
option ที่สำคัญ</p>
<p>l แสดงแบบไฟล์ละบรรทัด แสดง permission , เจ้าของไฟล์ , ชนิด , ขนาด , เวลาที่สร้าง<br />
a แสดงไฟล์ที่ซ่อนไว้ ( dir /ah)<br />
p แสดงไฟล์โดยมี / ต่อท้าย directory<br />
F แสดงไฟล์โดยมีสัญลักษณ์ชนิดของไฟล์ต่อท้ายไฟล์คือ<br />
/ = directory<br />
* = execute file<br />
@ = link file<br />
ld แสดงเฉพาะ directory (dir /ad)<br />
R แสดงไฟล์ที่อยู่ใน directory ด้วย (dir /s)</p>
<p>เช่น<br />
$ ls<br />
$ ls -la</p>
<p><strong>คำสั่ง more</strong><br />
แสดงข้อมูลทีละหน้าจอ อาจใช้ร่วมกับเครื่องหมาย pipe line ( | ) หากต้องการดูหน้าถัดไปกด space ดูบรรทัดถัดไปกด Enter เช่น<br />
$ ls -la | more<br />
$ more filename</p>
<p><strong>คำสั่ง cat<br />
</strong>มีค่าเหมือนกับ คำสั่ง type ของ dos ใช้ดูข้อมูลในไฟล์ เช่น<br />
$ cat filename</p>
<p><strong>คำสั่ง clear<br />
</strong>มีค่าเหมือนกับ คำสั่ง cls ของ dos ใช้ลบหน้าจอ terminal ให้ว่าง<br />
$ clear</p>
<p><strong>คำสั่ง date<br />
</strong>ใช้แสดง วันที่ และ เวลา<br />
$ date 17 May 1999</p>
<p><strong>คำสั่ง cal<br />
</strong>ใช้แสดง ปฏิทินของระบบ<br />
รูปแบบ $ cal month year เช่น<br />
$ cal 07 1999</p>
<p><strong>คำสั่ง logname<br />
</strong>คำสั่งแสดงชื่อผู้ใช้ขณะใช้งาน<br />
$ logname</p>
<p><strong>คำสั่ง id<br />
</strong>ใช้แสดงชื่อและกลุ่มมของผู้ใช้งาน<br />
$ id</p>
<p><strong>คำสั่ง tty<br />
</strong>แสดงหมายเลข terminal ที่ใช้งานอยู่<br />
$ tty</p>
<p><strong>คำสั่ง hostname<br />
</strong>คำสั่งแสดงชื่อเครื่องที่ใช้อยู่<br />
$ hostname</p>
<p><strong>คำสั่ง uname<br />
</strong>คำสั่งแสดง ชื่อและรุ่นของ OS ชื่อและรุ่นของ cpu ชื่อเครื่อง<br />
$ uname -a</p>
<p><strong>คำสั่ง history<br />
</strong>คำสั่งที่ใช้ดูคำสั่งที่ใช้ไปแล้วก่อนหน้านี้<br />
$ history<br />
เวลาเรียกใช้ต้องมี ! แล้วตามด้วยหมายเลขคำสั่งที่ต้องการ</p>
<p><strong>คำสั่ง echo และ banner<br />
</strong>$ echo &#8220;Hello&#8221; ใช้แสดงข้อความ &#8220;Hello&#8221; ขนาดปกติ<br />
$ banner &#8220;Hello&#8221; ใช้แสดงข้อความ &#8220;Hello&#8221; ขนาดใหญ่</p>
<p><strong>คำสั่ง who , w และ finger<br />
</strong>ใช้แสดงว่าใครใช้งานอยู่บ้างขณะนั้น<br />
$ who<br />
$ w<br />
$ finger ดูผู้ใช้ที่ host เดียวกัน<br />
$ finger @daidy.bu..ac.th ดูผู้ใช้โดยระบุ Host ที่จะดู<br />
$ finger wihok ดูผู้ใช้โดยระบุคนที่จะดูลงไป<br />
$ who am i แสดงชื่อผู้ใช้ เวลาที่เข้าใช้งาน และ หมายเลขเครื่อง<br />
$ whoami เหมือนกับคำสั่ง logname</p>
<p><strong>คำสั่ง pwd<br />
</strong>แสดง directory ที่เราอยู่ปัจจุบัน<br />
$ pwd</p>
<p><strong>คำสั่ง mkdir<br />
</strong>ใช้สร้าง directory เทียบเท่า MD ใน DOS<br />
$ mkdir dir_name</p>
<p><strong>คำสั่ง cp<br />
</strong>ใช้ copy ไฟล์หนึ่ง ไปยังอกไฟล์หนึ่ง<br />
รูปแบบ $ cp [-irfp] file_source file_target<br />
option -i หากมีการทับข้อมูลเดิมจะรอถามก่อนที่จะทับ<br />
option -r copy ไฟล์ทั้งหมดรวมทั้ง directory ด้วย<br />
option -f ไม่แสดงข้อความความผิดพลาดออกหน้าจอ<br />
option -p ยืนยันเวลาและความเป็นเจ้าของเดิม<br />
$ cp file_test /tmp/file_test</p>
<p><strong>คำสั่ง mv<br />
</strong>ใช้ move หรือเปลี่ยนชื่อไฟล์<br />
รูปแบบ $ mv [-if] file_source file_target<br />
ความหมายของ option เช่นเดียวกับ cp<br />
$ mv index.html main.html เปลี่ยนชื่อไฟล์ index.html เป็น main.html</p>
<p><strong>คำสั่ง rm<br />
</strong>ใช้ลบไฟล์หรือ directory โดยที่ยังมีข้อมูลภายในเทียบเท่า del และ deltree ของ dos<br />
รูปแบบ $ rm [-irf] filename<br />
$ rm -r dir_name ลบ dir_name โดยที่ dir_name เป็น directory ว่างหรือไม่ว่างก็ได้<br />
$ rm -i * ลบทุกไฟล์โดยรอถามตอบ</p>
<p><strong>คำสั่ง rmdir<br />
</strong>ใช้ลบ directory ที่ว่าง เทียบเท่ากับ rd ของ Dos<br />
$ rmdir dir_name</p>
<p><strong>คำสั่ง alias<br />
</strong>ใช้ย่อคำสั่งให้สั้นลง<br />
$ alias l = ls -l<br />
$ alias c = clear</p>
<p><strong>คำสั่ง unalias<br />
</strong>ใช้ยกเลิก alias เช่น<br />
$ unalias c</p>
<p><strong>คำสั่ง type<br />
</strong>ใช้ตรวจสอบว่าคำสั่งที่ใช้เก็บอยู่ที่ใดของระบบ<br />
รูปแบบ $ type command<br />
$ type clear</p>
<p><strong>คำสั่ง find<br />
</strong>ใช้ค้นหาไฟล์ที่ต้องการ เช่น<br />
$ find /usr/bin -name &#8220;*sh&#8221; -print หาไฟล์ที่ลงท้ายด้วย sh จาก /usr/bin</p>
<p><strong>คำสั่ง grep<br />
</strong>ใช้คนหาข้อความที่ต้องการจากไฟล์<br />
$ grep ข้อความ file</p>
<p><strong>คำสั่ง man<br />
</strong>man เป็นคำสั่งที่เป็นคู่มือการใช้คำสั่งแต่ละคำสั่งเช่น<br />
$ man ls<br />
$ man cp</p>
<p><strong>คำสั่ง write<br />
</strong>ใช้ส่งข้อความไปปรากฎที่หน้าจอของเครื่องที่ระบุในคำสั่งไม่สามารถใช้ข้าม host ได้<br />
เช่น $ write s0460003</p>
<p><strong>คำสั่ง mesg<br />
</strong>$ mesg ดู status การรับการติดต่อของ terminal<br />
$ mesg y เปิดให้ terminal สามารถรับการติดต่อได้<br />
$ mesg n ปิดไม่ให้ terminal สามารถรับการติดต่อได้</p>
<p><strong>คำสั่ง talk<br />
</strong>ใช้ ติดต่อสื่อสารแบบสองทาง เหมือนกับการคุยโดยผู้ส่ง ๆ ไปแล้วรอการตอบกลับจาก ผู้รับ สามารถหยุดการติดต่อโดย Ctrl + c สามารถใช้ข้าม host ได้<br />
รูปแบบ $ talk username@hostname</p>
<p><strong>คำสั่ง pine<br />
</strong>ใช้อ่านและส่งจดหมายข้างในจะมี menu ให้ใช้<br />
คำสั่ง tar</p>
<p>ใช้ สำหรับ รวมไฟล์ย่อยให้เป็นไฟล์ Packet คล้ายๆกับการ zip หลายๆไฟล์ให้เป็นไฟล์เดียวแต่ขนาดไฟล์ไม่ได้ลดลงอย่างการ zip โดยไฟล์ output ที่ได้จะตั้งชื่อเป็น filename.tar หรือการแตกไฟล์ packet จาก filename.tar ให้เป็นไฟล์ย่อยมักจะใช้คู่กับ gzip หรือ compress เพื่อทำการลดขนาด packet ให้เล็กลง</p>
<p>รูปแบบการใช้</p>
<p>$ tar -option output input<br />
-option ประกอบด้วย -cvf , -tvf , -xvf แสดงดังด้านล่าง<br />
output คือ ไฟล์.tar หรืออาจจะเป็น device เช่น tape ก็ได้<br />
input คือ ไฟล์หรือกลุ่มไฟล์หรือ directory หรือรวมกันทั้งหมดที่กล่าวมา<br />
$ tar -cvf Output_file.tar /home/myhome/*<br />
Option -cvf ใช้สำหรับการรวมไฟล์ย่อยไปสู่ไฟล์ .tar จากตัวอย่าง รวมไฟล์ทุกไฟล์ที่อยู่ใน /home/myhome/ เข้าสู่ไฟล์ชื่อ Output_file.tar<br />
$ tar -tvf filename.tar<br />
Option -tvf ใช้แตกไฟล์ .tar เป็นไฟล์ย่อยๆแบบ preview คือแสดงให้ดูไม่ได้แตกจริงอาจใช้คู่กับ คำสั่งอื่น เพื่อให้ได้ประโยชน์ตามต้องการ เช่น tar -tvf filename.tar |more<br />
$ tar -xvf filename.tar<br />
Option -xvf ใช้แตกไฟล์ .tar เป็นไฟล์ย่อยๆ โดยจะแตกลง ณ current directory</p>
<p><strong>คำสั่ง gzip<br />
</strong><br />
ใช้ zip หรือ Unzip ไฟล์ packet โดยมากแล้วจะเป็น .tar เช่น<br />
$ gzip filename.tar ผลที่ได้จะได้ไฟล์ซึ่งมีการ zip แล้วชื่อ filename.tar.gz<br />
$ gzip -d filename.tar.gz ใช้ unzip ไฟล์ผลที่ได้จะเป็น filename.tar</p>
<p><strong>คำสั่ง Compress และ Uncompress<br />
</strong><br />
หลังจากการ compress แล้วจะได้เป็นชื่อไฟล์เดิมแต่ต่อท้ายด้วย .Z การใช้งานเหมือนกับ gzip และ gzip -d เช่น<br />
$ compress -v file.tar จะได้ไฟล์ชื่อ file.tar.Z โดย Option -v จะเป็นการ verify การ compress<br />
$ uncompress -v file.tar.Z</p>
<hr size="2" /><strong>Operating System Component</strong></p>
<p>1.Kernel คือหัวใจของระบบจะควบคุมการทำงานภายในทั้งหมดของระบบคอมพิวเตอร์ เช่น การเตรียมทรัพยากรต่างๆของระบบ การจัดเก็บข้อมูล การบริหารหน่วยความจำ การควมคุมอุปกรณ์ต่างๆที่ต่ออยู่ ตัว kernel จะขึ้นกับ ชนิดของเครื่องดังนั้นเราต้องใช้ kernel คนละตัวกันหากใช้เครื่องคนละตระกูลกัน</p>
<p>2.File System (FS) คือโครงสร้างการจัดเก็บข้อมูลในฮาร็ดดิสก์ เพื่อให้ OS สามารถอ่านเขียน ใช้ไฟล์ที่ต้องการได้อย่างมีประสิทธิภาพ โดยที่ OS แต่ละตัวจะมี FS ที่แตกต่างกัน เช่น</p>
<p>Operating System File System<br />
DOS/Windows95 FAT12,FAT16<br />
Windows98/95-osr FAT12,FAT16,FAT32<br />
Windows NT NTFS,FAT16,HPFS<br />
OS/2 FAT12,FAT16,HPFS<br />
Linux EXT2,VFAT,HPFS,NTFS,etc.</p>
<p>SunOS UFS<br />
ฯลฯ ฯลฯ</p>
<p>หมาย เหตุ เนื่องจาก Linux ใช้ File System แบบ Ext2 (Extended Files System 2) จึงทำให้ Linux สามารถมองเห็นดิสก์ก้อนที่ใหญ่มากมีขนาดถึง 4 เทราไบต์(Tbytes) หรือขนาด 4000 Gbytes นั้นละ</p>
<p>3.Shell เป็น command Interpreter เป็นตัวกลางติดต่อระหว่าง user กับ kernel คอยรับคำสั่งที่จะพิมพ์เข้าไปแล้วแปลคำสั่งนั้นต่อไป นอกจากนี้แล้วยังสามารถที่จะนำเอาคำสั่งต่างๆ มาเขียนเป็นโปรแกรมเรียกว่า Shell Script และ shell ยังสามารถกำหนดทิศทาง Input / Output ได้ด้วย การเปลี่ยนทิศทางจะมีเครื่องหมายที่จำเป็นคือ<br />
&gt; การเปลี่ยนทิศทางของ output<br />
&lt; การเปลี่ยนทิศทางของ input<br />
&gt;&gt; การเปลี่ยนทิศทางของ output ไปต่อท้ายไฟล์</p>
<p>การทำงานผ่าน shell มี 2 ลักษณะคือ</p>
<p>Synchronous execution เป็นการทำงานตามลำดับของคำสั่งทีละคำสั่งจนเสร็จแล้วจึงจะขึ้น prompt เพื่อป้อนคำสั่งต่อไป เรียกว่าการทำงานแแบบฉากหน้า ( foreground mode) เช่น</p>
<p>$ ls -l (เป็นการ list ดูไฟล์แบบยาวใน directory ปัจจุบัน)</p>
<p>Asynchronous execution จะทำงานตามคำสั่งโดยที่งานเก่าจะเสร็จแล้วหรือยังไม่เสร็จก็ตามแต่ shell จะกำหนด prompt และสร้าง shell ใหม่ขึ้นมาเพื่อรองรับงานใหม่ต่อไป เรียกว่าการทำงานแบบฉากหลัง (background mode) การทำงานแบบนี้ทำได้โดยเติมเครื่องหมาย ampersand (&amp;) ไว้ที่ท้ายคำสั่งนั้นเช่น</p>
<p>$ netscape &amp; (เรียกโปรแกรม netscape แล้วขึ้น prompt โดยไม่ต้องรอให้ออกจาก netscape ก่อน)</p>
<p>Shell ที่นิยมใช้</p>
<p>Bourne Shell (sh) เป็น starndard shell ที่มีใใน unix ทุกตัวสามารถย้าย shell script ไปยัง unix ระบบอื่นได้โครงสร้างเป็นแบบ Algol สามารถใช้งาน Procedure ได้ จะมี default prompt เป็น &#8220;$&#8221;</p>
<p>C Shell (csh) มีโครงสร้างคล้ายภาษา C ทำงานได้ดีกว่า bourne shell มีไฟล์ที่เก็บคำสั่งที่ใช้ไปแล้ว ทำงานกับ shell script ของ bourne shell ไม่ได้ default prompt เป็น &#8220;%&#8221;</p>
<p>Korn Shell (ksh) ทำงานได้ดีกว่า sh และ csh แต่ไม่ได้มีใน unix ทุกตัว ksh มีขนาดใหญ่กว่า shell อื่น ๆ เขียน shell script ได้ง่ายขึ้นและรัดกุม เป็น Standard IEEE PDSIX 1003.2 default prompt เป็น &#8220;$&#8221;</p>
<p>Bourne Again Shell (bash) เป็นการพัฒนา sh ให้สามารถมีแฟ้มคำสั่งที่ใช้ไปแล้ว และเพิ่มขีดความสามารถเพิ่มขึ้นอีกหลายอย่าง (default of Linux) default prompt เป็น &#8220;$&#8221;</p>
<p>ฯลฯ</p>
<p>4.Utilities คำสั่งต่างที่ทำงานได้บน ระบบงาน unix จึงทำให้ kernel มีขนาดเล็ก เพราะจะมีเฉพาะหน้าที่สำคัญเท่านั้น</p>
<p><strong>ประเภทของไฟล์ใน Unix</strong><br />
ไฟล์ ในระบบยูนิกซ์นั้นจะขึ้นอยู่กับผู้สร้างยูนิกซ์แต่ละตัวซึ่งมีทั้งแตกต่าง และเหมือนกัน และการตั้งชื่อไฟล์ในระบบยูนิกซ์ส่วนใหญ่จะสามารถตั้งชื่อได้ยาวถึง 255 ตัวอักษรโดยที่ตัวอักษรตัวเล็ก และตัวอักษรตัวใหญ่นั้นมีความแตกต่างกัน สามารถใช้ตัวเลขหรือขีดเส้นใต้ร่วมด้วยก็ได้ แต่ไม่ควรใช้เครื่องหมายเหล่านี้มาตั้งชื่อ เช่น ^ &#8221; &#8216; , &#8211; ? ] () ~ ! $ @ # &lt;&gt; $ / และหากไฟล์ใดที่ตั้งชื่อขึ้นต้นด้วยจุด &#8220;.&#8221; จะทำให้ไฟล์นั้นเป็น hidden file คือไฟล์ที่ถูกซ่อนไว้ จะไม่สามารถมองเห็นได้โดยใช้คำสั่งทั่วไปจะต้องมี option เพิ่มเติม</p>
<p>Regular files คือไฟล็ทั่วไปที่สร้างขึ้นได้ด้วย Text Editor หรืออาจจะสำเนามาจากไฟล์อื่น หรืออาจจะเป็นโปรแกรมใช้งานต่างๆก็ได้</p>
<p>Directory files คือไฟล์ที่เก็บไฟล์ทั่วไปหรือจะเก็บไฟล์ที่เป็น Directory ด้วยกัน ที่เรียกว่า Sub Directory ก็ได้ โดยที่ Directory บนสุด (root) ของ ยูนิกซ์จะแทนด้วย &#8221; / &#8220;</p>
<p>Special files เป็นไฟล์พิเศษจะมีอยู่สองแบบคือ Character device file และ Block device file ทั้งสองแบบจะเป็นไฟล์ device driverโดยส่วนใหญ่จะเก็บไว้ที่ /dev แต่ไฟล์ทั้งสองจะแตกต่างกัน ที่การรับส่งข้อมูล นั่นคือ Character device file จะรับส่งข้อมูลที่ละตัวอักษร แต่ Block device file จะรับส่งข้อมูลเป็นบล็อก</p>
<p>Unix demain seckets ใน BSD Unix หรือ Name pipes ใน AT&amp;T Unix</p>
<p>Symbolic Link files หรือไฟล์เชื่อมต่อ การเชื่อมต่อของไฟล์มี 2 ลักษณะคือ</p>
<p>1. Hard Link การเชื่อมต่อแบบนี้จะใช้ I-node เดียวกับไฟล็ต้นฉบับ เหมือนกับมีการสร้างไฟล์ใหม่ แต่ใช้ค่า I-node เดิม และ I-node จะมีตัวนับจำนวนไฟล์ที่เชื่อมต่อด้วย หากแก้ไขไฟล์ใดไฟล์หนึ่งจะมีผลกระทบส่งถึงกัน เพราะข้อมูลเก็บที่เดียวกัน แต่ข้อมูลต้องอยู่ที่ partition เดียวกัน ทำให้ประหยัดเนื้อที่ สามารถอ้างถึงข้อมูลได้จากหลายๆที่</p>
<p>2. Symbolic Link การเชื่อมต่อแบบนี้จะสร้าง I-node ของตัวเองขึ้นมาใหม่ เหมือนกับ shutcut ของ windows 95 โดยที่หากเปลี่ยนแปลงต้นฉบับจะมีผลกับ link file แต่หากลบ link file จะไม่มีผลใดๆต่อไฟล์ต้นฉบับ สามารถใช่ได้ทั้งที่อยู่ partition เดียวกัน หรือต่าง partition กันก็ได้</p>
<p>เราสามารถที่จะแยกประเภทของไฟล์ต่างได้โดยใช้คำสั่ง ls -l แล้วจะแสดงสัญลักษณ์ โดยจะแสดงดังนี้</p>
<p>Type Sysbol Create Remove<br />
Text file &#8211; cp , mv ,etc rm<br />
Directory p mkdir rm -r , rmdir<br />
Character device v mknod rm<br />
Block device b mknod rm<br />
Unix domain socket s socket rm<br />
Name pipes p mknod rm<br />
link file l ln -s rm</p>
<p>โครง สร้างไฟล์ไดเรคเทอรีของระบบยูนิกซ์ส่วนใหญ่จะเป็นแบบ Filesystem Hierarchy Standard (FHS) โดยการจัดลำดับชั้นจะเป็นแบบต้นไม้หัวกลับ โดยเริ่มจากชั้นแรกที่เป็น ราก หรือ root เขียนแทนด้วย / ไฟล์แต่ละไฟล์อาจจะสร้างขึ้นมาเองหรือเป็นโปรแกรมก็ได้ ไฟล์ลักษณะนี้จะเป็นไฟล์ไดเรคเทอรี การจัดไฟล์ระบบนี้จะทำให้การจัดไฟล์เป็นระบบ ง่ายต่อการดูแลรักษา โดยจะมีโครงสร้างหลักเป็นดังนี้</p>
<p>/ เป็นไดเรคเทอรี root ที่เก็บไฟล์ kernel ของระบบ</p>
<p>/bin เป็นไดเรคเทอรีที่ใช้เก็บคำสั่งทั่วไปของระบบ</p>
<p>/dev เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ที่เกี่ยวกับอุปกรณ์ต่างๆ</p>
<p>/etc เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ที่เป็น config files ของเครื่อง</p>
<p>/etc/X11 เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ที่เป็น config files ของ x windows</p>
<p>/etc/skel เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ที่เป็นไฟล์ต้นฉบับที่จะถูกสำเนาไปยัง home user</p>
<p>/lib เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ไลบรารี สำหรับให้โปรแกรมต่างๆเรียกใช้</p>
<p>/sbin เป็นไดเรคเทอรีที่ใช้เก็บไฟล์คำสั่งของผู้ดูแลระบบ</p>
<p>/usr เป็นไดเรคเทอรีที่ใช้เก็บไฟล์โปรแกรมของผู้ใช้ทั่วไป</p>
<p>/var เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ข้อมูลทั่วไปของระบบ</p>
<p><strong>ประเภทของไฟล์ใน Unix<br />
</strong>ไฟล์ ในระบบยูนิกซ์นั้นจะขึ้นอยู่กับผู้สร้างยูนิกซ์แต่ละตัวซึ่งมีทั้งแตกต่าง และเหมือนกัน และการตั้งชื่อไฟล์ในระบบยูนิกซ์ส่วนใหญ่จะสามารถตั้งชื่อได้ยาวถึง 255 ตัวอักษรโดยที่ตัวอักษรตัวเล็ก และตัวอักษรตัวใหญ่นั้นมีความแตกต่างกัน สามารถใช้ตัวเลขหรือขีดเส้นใต้ร่วมด้วยก็ได้ แต่ไม่ควรใช้เครื่องหมายเหล่านี้มาตั้งชื่อ เช่น ^ &#8221; &#8216; , &#8211; ? ] () ~ ! $ @ # &lt;&gt; $ / และหากไฟล์ใดที่ตั้งชื่อขึ้นต้นด้วยจุด &#8220;.&#8221; จะทำให้ไฟล์นั้นเป็น hidden file คือไฟล์ที่ถูกซ่อนไว้ จะไม่สามารถมองเห็นได้โดยใช้คำสั่งทั่วไปจะต้องมี option เพิ่มเติม</p>
<p>Regular files คือไฟล็ทั่วไปที่สร้างขึ้นได้ด้วย Text Editor หรืออาจจะสำเนามาจากไฟล์อื่น หรืออาจจะเป็นโปรแกรมใช้งานต่างๆก็ได้</p>
<p>Directory files คือไฟล์ที่เก็บไฟล์ทั่วไปหรือจะเก็บไฟล์ที่เป็น Directory ด้วยกัน ที่เรียกว่า Sub Directory ก็ได้ โดยที่ Directory บนสุด (root) ของ ยูนิกซ์จะแทนด้วย &#8221; / &#8220;</p>
<p>Special files เป็นไฟล์พิเศษจะมีอยู่สองแบบคือ Character device file และ Block device file ทั้งสองแบบจะเป็นไฟล์ device driverโดยส่วนใหญ่จะเก็บไว้ที่ /dev แต่ไฟล์ทั้งสองจะแตกต่างกัน ที่การรับส่งข้อมูล นั่นคือ Character device file จะรับส่งข้อมูลที่ละตัวอักษร แต่ Block device file จะรับส่งข้อมูลเป็นบล็อก</p>
<p>Unix demain seckets ใน BSD Unix หรือ Name pipes ใน AT&amp;T Unix</p>
<p>Symbolic Link files หรือไฟล์เชื่อมต่อ การเชื่อมต่อของไฟล์มี 2 ลักษณะคือ</p>
<p>1. Hard Link การเชื่อมต่อแบบนี้จะใช้ I-node เดียวกับไฟล็ต้นฉบับ เหมือนกับมีการสร้างไฟล์ใหม่ แต่ใช้ค่า I-node เดิม และ I-node จะมีตัวนับจำนวนไฟล์ที่เชื่อมต่อด้วย หากแก้ไขไฟล์ใดไฟล์หนึ่งจะมีผลกระทบส่งถึงกัน เพราะข้อมูลเก็บที่เดียวกัน แต่ข้อมูลต้องอยู่ที่ partition เดียวกัน ทำให้ประหยัดเนื้อที่ สามารถอ้างถึงข้อมูลได้จากหลายๆที่</p>
<p>2. Symbolic Link การเชื่อมต่อแบบนี้จะสร้าง I-node ของตัวเองขึ้นมาใหม่ เหมือนกับ shutcut ของ windows 95 โดยที่หากเปลี่ยนแปลงต้นฉบับจะมีผลกับ link file แต่หากลบ link file จะไม่มีผลใดๆต่อไฟล์ต้นฉบับ สามารถใช่ได้ทั้งที่อยู่ partition เดียวกัน หรือต่าง partition กันก็ได้</p>
<p>เราสามารถที่จะแยกประเภทของไฟล์ต่างได้โดยใช้คำสั่ง ls -l แล้วจะแสดงสัญลักษณ์ โดยจะแสดงดังนี้</p>
<p>Type Sysbol Create Remove<br />
Text file &#8211; cp , mv ,etc rm<br />
Directory p mkdir rm -r , rmdir<br />
Character device v mknod rm<br />
Block device b mknod rm<br />
Unix domain socket s socket rm<br />
Name pipes p mknod rm<br />
link file l ln -s rm</p>
<p>โครง สร้างไฟล์ไดเรคเทอรีของระบบยูนิกซ์ส่วนใหญ่จะเป็นแบบ Filesystem Hierarchy Standard (FHS) โดยการจัดลำดับชั้นจะเป็นแบบต้นไม้หัวกลับ โดยเริ่มจากชั้นแรกที่เป็น ราก หรือ root เขียนแทนด้วย / ไฟล์แต่ละไฟล์อาจจะสร้างขึ้นมาเองหรือเป็นโปรแกรมก็ได้ ไฟล์ลักษณะนี้จะเป็นไฟล์ไดเรคเทอรี การจัดไฟล์ระบบนี้จะทำให้การจัดไฟล์เป็นระบบ ง่ายต่อการดูแลรักษา โดยจะมีโครงสร้างหลักเป็นดังนี้</p>
<p>/ เป็นไดเรคเทอรี root ที่เก็บไฟล์ kernel ของระบบ</p>
<p>/bin เป็นไดเรคเทอรีที่ใช้เก็บคำสั่งทั่วไปของระบบ</p>
<p>/dev เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ที่เกี่ยวกับอุปกรณ์ต่างๆ</p>
<p>/etc เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ที่เป็น config files ของเครื่อง</p>
<p>/etc/X11 เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ที่เป็น config files ของ x windows</p>
<p>/etc/skel เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ที่เป็นไฟล์ต้นฉบับที่จะถูกสำเนาไปยัง home user</p>
<p>/lib เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ไลบรารี สำหรับให้โปรแกรมต่างๆเรียกใช้</p>
<p>/sbin เป็นไดเรคเทอรีที่ใช้เก็บไฟล์คำสั่งของผู้ดูแลระบบ</p>
<p>/usr เป็นไดเรคเทอรีที่ใช้เก็บไฟล์โปรแกรมของผู้ใช้ทั่วไป</p>
<p>/var เป็นไดเรคเทอรีที่ใช้เก็บไฟล์ข้อมูลทั่วไปของระบบ</p>
<p>PERMISSION<br />
ยูนิกซ์ เป็นระบบ OS ที่ใช้ไฟล์ต่างๆ ร่วมกันหากทุกคน มีสิทธิที่จะกระทำต่อทุกไฟล์เท่ากัน ย่อมจะทำให้เกิดความวุ่นวาย ดังนั้นในระบบยูนิกซ์จึงมี user id และ group id ประจำ user แต่ละคน จึงทำให้ที่ home directory ของแต่ละ user จะเป็นที่ ที่ user แต่ละคนมีสิทธิมากที่สุด เมื่อ user สร้างไฟล์ขึ้นมาก็จะทำให้ มีชื่อของผู้สร้างติดอยู่ด้วย การจำกัดสิทธิการเข้าถึงไฟล์ออกเป็น 3 กลุ่มคือ</p>
<p>Owner เจ้าของไฟล์หรือผู้ที่สร้างไฟล์<br />
Group ผู้ใช้กลุ่มเดียวกับผู้ใช้ไฟล์ คือ ผู้ใช้ที่มี gid เดียวกับเจ้าของไฟล์<br />
Other คนอื่นๆหรือใครก็ได้</p>
<hr size="2" /><strong>สิทธิในไฟล์จะประกอบไปด้วย </strong></p>
<p>Read Permission สิทธิในการอ่าน แทนด้วย r<br />
Write Permission สิทธิในการเขียน แทนด้วย w<br />
Execute Permission สิทธิในการ Run แทนด้วย x</p>
<p>user สามารถที่จะดู Permission ของไฟล์และชนิดของไฟล์ได้โดยคำสั่ง<br />
$ ls -la<br />
-rwxr&#8211;r&#8211; 1 wihok Special 5223 May 12 10:10 .profile<br />
-rwxr&#8211;r&#8211; 1 wihok Special 2022 May 12 10:13 .kshrc<br />
drwx&#8212;&#8212; 2 wihok Special 1024 May 12 10:34 mail<br />
-rw-r&#8211;r&#8211; 1 wihok Special 11211 May 12 11:01 test<br />
จากตัวอย่างจะเห็นว่า มีทั้งหมด 7 filed ดังนี้</p>
<p>Field<br />
ความหมาย</p>
<p>1 File Type และ Permission<br />
2 จำนวน link<br />
3 เจ้าของ (owner)<br />
4 กลุ่ม (group)<br />
5 ขนาดของไฟล์ (byte)<br />
6 วัน-เวลาที่ update<br />
7 ชื่อไฟล์</p>
<p>มาดูกันที่ field ที่ 1 ที่เป็น Permission โดย</p>
<p>อักษรตัวที่ 1 แสดงชนิดของไฟล์<br />
อักษรตัวที่ 2-4 แสดง Owner<br />
อักษรตัวที่ 5-7 แสดง Group<br />
อักษรตัวที่ 8-10 แสดง Other</p>
<p>เช่น จากตัวอย่าง ไฟล์ .kshrc มี permission เป็น -rwxr&#8211;r&#8211; หมายความว่า Owner สามารถที่จะ อ่าน เขียน และ Run ได้ แต่ user กลุ่มเดียวกับ owner และ other อ่านได้เพียงอย่างเดียว สังเกตุได้ว่าหากไม่มี permission จะแสดงด้วย</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>คำสั่งเปลี่ยน Permission<br />
การเปลี่ยน permission ของไฟล์กระทำได้โดยผู้ที่เป็น Admin ของระบบ หรือเจ้าของไฟล์นั้น โดยมีคำสสั่งคือ</p>
<p>1.คำสั่ง chmod ใช่เปลียน permission ของไฟล์มีวิธีการเปลี่ยนได้ 2 วิธี คือ</p>
<p>Absolute Permission</p>
<p>รูปแบบ $ chmod ตัวเลข filename<br />
โดยสามารถหาตัวเลขที่มาใส่ได้จากการแทนค่าน้ำหนักของแต่ละบิทลงไปคือ<br />
บิท r แทนน้ำหนักด้วย 4<br />
บิท w แทนน้ำหนักด้วย 2<br />
บิท x แทนน้ำหนักด้วย 1<br />
บิท &#8211; แทนน้ำหนักด้วย 0</p>
<p>โดย หากต้องการให้ permission ใดก็แทนค่าของบิทนั้นลงไปแล้วนำเลขน้ำหนักของแต่ละบิทมารวมกัน (คิดทีละส่วนโดยแยกเป็น owner , group และ other) เช่น<br />
จะกำหนดสิทธิไฟล์ test ให owner สามารถอ่าน เขียน และ Run ได้ group สามารถอ่านและ run ได้ ส่วน other สามารถ run ได้เพียงอย่างเดียวคิดได้ดังนี้</p>
<p>Permission rwx r-x &#8211;x<br />
Number 7 5 1<br />
ใช้คำสั่ง : $ chmod 751 test</p>
<p>Relative Permission</p>
<p>ผู้ใช้ไฟล์ เครื่องหมาย สิทธิ<br />
u (เจ้าของไฟล์) + เพิ่มสิทธิ r (อ่าน)<br />
g (กลุ่มเดียวกับเจ้าของไฟล์)<br />
- ลดสิทธิ w (เขียน)<br />
o (คนทั่วไปใครก็ได้)<br />
= กำหนดสิทธิ x (Run)<br />
a (ทุกคนทุกกลุ่มที่กล่าวมา)</p>
<p>เช่นจะเปลี่ยน permission ของไฟล์ .kshrc จาก rwxr&#8211;r&#8211; เป็น rwxrw-r&#8211;<br />
$ chmod g+w .kshrc<br />
หรือจะเปลี่ยน permission ของไฟล์ .profile จาก rwxr&#8211;r&#8211; เป็น rwxrw-rw-<br />
$ chmod go+w .profile</p>
<p>2.คำสั่ง chown ใช้เปลี่ยนผู้เป็นเจ้าของไฟล์ เช่น</p>
<p>$ chown newuser test คือเปลี่ยน field ที่ 3 จากการใช้คำสั่ง ls -la จากเจ้าของเดิมคือ wihok เป็น newuser</p>
<p>3.คำสั่ง chgrp ใช้เปลี่ยนกลุ่มผู้เป็นเจ้าของไฟล์ เช่น</p>
<p>$ chgrp newgroup test คือเปลี่ยน field ที่ 4 จากการใช้คำสั่ง ls -la จากเจ้าของเดิมคือ Special เป็น newgroup<br />
Text Editor<br />
Text Editor ที่ใช้ในระบบยูนิกซ์ที่เห็นบ่อยคือ โปรแกรม pico และโปรแกรม vi แต่ pico ไม่ได้มมีอยู่ใใน unix ทุกตัว การใช้งานง่าย ไม่ต้องจำคำสั่งต่างเพราะมีอธิบายอยู่แล้วที่ด้านล่างหน้าจอภาพ สามารถพิมพ์ text ได้เลย แต่ text editor ที่ชื่อ vi จะเป็น text editor ที่มีอยู่ในทุกยูนิกซ์ การใช้งานค่อนข้างยาก ดังนั้นผู้เขียนจะแนะนำเฉพาะการใช้ vi เท่านั้น</p>
<p>การเรียกใช้งาน text editor<br />
$ pico filename หรือ $ pico<br />
$vi filename หรือ $ vi</p>
<p>การใช้งาน vi<br />
vi เป็น text editor ที่มีบนยูนิกซ์ จะแบ่งการทำงานออกเป็น 3 mode คือ</p>
<p>Command Mode เป็นการทำงานของการเคลื่อนย้าย cursor ( editor ตัวอื่นจะใช้คีย์ลูกศร ,Home ,End ,insert , delete แต่ใน vi คีย์เหล่านี้จะไม่มีผล )</p>
<p>Edit Mode เป็นการทำงานของการแก้ไขข้อความ</p>
<p>Last Line Mode เป็นการ save , open , quit , ค้นหา , ฯลฯ</p>
<p>การเปลี่ยน mode ใน vi จะใช้ปุ่ม Esc ยกเว้นเปลี่ยนไปสู่ Last line Mode จะต้องกด Esc แล้วกด Shift + : จะปรากฎ : ที่บรรทัดล่างสุด</p>
<p>Command Mode<br />
การ ทำงานใน mode นี้จะเป็นการเคลื่อนย้ายเคอเซอร์ไปยังตำแหน่งที่ต้องการ แต่หากย้ายไปตำแหน่งที่ไม่มีข้อมูล มันจะส่งเสียงเตือน ตัวอักษรที่ใช้ใน mode นี้ที่สำคัญได้แก่</p>
<p>h เลื่อน cursor ไปทางซ้ายทีละตัวอักษร<br />
j เลื่อน cursor ลง 1 บรรทัด<br />
k เลื่อน cursor ขึ้น 1 บรรทัด<br />
l เลื่อน cursor ไปทางฃวาทีละตัวอักษร<br />
w เลื่อน cursor ไปทางฃวาทีละคำ<br />
b เลื่อน cursor ไปทางซ้ายทีละคำ<br />
$ เลื่อน cursor ไปท้ายบรรทัด<br />
0 เลื่อน cursor ไปต้นบรรทัด<br />
nG ไปยังบรรทัดที่ n หากไม่ใส่ n จะไปบรรทัดสุดท้าย<br />
Ctrl+f เลื่อน cursor ลง 1 หน้าจอ<br />
Ctrl+b เลื่อน cursor ขึ้น 1 หน้าจอ<br />
Ctrl+L Refresh หน้าจอ<br />
[[ ไปยังต้นไฟล์<br />
]] ไปยังท้ายไฟล์<br />
ััyy Copy ข้อความทั้งบรรทัด<br />
ัyw Copy ข้อความทั้งคำ<br />
ัyG Copy ถึงท้ายไฟล์<br />
y$ Copy ถึงท้ายบรรทัด<br />
p Paste หลัง cursor<br />
P Paste หน้า cursor<br />
cw พิมพ์ทับทีละ word<br />
c$ พิมพ์ทับจนถึงท้ายบรรทัด<br />
cG พิมพ์ทับจนถึงท้ายไฟล์<br />
r พิมพ์ทับทีละ 1 ตัว<br />
R พิมพ์ทับจนกว่าจะกด Esc<br />
u Undo การกระทำครั้งล่าสุด<br />
x ลบตรง cursor<br />
X ลบหน้า cursor<br />
dw ลบคำ<br />
dd ลบบรรทัด<br />
d$ ลบจาก cursor จนท้ายบรรทัด<br />
d0 ลบจาก cursor จนต้นบรรทัด<br />
dG ลบจาก cursor จนท้ายไฟล์</p>
<p>Edit Mode<br />
ตัวอักษรที่ใช้ใน mode นี้ที่สำคัญได้แก่</p>
<p>a เพิ่มข้อมูลต่อจาก cursor<br />
A เพิ่มข้อมูลต่อจากท้ายบรรทัด<br />
i เพิ่มข้อมูลหน้า cursor<br />
I เพิ่มข้อมูลที่ต้นบรรทัด<br />
o แทรกบรรทัดด้านล่าง cursor<br />
O แทรกบรรทัดด้านบน cursor</p>
<p>Last Line Mode<br />
การใช้งาน mode นี้ก็กด Esc แล้วกด : ก็จะปรากด : ที่ท้ายบรรทัด และสามารถที่จะป้อนคำสั่งต่อไปนี้ได้</p>
<p>:q! quit<br />
:w! save<br />
:wq! save and quit<br />
:w! filename save as filename<br />
:e! filename open filename<br />
:/string ค้นหาข้อความที่ต้องการ<br />
:help ดูคำสั่งต่างๆ<br />
:set nu แสดงหมายเลขบรรทัด<br />
:set nonu ไม่แสดงหมายเลขบรรทัด</p>
<p><strong>ความรู้พื้นฐานเกี่ยวกับระบบ </strong><strong>Process บน Unix ที่ควรทราบ</strong></p>
<p>Process หมายถึงโปรแกรมที่อยู่ในหน่วยความจำและพร้อมที่จะถูกประมวลผล ซึ่งหากโปรแกรมยังถูกอยู่ในฮาร์ดไดร์หรือ ยังไม่สามารถประมวลผลโดย CPU ได้โปรแกรมนั้นๆ จะยังไม่เป็น Process แต่จะเป็นเพียงโปรแกรมเท่านั้น (ปกติผู้ใช้มักจะสับสนระหว่างโปรแกรมกับ Process ทั้งนี้ให้ลองคิดว่า 1 โปรแกรมสามารถเป็นได้หลาย Process พร้อมกัน เช่น การ Run โปรแกรมพร้อมกันหลาย Copy จะเป็น 1 โปรแกรม แต่มีกลาย Process) การอ้างอิงถึง Process บนระบบปฏิบัติการต่างๆ นิยมอ้างอิงโดยใช้เลขประจำตัว Process เป็นหลัก หรือ Process ID (PID) ซึ่งเลขดังกล่าวนี้ระบบปฏิบัติการจะเป็นผู้กำหนดให้เมื่อมีการ Execute หรือ สั่ง Run โปรแกรม (สร้าง Process)</p>
<p>ระบบ Process บน Unix จะมีการจัด Scheduling เพื่อเปลี่ยนงานระหว่าง Process ต่างแบบ Multilevel Queue Scheduling กล่าวคือแต่ละ Process จะมีเลข Piority ของตัวเองโดยเลข Piority ที่น้อยแปลว่า Process นั้นมีความสำคัญสูงกว่า และ Process ที่มีความสำคัญสูงดังกล่าวจะมีสิทธิได้ใช้ CPU TIME มากกว่า</p>
<p>เมื่อมีผู้ใช้งานสั่งให้ Process เริ่มทำงาน ระบบปฏิบัติการจะทำการสร้าง Process แล้วส่งเข้าไปสู่ Ready Queue เพื่อรอเข้าประมวลผลภายใน CPU และเมื่อหมดเวลาในการประมวลผล (สำหรับ Preemtive Scheduling)หรือเมื่อ Process ต้องรอการทำงานของ I/O ระบบจะเลือก Process จากสถานะ Ready Queue ตัวถัดไปเข้ามาประมวลผลใน CPU ทั้งนี้การเลือกจะดูที่เลข Piority และลำดับความสำคัญอื่นๆ ประกอบกัน จะวนเวียนเช่นนี้ไปเรื่อยๆ จนกระทั่ง Process ทำงานเสร็จและออกจากระบบไป</p>
<p align="center">
<p><strong>การดูสถานะของ </strong><strong>Process บนระบบ</strong></p>
<p>การดูสถานะของ Process ต่างบนระบบเราสามารถทำได้โดยเรียกใช้คำสั่ง ps</p>
<p>โครงสร้างคำสั่ง</p>
<p>ps [option]&#8230;</p>
<p>โดย option ที่มักใช้กันใน ps คือ</p>
<p>-l แสดงผลลัพธ์เป็น Long Format<br />
-f แสดงผลลัพธ์เป็น Full Format<br />
-a แสดง Proces ทั้งหมดที่มี TTY ตรงกับ TTY ของผู้ใช้งาน<br />
-x แสดง Process ทั้งหมด</p>
<p>ตัวอย่างผลลัพธ์ที่ได้จากคำสั่ง ps</p>
<table border="1" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>$ ps -al<br />
F     UID   PID  PPID PRI    NI   VSZ  RSS WCHAN    STAT TTY        TIME COMMAND<br />
000   500  2293    2292  14   0    2452 1408 wait4  S    ttyp1        0:00 bash<br />
000   500  2677    2293   9   0    1968  876 do_sig T    ttyp1        0:00 vi<br />
000   500  2680    2293  19   0    3020 1152 -      R    ttyp1        0:00 ps al</td>
</tr>
</tbody>
</table>
<p>ความหมายของแต่ละ Field คือ</p>
<ul>
<li>F (Flag) ไม่ขอกล่าวถึงในที่นี้</li>
<li>UID เลขประจำตัวของผู้ใช้งาน      Process ดังกล่าว(User ID)</li>
<li>PID หมายเลข Process      (Process ID)</li>
<li>PPID หมายเลขของ Process      ที่เป็นผู้สร้าง (Parent PID)</li>
<li>PRI ค่า Prority</li>
<li>NI ค่า Prority ที่มีการเปลี่ยนแปลง (Nice)</li>
<li>VSZ ประมาณหน่วยความจำเสมือนที่ถูกใช้งาน      (Virtual SIZE)</li>
<li>RSS ปริมาณหน่วยความจำที่คงค้างอยู่      (Resident Set Site)</li>
<li>WCHAIN ไม่ขอกล่าวถึงในที่นี้</li>
<li>STAT แสดงสถานะของ Process      (Status)
<ul>
<li>D รอการทำงานของ       I/O (uninterruptible sleep)</li>
<li>R อยู่ระหว่างการประมวลผลใน       CPU (Run)</li>
<li>S รออยู่ใน       Ready Queue (sleeping)</li>
<li>T อยู่ระหว่างหยุดประมวลผล       (traced or stopped)</li>
<li>Z defunct หรือค้าอยู่ในระบบ เกิดจาก Parent Process ตายไปก่อนที่       Child Procees จะทำงานเสร็จ (&#8220;zombie&#8221;)</li>
</ul>
</li>
<li>TTY หน้าจอที่ใช้สำหรับการประมวลผลของ      Process นั้นๆ (Tele-type)</li>
<li>TIME เวลาที่ Process      ใช้ทำงาน</li>
<li>COMMAND คำสั่งหรือ      ชื่อโปรแกรม</li>
</ul>
<p>(Option เละความหมายบางอย่างอาจแตกต่างกัน ขึ้นอยู่กับว่าเป็น BSD-Style หรือ SYSV-Style)</p>
<p>แหล่งข้อมูลเพิ่มเติม : man ps</p>
<p><strong>การ </strong><strong>kill process</strong></p>
<p>ในการ kill process เราสามารถกระทำได้โดยใช้คำสั่ง kill โดยในการ kill ตามปกติ process จะถูก kill ด้วยสัญญาณ SIGTERM (15)หรือสัญญาณที่บอกให้ process จบการทำงาน ทั้งนี้บ้าง process อาจจะมีการดักจักสัญญาณ kill ดังกล่าวไว้เพื่อไม่ให้ถูก kill ดังนั้นในหลายกรณี เราจึงต้อง kill process ด้วยสัญญาณ SIGKILL (9) จึงจะสามารถ kill process ได้จริง</p>
<p>โครงสร้างคำสั่ง</p>
<p>kill [ -s signal ] pid &#8230;<br />
kill -l [ signal ]</p>
<p>โดย option ที่มักใช้กันใน kill คือ</p>
<p>pid &#8230; ใช้เพื่อระบุหมายเลข Process ที่ต้องการ kill</p>
<p>-l แสดงชื่อสัญญาณ kill ทั้งหมด</p>
<p>-s ระบุสัญญาณที่จะใช้ kill</p>
<p>เพื่อความสะดวกต่อการใช้งาน ในบางระบบบจึงได้มีการพัฒนาโปรแกรม killall เพื่อช่วยในการ kill process ทุกอันที่มีชื่อของ command ตรงกับชื่อที่ระบุ</p>
<p>โครงสร้างคำสั่ง</p>
<p>killall [ -egiqvw ] [ -signal ] name &#8230;<br />
killall -l<br />
killall -V</p>
<p>โดย option ที่มักใช้กันใน kill คือ</p>
<p>-e ชื่อ Command ของ Process จะต้องตรงกับที่ระบุ<br />
-g kill กลุ่ม process แทนการ kill process<br />
-i ยืนยันก่อนทำการ kill<br />
-l แสดงสัญญาณการ kill ทั้งหมด<br />
-q quiet; ไม่แสดงผลลัพธ์ใดๆ<br />
-signal ระบุสัญญาณ kill อื่นๆที่ต้องการ<br />
-v แสดงผลถ้า process kll เป็นผลสำเร็จ<br />
-w รอจนกว่า Process จะตาย</p>
<p>ตัวอย่างการใช้งานคำสั่ง kill และ killall</p>
<table border="1" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>$ kill -s SIGKILL 2288<br />
$ killall netscape-communicator</td>
</tr>
</tbody>
</table>
<p>แหล่งข้อมูลเพิ่มเติม : man kill, man killall</p>
<p><strong>การกำหนด/เปลี่ยน </strong><strong>Priority ให้กับ Process</strong></p>
<p>โดยปกติแล้ว Process ต่างๆ บน Unix จะถูกสร้างขึ้นโดยมีเลข Priority เดียวกันกับ Parent Process ซึ่งเราจะทราบหมายเลข Priority ดังกล่าวได้โดยการเรียกคำสั่ง nice แบบไม่ระบุ Parameter ซึ่งหากผู้ใช้ต้องการ Run Process ด้วยค่า Priority ที่สูงหรือต่ำกว่าค่าปกติแล้ว ผู้ใช้จะต้อง Run Process ผ่านคำสั่ง nice เสมอ (โดยปกติผู้ใช้ทั่วไปจะทำได้เพียงการ Run Process ด้วย Priority ที่ตำกว่าปกติเท่านั้น)</p>
<p>โครงสร้างคำสั่ง</p>
<p>nice [option]&#8230;</p>
<p>โดย option ที่มักใช้กันใน nice คือ</p>
<p>-n priority</p>
<p>อย่างไรก็ตามในหลายๆ กรณ๊ผู้ใช้อาจจะต้องการเปลี่ยนแปลงค่า Priopity หลังจากที่เรียกใช้งาน Process แล้ว การกระททำในลักษณะดังกล่าวสามารถทำได้โดยใช้คำสั่ง renice</p>
<p>โครงสร้างคำสั่ง</p>
<p>renice [option]&#8230;</p>
<p>โดย option ที่มักใช้กันใน renice คือ</p>
<p>-g ใช้เพื่อระบุว่ากลุ่ม Process</p>
<p>-u ใช้เพื่อระบบ Username</p>
<p>-p ใช้เพื่อระบุเลข Process (หากไม่ระบุจะถือว่าเป็น เลข Process เสมอ)</p>
<p>ตัวอย่างการใช้งานคำสั่ง nice และ renice</p>
<table border="1" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>$ nice -n +10 ls -al<br />
$ renice +1 987 -u daemon root -p 32</td>
</tr>
</tbody>
</table>
<p>จากตัวอย่าง nice จะทำให้คำสั่ง ls -al จะทำงานโดยมี priority ตำลงกว่าปกติ 10 และ renice จะทำให้ Process ที่มี PID เป็น 987, 32 , และ Process ที่เป็นของ User daemon และ root มี Proity ต่ำลงกว่าเดิมอีก 1 ขั้น</p>
<p>แหล่งข้อมูลเพิ่มเติม : man nice และ man renice</p>
<p><strong>การ </strong><strong>Run Process แบบไม่ต้องมีหน้าจอด้วย nohup</strong></p>
<p>โดยปกติหากผู้ใช้เรียกใช้งานโปรแกรมใดๆ ก็ตามหาก Process นั้นยังคงทำงานค้างอยู่ แต่ผู้ใช้ Logout จากระบบก่อนที่ Process จะประมวลผลเสร็จ Process ที่ทำงานค้างอยู่นั้นจะถูก kill โดยอัตโนมัติ เพราะระบบจะไม่ยอมให้ Process ทั่วไปทำงานได้โดยไม่มีหน้าจอ ด้วยเหตุนี้จึงมีการพัฒนาวิธีการที่จะ run process ที่มีความทนทานต่อการ hangup หรือสามารถทำงานต่อไปได้แม้ว่าผู้ใช้จะออกจากระบบไปแล้ว ซึ่งเราะจะเรียกการใช้งาน Process ในลักษณะนี้ว่า NOHUP</p>
<p>อย่างไรก็ตามโปรแกรมที่ Run แบบ NOHUP จะทำมีค่าความสำคัญ (Priority) ต่ำกว่าปกติอยู่ 5 เสมอ</p>
<p>โครงสร้างคำสั่ง</p>
<p>nohup COMMAND [ARG]&#8230;</p>
<p>ทั้งนี้หากไม่มีการ Redirection ผลลัพธ์แล้ว ผลลัพธ์จะแสดงออกมายังfile ชื่อ &#8220;nohup.out&#8221;</p>
<p>ตัวอย่างการใช้งานคำสั่ง nohup</p>
<table border="1" cellspacing="0" cellpadding="0" width="90%">
<tbody>
<tr>
<td>$ nohup sort mydata.txt &gt; output.txt   &amp;</td>
</tr>
</tbody>
</table>
<p><strong>การจัดการ </strong><strong>Process ด้วยโปรแกรม top</strong></p>
<p>จากตัวอย่างการจัดการ Process ไม่ว่าจะเป็นการสร้าง , การเปลี่ยนค่า Priority และการ kill Process ที่กล่าวมา จะสังเกตได้ว่าการทำงานแต่อย่าง จะมีโปรแกรมที่แยกกันเป็นพิเศษเสมอ ด้วยเหตุนี้บางระบบจึงได้มีการพัฒนาโปรแกรมชื่อ top เพื่อเป็นตัวจัดการ Process ที่รวบรวมขุ้นอนย่อยทุกอย่างไว้ด้วยกัน</p>
<p>โครงสร้างคำสั่ง</p>
<p>top</p>
<p>โดยคำสั่งที่มักใช้กันใน top คือ</p>
<p>h &#8211; help</p>
<p>k &#8211; kill</p>
<p>r &#8211; renice</p>
<p>q &#8211; quit</p>
<p>หน้าจอของโปรแกรม top จะแสดงรายละเอียดต่างๆของ Process ซึ่งผู้ใช้สามารถที่จะเลือกรูปแบบการดูได้ และ สามารถจะ kill หรือ renice ได้ทันท ทั้งนี้รายละเอียดเพิ่มเติมให้กด h และดูจาก help ของโปรแกรม top ได้</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/knowladledge.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/knowladledge.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/knowladledge.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/knowladledge.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/knowladledge.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/knowladledge.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/knowladledge.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/knowladledge.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/knowladledge.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/knowladledge.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/knowladledge.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/knowladledge.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/knowladledge.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/knowladledge.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=knowladledge.wordpress.com&amp;blog=8309308&amp;post=3&amp;subd=knowladledge&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://knowladledge.wordpress.com/2009/06/24/command-line/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f873db6aa1b88b45a30f3c304a3b549d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">emol2ock</media:title>
		</media:content>
	</item>
	</channel>
</rss>
