เบื่อๆ เลยหาอะไรเล่นยามบ่าย
nohup
สัปดาห์ที่แล้วพี่บอกว่าโปรแกรมที่เขียนไปมีบั๊ก ให้หาให้หน่อยว่าเกิดจากอะไร การทำงานของมันก็ง่ายคือ โปรแกรมแรกรับคำสั่งจากผู้ใช้มาดูว่าจะเรียก โปรแกรมอื่นอย่างไร จากนั้นก็เลือกโปรแกรมมาทำงาน ถ้าใช้งานตามปกติสั่งคำสั่งเสร็จแล้วกดออก มันก็ไม่มีอะไรผิดปกติ แต่อาการผิดปกติจะเกิดขึ้น เมื่อสั่งเสร็จแล้วกดปิด terminal ทิ้งทันที ดูตอนแรกก็คิดไปถึงเรื่อง process ของลินุกซ์ว่าต้องเป็นเรื่อง process แม่เรียก process ลูกแน่ๆ แต่ขุดไปขุดมาดันไม่เกี่ยวซะงั้นแต่เกิดจากตัวที่ คาดไม่ถึงคือ signal แถมเป็น signal ที่ไม่คิดว่าจะเจอด้วยคือ hang up (คือไม่เคยเจอมาก่อนหนะ ) เป็น signal ที่เกิดเมื่อมีการปิด terminal ไป(เหมือนกับวางหูโทรศัพท์อะไรประมาณนั้นมั้ง ไม่งั้นจะชื่อ hang up หรอ) หรือ connection หลุดจาก server ที่เราต่ออยู่ วิธีแก้ก็ง่ายแสนง่าย แทนที่โปรแกรม แรกจะเรียกโปรแกรมสองตามปกติ ก็เติมคำสั่ง nohup ไปข้างหน้าซะ signal นี้ก็จะไม่มากวนอีกต่อไป หรือ จะเขียนโปรแกรมที่สอง ให้ดัก signal [...]
ลบข้อความใน vi สามบรรทัด
วันนี้ได้อ่านข้อสอบเด็กๆ ที่พี่เอาไปทดสอบคนที่มาสมัครงาน เจอคำถามข้อนึงอ่านคำตอบหลายคนแล้วขำดีแต่ มีคนนึงตอบแล้วต้องมาคิดเพราะ เขียนมาว่า กด d ติดกันหกครั้ง จะว่าไปมันก็ถูกนะ แต่พี่ที่ทำงานคงอยากให้ตอบว่า กด d เลขสาม แล้วกดลูกศร ลงหรือขึ้น เอา แต่ถ้าใช้งานจริงๆ สงสัยจะกด d ติดกันซะมากกว่า หรือผมคิดไปเองเนี๊ยะ เพราะอาศัยจากพฤติกรรมส่วนตัว ก็การกด d แล้วกดจำนวนบรรทัดว่าจะลบข้อมูลไปเท่าไหร่ต้องมานั่งดู ว่าเราจะลบข้อความจากไหนถึงไหน แล้ว vi ก็แสนดีเหลือเกินไม่แสดง เลขบรรทัดซะด้วย (หรือมี option ให้กด ว่าจะแสดงหรือไม่แสดงหว่า) เวลาจะลบอะไรทีผมก็เลยเหมือน interpreter ไปโดยปริยายคอยดูว่าที่ลบไป หนะถึงไหนแล้วพอถึงบรรทัดที่ต้องการแล้วค่อยหยุดกด คิดว่าคงที่ตอบคำถามแบบนี้ก็คงเป็นเหมือนกันเลยตอบมาอย่างนี้ แต่ถ้าถามไปใหม่ว่า ถ้าจะให้ลบข้อความหนึ่งร้อยบรรทัดจะกดยังไง ไม่แน่คำตอบอาจจะเปลี่ยนไปก็ได้จริงมะ (หรือว่าจะตอบว่ากด d ติดต่อกันสองร้อยทีหว่า หึหึหึ)
Screen
หลายวันก่อนพี่ที่ทำงานแนะนำโปรแกรมนึงมาให้ลองเล่นกับโปรแกรมโหลดบิตในเร้าเตอร์ชื่อว่า screen พี่บอกว่าทำให้สลับโปรแกรมใน terminal ได้ถ้าใครนึกภาพไม่ออกก็นึกถึงหน้าต่างในวินโดว์นั่นแหละ แต่อันนี้มันอยู่ในหน้าจอดำๆ แบบดอส แต่พี่บอกว่าจำไม่ได้แล้วว่าใช้ยังไง เลยลองไปขุดๆ ดูว่า wl500gp มันทำได้หรือป่าว เพราะเครื่อง desktop ใช้หน้าต่างธรรมดาดีกว่า ปรากฏว่ามันมีด้วย เลยจัดการลองบนเร้าเตอร์ซะเลย ขั้นแรกดาวโหลดมาติดในเร้าเตอร์ก่อน ด้วยความง่ายของ firmware ที่ใช้อยู่(oleg) เลยใช้คำสั่งแค่ $ipkg install screen รอมันโหลดแล้วติดตั้งให้ก็ใช้ได้แล้ว สะดวกเหมือนอยู่บน debian หึหึ จากนั้นเวลาจะให้เร้าเตอร์โหลดอะไรจากปกติที่จะให้โปรแกรมรันเป็น daemon ด้วยคำสั่งนี้ $enhanced-ctorrent -d file.torrent ก็เปลี่ยนเป็น $screen enhanced-ctorrent ซะแล้วมันจะขึ้นหน้าจอเหมือน ctorrent ปกติแบบไม่ได้ให้รัน daemon ก็จะมีรายละเอียดต่างๆ ว่าไฟล์ดาวโหลดไปถึงไหนแล้ว ขณะนี้ดาวโหลดด้วยความเร็วเท่าไหร่ seed เท่าไหร่ peer เท่าไหร่ พอเบื่อไม่อยากดูต่อก็กด ctrl+a+d เพื่อ detach หน้าต่างออกไป เข้าสู่ [...]
คัดลอกซีดีแบบเร่งด่วนผ่าน shell
อาทิตย์ที่ผ่านมาต้องคัดลอกดีวีดีแบบเร่งด่วนจำนวนสองแผ่น แต่ว่ายังไม่ได้ติดโปรแกรมเขียนซีดีที่มีหน้าจอสวยงามให้กดๆ ได้เลย ต้องมานั่งหาคำสั่งเอาว่า fedora8 ใจดีให้อะไรมาอยู่แล้วบ้าง แล้วก็เจอตัวช่วยสองตัว นั่นคือ dd กับ cdrecord dd เอาไว้เอาซีดีหรือดีวีดีมาเก็บเป็นไฟล์ไว้ในเครื่องก่อน (โน๊ตบุ๊กมีเครื่องอ่านเขียนดีวีดีอยู่ตัวเดียวยังไงก็ต้องเก็บเป็นไฟล์ไว้ในเครื่องก่อนหละ) ด้วยคำสั่ง dd if=/dev/dvd of=[file.iso] หลังจากรอจนมันอ่านออกมาเป็นไฟล์เรียบร้อยแล้ว ก็ต้องเขียนไปยังแผ่นใหม่ด้วยคำสั่ง cdrecord cdrecord dev=/dev/dvd [file.iso] แค่นี้ก็ไม่ต้องติดโปรแกรมสำหรับเขียนซีดีเพิ่มหละ