Showing posts with label freebsd. Show all posts
Showing posts with label freebsd. Show all posts

Tuesday, October 25, 2011

how to move multiple file with CLI

การย้ายไฟล์จากที่หนึ่งไปยังอีกที่หนึ่ง ปกติแล้วถ้าหากใช้ Windows ก็จะเลือกไฟล์หลาย ๆ ไฟล์จากนั้นก็ Drag & Drop file ไปไว้อีกทีนึงได้เลย แต่ถ้าเป็น CLI (Command Line Interface) ละจะทำอย่างไร?
หากต้องการ move file ทั้ง directory '/home/user/a' and rename directory to directory '/home/user/b' เลยอาจใช้คำสั่งนี้
mv /home/user/a /home/user/b
หาก /home/user/b exist can use this command
mv /home/user/a/* /home/user/b
ในขณะที่ file ที่ต้องการจะ move มีบางไฟล์จาก /home/user/a โดยที่ต้องการ move file ที่ไม่ได้ถูกเปลี่ยนแปลงมาแล้วเกินกว่า 30 วัน
find /home/user/a -type f -mtime +30 -exec mv '{}' /home/user/b \;

Read More

Wednesday, October 19, 2011

automatic shutdown server by cron

หลาย ๆ ครั้งที่เครื่อง Server ไม่สามารถ shutdown ได้ในเวลาที่เราทำงาน ครั้นจะให้กลับมา shutdown ตอนดึก ๆ ก็คงจะไม่ดี ตัวช่วยในเรื่องเวลาที่ ubuntu, debian, linux, bsd, freebsd, unix ต่างก็มีนั่นก็คือ cron
การใช้งาน
เข้า Terminal แล้วใช้คำสั่ง สำหรับการตั้งเวลา cron ด้วย root
sudo crontab -e
หากว่าไม่ต้องการใช้ root ตั้งเวลา cron ต้องการเพียงแค่ user ที่ login อยู่ให้ใช้คำสั่ง
crontab -e
หากเรียกใช้งาน crontab ครั้งแรกอาจมีคำถามว่าต้องการเลือก shell editor แบบไหน ผมขอแนะนำให้เลือก nano สำหรับมือใหม่ครับ
เมื่อเรียกใช้คำสั่งแล้วจะพบกับหน้าจอสำหรับ กำหนดให้ cron ทำงาน โดย cron จะมีฟอแมตคือ
MIN HOUR DOM MON DOW CMD
โดยที่
MIN คือนาที มีค่าตั้งแต่ 0 - 59
HOUR คือชั่วโมง มีค่าตั้งแต่ 0 - 23
DOM ย่อมาจาก Day of month คือวันที่นั่นเองครับ มีค่าตั้งแต่ 1 - 31 ตามจำนวนวันในเดือนนั้น ๆ
MON คือเดือน มีค่าตั้งแต่ 1 - 12
DOW ย่อมาจาก Day of week คือ วันในสัปดาห์ มีค่าตั้งแต่ 0 - 6 โดยที่เริ่มตั้งแต่ 0 คือวันอาทิตย์, 1 คือวันจันทร์ ... ไล่ไปเรื่อย ๆ จน 6 คือวันเสาร์
CMD คือคำสั่งที่ต้องการจะสั่งให้ server ทำงานอัตโนมัติตามเวลาที่กำหนด ซึ่งตามบทความนี้คำสั่งที่จะใช้คือ shutdown -h now สำหรับปิดเครื่อง และ reboot สำหรับ restart เครื่อง server
เมื่อรู้ความหมายของ format cron แล้วดังนั้น หากต้องการปิดเครื่อง server ทุกวันเวลา ตีสาม คำสั่งคือ
00 03 * * * /sbin/shutdown -h now
ตัวอย่างสำหรับหากต้องการ restart server ในวันที่ 20 ตุลาคม เวลา ตีสาม ห้านาที มีคำสั่งคือ
05 03 20 10 * /sbin/reboot
เมื่อทำการแก้ไขเสร็จแล้วให้ save ด้วยคีย์ Ctrl+o กด enter และออกจาก editor ด้วยคีย์ Ctrl+x (สำหรับ editor nano) เพียงเท่านี้เครื่อง server ก็สามารถทำงานได้ตามที่เราต้องการโดยไม่ต้องนั่งหน้าเครื่องแล้วครับ

Read More

Monday, October 17, 2011

How to find current runlevel on unix with who

คำสั่ง who เป็นคำสั่งเอาไว้แสดงว่าตอนนี้มีใคร log in อยู่ในระบบบ้าง โดยเมื่อใช้คำสั่ง
who
จะแสดงผลประมาณนี้
yut  tty7         2011-10-17 08:55 (:0)
yut  pts/1        2011-10-17 08:55 (:0)
ในขณะที่คำสั่งสำหรับดู previous and current runlevel ก็คือคำสั่ง runlevel
runlevel
N 2
แต่สำหรับคำสั่ง who นั้นสามารถดู current runlevel ได้ด้วยคำสั่ง
who -r
         run-level 2  2011-10-17 08:54
โดยถ้าหากต้องการดูทั้ง current runlevel และ ดูว่ามีใคร log in ในระบบด้วย จะใช้คำสั่ง
who -a
           system boot  2011-10-17 08:54
           run-level 2  2011-10-17 08:54
LOGIN      tty4         2011-10-17 08:54              1008 id=4
LOGIN      tty5         2011-10-17 08:54              1014 id=5
LOGIN      tty2         2011-10-17 08:54              1034 id=2
LOGIN      tty3         2011-10-17 08:54              1036 id=3
LOGIN      tty6         2011-10-17 08:54              1042 id=6
LOGIN      tty1         2011-10-17 08:54              1637 id=1
yut        + tty7         2011-10-17 08:55  old         2043 (:0)
yut       + pts/1        2011-10-17 08:55 01:03        2133 (:0)

ที่มา www.theunixtips.com

Read More

Wednesday, October 12, 2011

FreeBSD clonning

ไปเจอบทความของคุณครูนิส ที่เว็บนี้ แล้วทำให้นึกขึ้นได้ว่าจริง ๆ แล้วจะ Backup หรือ Clonning ก็ไม่ใช่เรื่องยากอะไรเลย เพราะโปรแกรมอะไรต่าง ๆ ที่อยู่ในแฟ้ม /usr and /var ก็เกิดจากการ compile มาแล้วทั้งสิ้น ทั้งนี้ทั้งนั้นเพียงแค่ copy แฟ้มสำคัญ ๆ เก็บเอาไว้แล้วเอามาใช้งานได้เลย ซึ่งเนื้อหาขั้นตอน ย่อ ๆ จาก เว็บคุณครูนิส ประมาณนี้

ทำการบีบอัดแฟ้ม สำคัญหลัก ๆ เอาไว้ ซึ่ง แฟ้มที่สำคัญคือ /root /boot /etc /usr และ /var ซึ่งนอกจากจะบีบอัดเป็น .tar.gz แล้วอาจประยุกต์ใช้ rsync ในการเก็บก็เป็นได้
- สำรองแฟ้ม /root
cd /root
tar -zcvf /home/root.tar.gz *
- สำรองแฟ้ม /boot
cd /boot
tar -zcvf /home/boot.tar.gz *

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

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

สิ่งที่ในเว็บของครูมานิส เพิ่มขึ้นมาคือการเขียน Script สำหรับ restore or clone ซึ่งหากต้องทำหลาย ๆ เครื่องก็จะทำให้สะดวกแก่การใช้งานมากขึ้น

ขอบคุณแหล่งอ้างอิง เว็บคุณครูนิส ครับ

Read More

Monday, October 10, 2011

เกี่ยวกับเวลา (ภาค ntp)

ได้มีบทความเกี่ยวกับเรื่องเวลาในบทความก่อนหน้านี้ไปแล้ว ซึ่งในบทความนี้ก็จะเกี่ยวกับเวลาเช่นเดียวกัน แต่เป็นคนละเรื่องกันนะ โดยในบทความนี้จะกล่าวถึงเรื่อง time syncronize ระหว่างเครื่องคอมพิวเตอร์ ซึ่งก่อนหน้านี้ได้มีโอกาสทำ NTP Server เอาไว้สำหรับ sync เวลาระหว่างเครื่องคอมพิวเตอร์ในวงแลนเดียวกันโดยการทำ NTP Server นั้นมีขั้นตอนง่าย ๆ ดังนี้

[ฝั่ง Server : ip 192.168.0.1]
- Install NTP server

sudo apt-get install ntp


- จากนั้นก็ทำการปรับแต่ง configuration โดยเพิ่มข้อความด้านล่างนี้ที่แฟ้ม /etc/ntp.conf

server 0.th.pool.ntp.org
server 0.asia.pool.ntp.org
server 2.asia.pool.ntp.org
# If machine cannot connect to internet this will use this machine
server 127.127.1.0
fudge 127.127.1.0 stratum 10

สำหรับ 3 บรรทัดแรก บอกว่าให้ทำการ sync เวลากับ server เหล่านี้ ที่ใดที่หนึ่ง ซึ่งหาก internet down หรือเกิดปัญหาในการเชื่อมต่อใด ๆ เกิดขึ้น ก็จะใช้ 3 บรรทัดหลังสุดนั่นคือใช้เวลาในเครื่อง server เครื่องนี้เอง

- เมื่อทำการปรับแต่งค่าเสร็จแล้วก็ทำการ restart service ซะเป็นอันเสร็จพิธี

sudo /etc/init.d/ntp restart


[ฝั่ง client]
- Install NTP เช่นเดียวกัน

sudo apt-get install ntp


- จากนั้นทำการปรับแต่ง แฟ้ม /etc/ntp.conf โดยเพิ่มไอพีเครื่อง Server ด้านบนลงไป

server 192.168.0.1

- สุดท้ายทำการ restart service

sudo /etc/init.d/ntp restart


เพียงเท่านี้ก็จะมีเครื่อง Server สำหรับ sync เวลาภายในแลนเดียวกันใช้แล้วครับ

ต่อไปผมเกิดข้อสงสัยขึ้นเมื่อใช้งาน ntptrace เพื่อทดสอบการ เชื่อมต่อระหว่าง client & server ซึ่งเกิดข้อผิดพลาดขึ้นโดยแจ้งว่า ***Request timed out อ้าว ! ก็เมื่อกี้ทำเสร็จแล้วนี่ตรวจสอบเวลาก็ sync กันแล้วนี่นาทำไม่ timed out ล่ะ จึงค้นหาใน google หาไปหามาไม่กระจ่าง สงสัยใช้คำค้นไม่ดี จึงลองนั่งดูที่ไฟล์ config อีกครั้งจึงไปเจอ ตำแหน่งนี้

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

จึงได้ลองทำการเพิ่มเข้าไปเป็นดังนี้

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
restrict 192.168.0.0 mask 255.255.255.0

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

192.168.0.1: stratum 3, offset -0.001071, synch distance 0.101328

Read More

[ทิป] ค้นหาคำจากเอกสารด้วย กรึ๊บ (grep)

การค้นหาคำจากเอกสารสำหรับหน้า GUI นั้น จะคุ้นเคยกับ Ctrl+F ซึ่งสามารถใช้กับ MS word, Texteditor, Firefox etc. แล้วก็ใส่คำที่ต้องการค้นหาไป ก็จะสามารถค้นหาคำที่ต้องการได้ ซึ่งในวันนี้ไม่ได้เล่าถึงวิธีใช้งาน Ctrl+F ที่คุ้นเคยกัน แต่จะแนะนำให้รู้จักกับ กรึ๊บ (grep) คำสั่ง command line บน linux

การใช้ grep ค้นหาคำที่ text file นั้นสามารถใช้คำสั่ง นี้ได้

cat php.ini | grep session

จากคำสั่งข้างต้น อธิบายทีละส่วนได้ ดังนี้

cat php.ini

เป็นคำสั่งในการอ่านไฟล์ php.ini แล้วแสดงผลทีละบรรทัดออกมายังหน้าจอแสดงผล ในขณะที่

grep session

นั้นจะเอาข้อมูลที่ได้จาก "cat php.ini" มาทำการค้นหาบรรทัดที่มีคำว่า session เท่านั้นจึงจะแสดงผล

ซึ่งคำสั่งนี้สามารถนำมาใช้กับการค้นหา package ที่ต้องการค้นหาได้ด้วย เช่น

dpkg -l | grep apache

โดยที่คำสั่ง dpkg -l เป็นคำสั่งในการ แสดงผล package ทั้งหมดที่ install ในเครื่อง ( ubuntu , debian ) ซึ่ง grep apache ก็เป็นการบอกให้แสดงผลเฉพาะบรรทัดที่มี apache เช่นกัน

Tip ในวันนี้ที่จะนำเสนอคือ การค้นหาคำจาก directory ซึ่งมีหลาย ๆ ไฟล์พร้อมกัน เช่นต้องการค้นหาคำว่า session ใน directory ที่มีชื่อว่า folder1 ใช่คำสั่งดังนี้

grep "session" -r folder1

ผลที่ได้จะแสดงที่อยู่ของไฟล์ใน folder1 แล้วจะแสดงผลเฉพาะบรรทัดที่มี session เท่านั้น

Read More