หลังจากจัดการเซิร์ฟเวอร์ Unix หรือ Unix แล้วคุณรู้สึกว่าคุณไม่สามารถใช้เครื่องมือใด (บรรทัดคำสั่งพิเศษ)
หลังจากจัดการเซิร์ฟเวอร์ Unix หรือ Unix แล้วคุณรู้สึกว่าคุณไม่สามารถใช้เครื่องมือใด (บรรทัดคำสั่งพิเศษ)
คำตอบ:
หน้าจอ GNU - จำเป็นเมื่อคุณจัดการระบบจำนวนมากและไม่ต้องการเปิดหน้าต่างเทอร์มินัลโหล
บางฉันรู้ว่าฉันไม่สามารถอยู่ได้โดยปราศจาก ...
tee - อนุญาตให้เขียนพร้อมกันไปยัง STDOUT (เอาต์พุตมาตรฐาน) และไฟล์ เหมาะสำหรับการดูข้อมูลและบันทึกไว้ในภายหลัง
ด้านบน - ตัวจัดการงานของ UNIX ให้ภาพรวมที่ดีของระบบ
tail -f - ช่วยให้คุณดูข้อมูลที่ต่อท้ายเมื่อไฟล์โตขึ้นเหมาะสำหรับการตรวจสอบไฟล์บันทึกบนเซิร์ฟเวอร์
grep - Global Regular Expression Print เหมาะสำหรับการค้นหาข้อมูลในไฟล์
df - รายงานการใช้งานดิสก์ของระบบไฟล์ปัจจุบัน
du - รายงานการใช้งานดิสก์ของไฟล์ / ไดเรกทอรีที่แน่นอน
น้อยกว่า - จำเป็นเพื่อดูหน้าคน! ยังมีประโยชน์สำหรับการดูเอาต์พุตของคำสั่งในลักษณะที่ค้นหาได้ง่าย
vim / Emacs / nano / pico / ed - ไม่ว่าตัวแก้ไขข้อความที่คุณเลือกจะเป็นอะไรอธิบายได้ด้วยตนเองว่าทำไมถึงต้องการ
more
หรือคุณสามารถลองless
most
htop
เป็นรุ่นที่ "ดี" top
ของ
lsofเพื่อพิจารณาว่าโปรเซสใดกำลังใช้ไฟล์หรือไดเรกทอรี (มีประโยชน์เมื่อพยายามที่จะคิดออกว่าอะไรที่ป้องกันไม่ให้อุปกรณ์ umount'd)
netstatเพื่อพิจารณาว่ากระบวนการใดกำลังใช้การเชื่อมต่อเครือข่าย (โดยเฉพาะอย่างยิ่งมีประโยชน์เมื่อพยายามคิดว่า daemon ใดที่ถูกผูกไว้กับพอร์ตที่แน่นอน)
เรียนรู้เครื่องมือพื้นฐานทั้งหมด แต่เรียนรู้ Perl
Perl เหมาะอย่างยิ่งสำหรับการจัดการข้อความและเนื่องจากตัวดำเนินการ un * x อาศัยอยู่ในไฟล์ข้อความ, ท่อ, อินพุตและเอาต์พุต, Perl จึงเหมาะสมอย่างยิ่ง
โบนัสเพิ่มเติมคือ Perl เป็นแพลตฟอร์มข้ามและหากคุณต้องทำงานบางอย่างบนกล่องหน้าต่างคุณมีภาษาที่ติดตั้งได้ง่าย (เพียงแค่วางไดเรกทอรี Perl บนเซิร์ฟเวอร์) ภาษาที่คุณรู้อยู่แล้ว
และบนรถไฟแห่งความคิดรับ Cygwin เช่นกัน หากคุณเป็นผู้ดูแลระบบ un * x และต้องทำงานบนกล่องหน้าต่าง (แม้แต่เดสก์ท็อปของคุณ) ที่มี ls, rm, grep, sed, tail และอื่น ๆ ช่วยให้คุณประหยัดเวลาได้มากเมื่อเปลี่ยน OS
ปู่ที่ถูกลืมของการเขียนสคริปต์ระบบที่ทันสมัย ฉันรู้ว่า Perl ได้รับความรักส่วนใหญ่ (พร้อมกับ Bash scripting, Python, Ruby และ [ใส่ภาษาสคริปต์ที่คุณชื่นชอบที่นี่]) และอย่าเข้าใจฉันผิดฉันรัก Perl ฉันใช้มันเกือบทุกวัน
แต่ไม่ควรลืมหลงถูกมองข้ามหรือเพิกเฉย สำหรับหลาย ๆ กรณี sed และ awk เป็นเครื่องมือที่ดีที่สุดสำหรับงาน ตัวอย่างด่วนคือการกรองบรรทัดคำสั่งด้วย sed และการประมวลผลบันทึกที่รวดเร็วและสกปรกด้วย awk ทั้งสองสามารถทำได้ใน Perl แต่จะต้องใช้เวลาในการทำงานและการพัฒนามากขึ้น
rsync โดยเฉพาะอย่างยิ่งในคอนเสิร์ตด้วย ssh ช่วยให้การคัดลอกไฟล์จากโฮสต์ไปยังโฮสต์ทำได้ง่าย เราไม่เคยรับมือโดยไม่ใช้ ssh และ rsync ได้อย่างไร? :-)
netcat
เครือข่ายมีดสวิสกองทัพอย่างที่พวกเขาพูด
สำหรับสคริปต์แบบอัตโนมัติแบบอัตโนมัติ ฯลฯ :
วิธีเชื่อมต่อกับเซิร์ฟเวอร์ * NIX ของคุณ:
ฉันใช้เครื่องมือส่วนใหญ่ที่ระบุไว้แล้ว แต่นี่ยังไม่มีใครแตะต้อง:
Puppet - ระบบสำหรับทำภารกิจการบริหารระบบอัตโนมัติ
คำตอบมาตรฐานส่วนใหญ่จะรวมอยู่ในคำตอบอื่น ๆ ดังนั้นฉันจะเลือกคำตอบที่ไม่ได้มาตรฐาน:
เครื่องมือที่มีประโยชน์สองสามอย่างที่ฉันยังไม่ได้กล่าวถึง:
expect
ClusterSSH ควบคุมจำนวน xterm windows ผ่านหน้าต่างคอนโซลกราฟิกเดียวเพื่อให้คำสั่งสามารถทำงานแบบโต้ตอบบนเซิร์ฟเวอร์หลายเครื่องผ่านการเชื่อมต่อ ssh
vmstat 1
ให้ภาพรวมที่ยอดเยี่ยมเกี่ยวกับพฤติกรรมของระบบ
pv: แสดงความคืบหน้าของการดำเนินงานที่ยาวนานซึ่งสามารถเปลี่ยนเส้นทางได้ http://www.ivarch.com/programs/pv.shtml
มีประโยชน์แล้วคุณต้องการตรวจสอบสิ่งที่จะต้องใช้เวลานานเช่นการคัดลอก / บีบอัดอุปกรณ์บล็อกดิบผ่านเครือข่าย (ซึ่งเป็นวิธีที่ฉันใช้การสำรองข้อมูลหวาดระแวงของเน็ตบุ๊ก 8Gb ของฉันก่อนที่จะทำการแก้ไขสิ่งที่สำคัญ ๆ
นอกจากนี้: ฉันจะให้คะแนนรองสำหรับ ssh, rsync, screen, htop และ netcat ตามที่ได้รับการกล่าวถึงโดยผู้คนข้างต้น - ทั้งหมดนี้มีความสำคัญมากกว่า pv แต่ pv ยังไม่ได้กล่าวถึง ในความเป็นจริง pv มักจะเป็นประโยชน์นอกจากนี้เมื่อมีการวางท่อไปยังหรือจากไปยัง netcat
pv
อาจเป็นเครื่องมือที่มีประโยชน์ แต่ระวังอย่าใช้มากเกินไป การส่งผ่านข้อมูลนั้นมีผลกระทบต่อประสิทธิภาพอย่างแน่นอน (ข้อมูลทั้งหมดต้องผ่านโปรแกรมอื่น ) ในงานสุดท้ายของฉันเราทำการบันทึกจำนวนมาก หนึ่งในคนตัดสินใจที่จะเริ่มวาง pv ในสคริปต์การประมวลผลบันทึกจนกระทั่งเราค้นพบว่ามันเพิ่มเวลาในการประมวลผลให้กับพวกเขาประมาณ 15% ตอนนี้ใช้สำหรับงานที่ใช้เวลาน้อยกว่าไม่กี่นาทีหรือมีข้อ จำกัด ของทรัพยากรที่มีอยู่ (เช่นการข้ามการเชื่อมต่อเครือข่ายที่ช้า)
pv
เพื่อเป็นดิสก์หรือ I / O เครือข่ายที่ถูกผูกไว้แทนที่จะเป็น CPU / หน่วยความจำที่ผูกไว้) ข้อโต้แย้งเดียวกันคือกุญแจสำคัญต่อการใช้cat
เกิน (บางครั้งฉันใช้ cat เมื่อไม่จำเป็นต้องทำสิ่งที่อ่านจากซ้ายไปขวา แต่การคัดลอกข้อมูลในหน่วยความจำพิเศษผ่านทางท่อและการสลับบริบทสามารถมี ผลกระทบต่อประสิทธิภาพที่วัดได้)
cat
ใช้งานที่มากเกินไปของฉันส่วนใหญ่มาจากการเริ่มต้นcat foo
ตามด้วยการกดปุ่มลูกศร "ขึ้น" แล้วเพิ่ม| [command]
ลงในบรรทัดก่อนหน้าของฉัน ฉันรู้ว่าฉันกำลังใช้งาน (เล็ก) ที่ได้รับผลกระทบโดยเก็บแมวไว้ในนั้น แต่การปล่อยให้มันต้องใช้ความพยายามน้อยกว่าการเขียน / พิมพ์คำสั่ง[command] < foo
ซ้ำ ไม่ต้องกังวลสำหรับ (ส่วนใหญ่) ad hoc command line ทำงาน แต่ไม่เหมาะสำหรับสคริปต์ (เช่นเดียวกับที่ฉันรู้สึกต่อpv
ฉันเดา)
ssh, กลุ่ม, htop, su, Python, ls, cd, หน้าจอ, du, tar :)
บางอย่างที่ไม่ได้รับการกล่าวถึงก่อนหน้านี้:
piping output ของ tar ไปยังยูทิลิตี้อื่น, tar ทำงานบนกล่องเดียวกัน, หรือ tar ทำงานผ่าน SSH คือยูนิกซ์โรงเรียนเก่าที่ฉันโปรดปรานสำหรับการย้ายไฟล์จากที่หนึ่งไปยังอีกที่หนึ่ง
สิ่งนี้ยังช่วยให้คุณมีตัวเลือกสไตล์ Windows ในการคัดลอกโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งและลงท้ายด้วยไฟล์ทั้งหมดในไดเรกทอรีต้นทางและปลายทาง
zsh เป็นเปลือก
จะมีประสิทธิภาพโดยเฉพาะอย่างยิ่งกับgrml.org ของส่วนขยาย
iotop เป็นโปรแกรมยอดนิยมในการตรวจสอบการเข้าถึง I / O ไปยังดิสก์ของคุณ
เครื่องมือเหล่านี้ส่วนใหญ่มีประสิทธิภาพมากขึ้นโดยใช้ Bash "ความสมบูรณ์ของโปรแกรม" - ดังนั้นคุณสามารถทำสิ่งต่างๆในแท็บให้สมบูรณ์เช่นตัวเลือกบรรทัดคำสั่งหรือพูดชื่อของแพ็คเกจด้วย "apt-get install" นอกจากนี้ยังจะ จำกัด สิ่งที่คุณแท็บกรอกสำหรับไฟล์ที่เกี่ยวข้องตัวอย่างเช่น "unzip" จะทำเฉพาะไฟล์เก็บถาวรที่รองรับเท่านั้น
มันคือ mutts จริงๆ - ถ้าคุณไม่เคยลองเลยคุณอาจแค่ต้องทำ. bashrc ของคุณ:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
แน่นอนว่านี่เป็นจริงบน Ubuntu และ Debian คุณอาจจำเป็นต้องได้รับแพ็กเกจในการกระจาย Linux บางอย่าง
สามารถหาคำตอบเพิ่มเติมได้ในคำถามที่คล้ายกันนี้
บางสิ่งที่ถูกมองข้ามฉันต้องการพูดถึง
โอ้และฉันลืมพูดถึงเมื่อสคริปต์ฉันเชื่อว่าคุณควรใช้ Korn ฉันเกลียด Korn (ไม่ใช่วงดนตรีฉันชอบวงดนตรี :-P) แต่มันมีอยู่ทุกที่ คุณสามารถใช้สคริปต์และย้ายไปมาระหว่าง Solaris, AIX และ Linux และไม่ต้องกังวลว่าผู้ดูแลระบบจะติดตั้ง Bash หรือไม่
เครื่องมือหนึ่งในบางครั้งมีประโยชน์มากคือ nohup ฉันใช้เพื่อเรียกใช้สคริปต์ที่ใช้เวลานานโดยใช้ไคลเอนต์ SSH ระยะไกล
man - อ่านหน้า man
elinks - เพื่อตรวจสอบ google เพราะฉันแน่ใจว่านรกจำไม่ได้ทุกอย่าง
และใส่ใจในรายละเอียดและความดื้อรั้นเพราะไม่มีพวกเขาฉันแค่เสียเวลา
หน้าจอเป็นสิ่งจำเป็นโดยเฉพาะอย่างยิ่งกับไฟล์. screenrc ที่ดี ฉันได้กำหนดค่าให้แสดงภาพหน้าต่างที่ฉันเข้าและสามารถย้ายระหว่างหน้าต่างเหล่านั้นด้วย Ctrl + Arrow สำหรับเซสชัน ssh เดี่ยวและหลายเชลล์มันเป็นตัวช่วยชีวิต
ฉันรัก AWK และ "for" ในบรรทัดคำสั่ง
โดยเฉพาะอย่างยิ่งการสร้างรายการคำสั่งที่ฉันต้องการเรียกใช้แล้วเรียกใช้งานทั้งหมดในครั้งเดียว