Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

2
ความแตกต่างระหว่างตัวเลือกการเมานท์ 'sync' และ 'async'
ความแตกต่างระหว่างsyncและasyncตัวเลือกการเมาท์จากมุมมองของผู้ใช้ปลายทางคืออะไร? ระบบไฟล์ถูกเมาท์ด้วยหนึ่งในตัวเลือกเหล่านี้จะทำงานได้เร็วกว่าถ้าติดตั้งกับอีกอันหรือไม่? ตัวเลือกใดเป็นค่าเริ่มต้นหากไม่มีการตั้งค่าไว้ man mountบอกว่าsyncตัวเลือกนั้นอาจลดอายุการใช้งานของหน่วยความจำแฟลช แต่อาจใช้ภูมิปัญญาดั้งเดิมที่ล้าสมัย อย่างไรก็ตามเรื่องนี้เกี่ยวข้องกับฉันเล็กน้อยเพราะฮาร์ดไดรฟ์หลักของฉันซึ่งมีพาร์ทิชัน/และ/homeวางอยู่เป็นไดรฟ์ SSD ติดตั้งอูบุนตู (14.04) ไม่ได้ระบุsyncว่ามิได้asyncเลือกสำหรับ/พาร์ทิชัน แต่มีการตั้งค่าasyncสำหรับการด้วยตัวเลือก/home defaultsนี่คือของ/etc/fstabฉันฉันเพิ่มบางบรรทัดเพิ่มเติม (ดูความคิดเห็น) แต่ไม่เปลี่ยนแปลงอะไรในบรรทัดที่ติดตั้งโดย: # / was on /dev/sda2 during installation UUID=7e4f7654-3143-4fe7-8ced-445b0dc5b742 / ext4 errors=remount-ro 0 1 # /home was on /dev/sda3 during installation UUID=d29541fc-adfa-4637-936e-b5b9dbb0ba67 /home ext4 defaults 0 2 # swap was on /dev/sda4 during installation UUID=f9b53b49-94bc-4d8c-918d-809c9cefe79f none …
42 filesystems  mount  fstab  ssd 

3
จะมั่นใจได้อย่างไรว่าพอร์ต SSH เปิดเฉพาะที่อยู่ IP ที่ระบุเท่านั้น
นี่คือของฉัน/etc/sysconfig/iptables: มันมีสองพอร์ตเปิด 80 apache และ 22 สำหรับ ssh # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i …
42 ssh  security  iptables 


2
ดีบักหน่วยความจำไม่เพียงพอด้วย / var / log / messages
รายงานต่อไปนี้จะถูกโยนลงในบันทึกข้อความของฉัน: kernel: Out of memory: Kill process 9163 (mysqld) score 511 or sacrifice child kernel: Killed process 9163, UID 27, (mysqld) total-vm:2457368kB, anon-rss:816780kB, file-rss:4kB ไม่สำคัญว่าถ้าปัญหานี้คือสำหรับhttpd, mysqldหรือpostfixแต่ผมอยากรู้ว่าฉันสามารถดำเนินการต่อการแก้จุดบกพร่องปัญหา ฉันจะรับข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุที่ทำให้ PID 9163 ถูกฆ่าได้อย่างไรและฉันไม่แน่ใจว่า linux เก็บประวัติของ PID ที่ถูกยกเลิกที่ไหนสักแห่งหรือไม่ หากสิ่งนี้เกิดขึ้นในไฟล์บันทึกข้อความของคุณคุณจะแก้ไขปัญหานี้ทีละขั้นตอนได้อย่างไร # free -m total used free shared buffers cached Mem: 1655 934 721 0 10 …

8
ประวัติที่อยู่ IP ที่เข้าถึงเซิร์ฟเวอร์ผ่าน ssh
ฉันพบว่าเซิร์ฟเวอร์ของฉันถูกแฮ็กและติดเชื้อบ็อตเน็ตจีนที่รู้จัก มันเป็นเครื่องต้นแบบ / การทดสอบเครื่องเสมือนที่มี IP แบบคงที่ของตัวเอง (ที่อยู่ในสหรัฐฯ) ดังนั้นจึงไม่มีอันตรายใด ๆ เกิดขึ้น ตอนนี้ฉันอยากรู้ว่า IP / s ใดที่ใช้ในการบุกรุกเพื่อทราบว่าการโจมตีเกิดจากประเทศจีนหรือไม่ มีวิธีดูประวัติของการเชื่อมต่อที่ได้รับบน ssh บนเซิร์ฟเวอร์หรือไม่? แก้ไข: ระบบคือ Linux Debian 7
42 networking  ssh  logs  ip  forensics 

4
grep: หน่วยความจำหมด
ฉันกำลังค้นหาง่าย ๆ : grep -R Milledgeville ~/Documents และหลังจากระยะเวลาหนึ่งข้อผิดพลาดนี้ปรากฏขึ้น: grep: memory exhausted ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร ฉันมี RAM 10GB ในระบบของฉันและมีแอปพลิเคชั่นบางตัวที่ทำงานอยู่ดังนั้นฉันจึงประหลาดใจจริงๆที่ grep ธรรมดาหมดหน่วยความจำ ~/Documentsประมาณ 100GB และมีไฟล์ทุกชนิด grep -RI อาจไม่มีปัญหานี้ แต่ฉันต้องการค้นหาในไฟล์ไบนารีเช่นกัน

4
ฉันจะค้นหารายการรหัสเทอร์มินัลคีย์เพื่อทำการแมปทางลัดใน bash ได้ที่ไหน
ตัวอย่างเช่น: "\e[1;5C" "\e[Z" "\e-1\C-i" ฉันรู้เพียงเศษ ๆ ชิ้น ๆ เช่น\eย่อมาจาก Escape และC-for Ctrlแต่ตัวเลขเหล่านี้ ( 1) และตัวอักษร ( Z) คืออะไร อะไรคือ;, [และ-ป้ายบอก? มีเพียงการทดลองและข้อผิดพลาดหรือมีรายการรหัสทุบตีที่สมบูรณ์และคำอธิบายของไวยากรณ์หรือไม่

6
ย้ายไฟล์ทั้งหมดด้วยส่วนขยายที่แน่นอนจากหลายไดเรกทอรีย่อยลงในไดเรกทอรีเดียว
ฉันมีไฟล์. zip หลายไฟล์ในหลายไดเรกทอรี: Fol1/Fol2 Fol3 Fol4/Fol5 ฉันจะย้ายพวกเขาทั้งหมดไปยังโฟลเดอร์ฐานทั่วไปได้อย่างไร

3
เปลี่ยนเส้นทาง stderr ของคำสั่งต่อมาทั้งหมดโดยใช้ exec
ฉันมีไฟล์ทุบตีที่ฉันต้องการเปลี่ยนเส้นทางเอาต์พุตทั้งหมดไปยังไฟล์เดียวบันทึกการดีบักเช่นเดียวกับเทอร์มินัล ฉันต้องการเปลี่ยนเส้นทางทั้ง stdout และ stderr ไปยัง debug และบันทึกไว้สำหรับคำสั่งทั้งหมดในสคริปต์ ฉันไม่ต้องการเพิ่ม2>&1 | tee -a $DEBUGคำสั่งทุกคำสั่งในไฟล์ | tee -a $DEBUGฉันจะอยู่กับ exec 2>&1ผมยังจำได้ไม่มีทางที่จะทำกับสิ่งที่ต้องการ ขณะนี้ฉันกำลังใช้สิ่งต่อไปนี้: #!/bin/bash DEBUGLOG=/tmp/debug exec 2>&1 somecommand | tee -a $DEBUGLOG somecommand2 | tee -a $DEBUGLOG somecommand3 | tee -a $DEBUGLOG แต่มันไม่ทำงาน ใครบ้างมีวิธีแก้ไข / สามารถอธิบายสาเหตุได้

1
มีคำสั่งมาตรฐานที่มักจะออกมาพร้อมกับความล้มเหลวหรือไม่?
ฉันต้องการทดสอบสคริปต์ด้วยคำสั่งที่ล้มเหลว ฉันสามารถใช้คำสั่งที่มีอยู่ด้วยข้อโต้แย้งที่ไม่ดี ฉันยังสามารถเขียนสคริปต์ง่าย ๆ ที่ออกโดยทันทีด้วยความล้มเหลว ทั้งสองอย่างนี้ทำได้ง่ายและทำงานให้ฉัน แต่ถ้ามีคำสั่งมาตรฐานสำหรับวัตถุประสงค์นี้ฉันต้องการใช้สิ่งนั้นแทน

6
Universal Node.js shebang?
Node.jsเป็นที่นิยมมากในทุกวันนี้และฉันได้เขียนสคริปต์ลงไป น่าเสียดายที่ความเข้ากันได้เป็นปัญหา อย่างเป็นทางการล่าม Node.js ควรจะเรียกว่าnodeแต่ Debian และ Ubuntu จัดส่งปฏิบัติการที่เรียกว่าnodejsแทน ฉันต้องการสคริปต์แบบพกพาที่ Node.js สามารถทำงานกับในสถานการณ์ให้ได้มากที่สุด สมมติว่าชื่อไฟล์คือfoo.jsฉันต้องการให้สคริปต์ทำงานในสองวิธี: ./foo.jsเรียกใช้สคริปต์ถ้าอย่างใดอย่างหนึ่งnodeหรืออยู่ในnodejs$PATH node foo.jsยังเรียกใช้สคริปต์ (สมมติว่าล่ามเรียกว่าnode) หมายเหตุ:คำตอบโดย xavierm02 และตัวฉันเป็นสองรูปแบบของสคริปต์หลายภาษา ฉันยังคงสนใจวิธีการแก้ปัญหาแบบ shebang อย่างแท้จริงหากมีอยู่จริง

5
ฉันจะ จำกัด แบนด์วิดท์ที่ใช้โดยกระบวนการได้อย่างไร
ฉันมีเซิร์ฟเวอร์ CentOS 5.7 ที่จะทำการสำรองไฟล์ทุกคืน ฉันกังวลว่าผู้เยี่ยมชมไซต์ต่างๆที่โฮสต์เซิร์ฟเวอร์จะได้รับประสิทธิภาพลดลงในขณะที่การสำรองข้อมูลกำลังถ่ายโอนข้ามเครือข่าย เป็นไปได้หรือไม่ที่จะ จำกัด ปริมาณการรับส่งข้อมูลสูงสุดที่กระบวนการอนุญาตให้เชื่อมต่อกับเครือข่าย ฉันต้องการ จำกัด การถ่ายโอนไฟล์ที่ใช้ SSH เพียงครึ่งหนึ่งของแบนด์วิดท์ที่มีอยู่ของฉัน นี่อาจเป็นทางเซิร์ฟเวอร์หรือฝั่งไคลเอ็นต์ นั่นคือฉันยินดีที่จะทำเช่นนี้กับลูกค้าที่เริ่มต้นการเชื่อมต่อหรือเซิร์ฟเวอร์ที่ได้รับการเชื่อมต่อ (น่าเสียดายที่ฉันไม่สามารถเพิ่มอินเทอร์เฟซเพื่ออุทิศให้กับการสำรองข้อมูลฉันสามารถเพิ่มปริมาณงานที่มีได้ แต่นั่นก็หมายความว่าการถ่ายโอนเครือข่ายจะเสร็จเร็วขึ้น แต่ยังคงความจุสูงสุดของการเชื่อมต่อทั้งหมด พื้นหลังบางส่วน บางทีพื้นหลังบางอย่างอยู่ในลำดับ เมื่อย้อนกลับไปฉันมีปัญหากับการมีพื้นที่ในตัวเครื่องไม่เพียงพอในการสร้างข้อมูลสำรอง ใส่ SSHFS! การสำรองข้อมูลจะถูกบันทึกไว้ในสิ่งที่เป็นไดรฟ์ภายในอย่างเห็นได้ชัดเพื่อให้ไม่มีบิตการสำรองข้อมูลอยู่บนเว็บเซิร์ฟเวอร์ เหตุใดจึงสำคัญ เพราะดูเหมือนว่าจะทำให้การใช้งานของผู้นับถือrsync --bwlimitนั้นเป็นโมฆะ rsyncไม่ได้ทำการโอนย้ายหรือทำได้เพราะฉันไม่สามารถสำรองพื้นที่ในการบันทึกไฟล์สำรองได้ ฉันได้ยินคุณถามว่า: "เดี๋ยวก่อนทำไมคุณถึงต้องสร้างไฟล์สำรองข้อมูลด้วยทำไมไม่เพียงแค่rsyncไฟล์และโฟลเดอร์ต้นทาง" เพราะสิ่งที่น่ารำคาญที่เรียกว่า "Plesk" อยู่ในส่วนผสม! นี่คือเว็บโฮสต์ที่ไคลเอ็นต์ของฉันซึ่งใช้ Plesk เพื่อความสะดวก ด้วยเหตุนี้ฉันจึงใช้ Plesk เพื่อเริ่มการสำรองข้อมูลเพราะ Plesk เพิ่มความมหัศจรรย์พิเศษทุกประเภทให้กับการสำรองข้อมูลที่ใช้งานได้ในระหว่างขั้นตอนการกู้คืนที่ปลอดภัยมาก หน้าเศร้า

3
วิธีรวบรวมอาร์เรย์ของเส้นอย่างถูกต้องใน zsh
ฉันคิดว่าต่อไปนี้จะจัดกลุ่มผลลัพธ์ของmy_commandอาร์เรย์หลายบรรทัด: IFS='\n' array_of_lines=$(my_command); ดังนั้น$array_of_lines[1]จะหมายถึงบรรทัดแรกในผลลัพธ์ของmy_command, $array_of_lines[2]ถึงวินาทีและอื่น ๆ อย่างไรก็ตามคำสั่งด้านบนนั้นใช้งานไม่ได้ ดูเหมือนว่าจะแยกเอาท์พุทของmy_commandตัวละครรอบตัวnออกไปตามที่ฉันได้ตรวจสอบด้วยprint -l $array_of_linesซึ่งฉันเชื่อว่ามันจะพิมพ์องค์ประกอบของอาเรย์ทีละบรรทัด ฉันได้ตรวจสอบสิ่งนี้ด้วย: echo $array_of_lines[1] echo $array_of_lines[2] ... ในความพยายามครั้งที่สองฉันคิดว่าการเพิ่มevalจะช่วยได้: IFS='\n' array_of_lines=$(eval my_command); แต่ฉันได้ผลลัพธ์เหมือนกันทุกประการ ในที่สุดต่อไปนี้คำตอบเกี่ยวกับองค์ประกอบของรายการที่มีช่องว่างใน zshฉันยังได้ลองใช้การตั้งค่าสถานะการขยายพารามิเตอร์แทนที่จะIFSบอก zsh วิธีการแยกอินพุตและรวบรวมองค์ประกอบเป็นอาร์เรย์เช่น: array_of_lines=("${(@f)$(my_command)}"); แต่ฉันยังคงได้รับผลลัพธ์เดียวกัน (แยกเกิดขึ้นn) ด้วยสิ่งนี้ฉันมีคำถามต่อไปนี้: ไตรมาสที่ 1 อะไรคือ"วิธีการที่เหมาะสม"ในการรวบรวมเอาต์พุตของคำสั่งในอาร์เรย์ของบรรทัด? ไตรมาสที่ 2 ฉันIFSจะระบุให้แยกบรรทัดใหม่ได้อย่างไร ไตรมาสที่ 3 หากฉันใช้การตั้งค่าสถานะการขยายพารามิเตอร์เช่นเดียวกับในความพยายามครั้งที่สามของฉันข้างต้น (เช่นการใช้@f) เพื่อระบุการแยก zsh จะละเว้นค่าเป็นIFSหรือไม่? ทำไมมันไม่ทำงานด้านบน
42 shell-script  zsh 

5
ตัวแปรเชลล์มีขอบเขตอะไรบ้าง?
ฉันพบปัญหาที่แสดงให้ฉันเห็นว่าฉันไม่ชัดเจนเกี่ยวกับขอบเขตของตัวแปรเชลล์ ฉันพยายามใช้bundle installซึ่งเป็นคำสั่ง Ruby ที่ใช้ค่าของ$GEM_HOMEการทำงาน ผมได้ตั้ง$GEM_HOMEแต่คำสั่งละเว้นค่าที่จนกว่าฉันจะใช้ในขณะที่exportexport GEM_HOME=/some/path ฉันอ่านว่าสิ่งนี้ทำให้ตัวแปร "โลก" อย่างใดอย่างหนึ่ง (หรือที่เรียกว่าตัวแปรสภาพแวดล้อม ) แต่ฉันไม่เข้าใจสิ่งที่หมายถึง ฉันรู้เกี่ยวกับ globals ในการเขียนโปรแกรม แต่ไม่ใช่ในโปรแกรมที่แตกต่าง นอกจากนี้เนื่องจากการตั้งค่าของฉันตัวแปรดังกล่าวใช้เฉพาะกับเซสชันเชลล์ปัจจุบันฉันจะตั้งค่าให้พวกเขาสำหรับพูดกระบวนการ daemonized อย่างไร ตัวแปรเชลล์มีขอบเขตอะไรบ้าง?

5
เยื้องหลายบรรทัดด้วย VIM?
ตัวอย่างเช่นฉันแก้ไขรหัสนี้: <html> <body> <script> var a = 10; a += 100; </script> </body> </html> ตอนนี้ฉันต้องเยื้องบรรทัดสคริปต์: <html> <body> <script> var a = 10; a += 100; </script> </body> </html> ฉันจะทำสิ่งนี้โดยไม่เลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของแต่ละบรรทัดแล้วกด Tab ได้อย่างไร
42 vim  vi 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.