Unix & Linux

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

2
คอนเทนเนอร์ Linux และไฮเปอร์ไวเซอร์ Linux คืออะไร
ฉันดูไซต์ stackexchange แต่ไม่พบอะไรเลย ฉันดูรายการ wikipedia บน Linux container https://en.wikipedia.org/wiki/LXCและ hypervisor https://en.wikipedia.org/wiki/Hypervisorแต่คำอธิบายของทั้งคู่นั้นเกินกว่าบุคคลที่ ไม่ได้ทำงานอย่างใดอย่างหนึ่งจะเข้าใจ ฉันเห็นhttp://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begunแต่นั่นก็ไม่ได้อธิบาย ฉันได้เล่นกับ VM เช่น virtualbox หนึ่งในแนวคิดเริ่มต้นสำหรับความเข้าใจที่ จำกัด ของฉันอาจเป็นเพราะ Virtual Machines อาจจะทดสอบซอฟต์แวร์ในสภาพแวดล้อม sandbox (มีกล่อง Solaris เมื่อคุณไม่สามารถซื้อ / ซื้อได้ที่จะมีเครื่องและยังมีความคิดว่าซอฟต์แวร์ที่คุณพัฒนาอยู่ สำหรับฮาร์ดแวร์เป้าหมายนั้นใช้งานได้) ในขณะที่มีข้อ จำกัด ก็ใช้ นี่อาจเป็นหนึ่งในวิธีที่ทำให้การประมวลผลแบบคลาวด์กระโดดได้เช่นกัน คำถามกว้างดังนั้นนี่คือวิธีที่ฉันกลั่นมัน - บางคนสามารถอธิบายได้ว่าไฮเปอร์ไวเซอร์และคอนเทนเนอร์ * nix คืออะไร (มีความคล้ายคลึงถ้าเป็นไปได้) * nix hypervisor เหมือนกับเครื่องเสมือนหรือมีความแตกต่างหรือไม่?

2
ใน VIM ให้แทนที่พา ธ ด้วยสแลชโดยไม่ใช้ Escape slashes
ในกลุ่มฉันต้องการแทนที่เส้นทางที่ยาว/a/b/f/g/d/gกับอีกอัน/s/g/w/d/g/rในไฟล์ข้อความ ปกติฉันจะใช้\/แต่มีเครื่องหมายทับมากเกินไปที่นี่ มีวิธีที่ง่ายกว่านี้ไหม?

5
Postfix จะไม่บันทึกลงใน / var / log / mail อีกต่อไปหลังจากถูกลบและสร้างขึ้นใหม่หรือไม่
ฉันลบ/var/log/mailไฟล์โดยไม่ตั้งใจ จนถึงจุดที่ฉันสามารถตรวจสอบได้โดยใช้สิ่ง postfix ตอนนี้ดูเหมือนว่า Postfix จะไม่ส่งบันทึกไปที่/var/log/mailเนื่องจากไฟล์ไม่ได้รับการปรับปรุงด้วยข้อความบันทึกใหม่
10 files  logs  postfix 

1
เจนกินส์ไม่ได้ใช้ตำแหน่งที่ตั้งของระบบ
ฉันมีพฤติกรรมที่น่าสนใจในเจนกินส์ เชลล์ของ Jenkins ไม่ได้ใช้ระบบตำแหน่งที่ตั้งของฉัน เจนกินส์ทำงานเป็นผู้ใช้jenkinsในระบบของฉัน เข้าสู่ระบบjenkinsผ่านทาง SSH: locale แสดง: LANG = en_US.UTF-8 LANGUAGE = th_: en LC_CTYPE = "en_US.UTF-8" ฯลฯ ... envการแสดงLANGและLANGUAGEตัวแปร: LANG = en_US.UTF-8 LANGUAGE = en_US: en id แสดง ID ของผู้ใช้: uid = 1008 (jenkins) gid = ... ป้อนคำสั่งด้านบนลงในเชลล์งาน jenkins: locale แสดง: LANG = LANGUAGE = LC_CTYPE = …

3
ทำไมคำสั่ง post-up ใน / etc / network / interfaces วิ่งหลายครั้งในการบู๊ต?
นี่คือเนื้อหาของ/etc/network/interfaces: auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp post-up /etc/network/if-up.d/sshstart และsshstartเป็นสคริปต์ที่มีดังต่อไปนี้: curl something something darkside send a file over ftps in the background & /usr/bin/autossh -M 0 -f -N -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -R 127.0.0.1:2005:127.0.0.1:22 -R 192.168.1.10:2006:192.168.2.110:1912 -L 127.0.0.1:5249:192.168.1.212:5249 username@17.16.15.2 -p 8080 เมื่อรีบูตเครื่องcurlคำสั่งจะถูกดำเนินการหลายครั้งไฟล์จะจบลงที่ 2 หรือ …

1
ปิดใช้งานเอฟเฟกต์การซ้อนทับสลับพื้นที่ทำงาน
ฉันทำการทดสอบ Debian ด้วย Gnome 3.12 หลังจากติดตั้งส่วนขยาย "กริดพื้นที่ทำงาน" แล้วภาพเคลื่อนไหวสวิตช์เวิร์กสเปซก็ยิ่งน่ารำคาญมากขึ้น ฉันกำลังพูดถึงสิ่งที่อยู่ตรงกลางของหน้าจอที่ปรากฏขึ้นเมื่อคุณใช้ทางลัด Ctrl + Alt + Arrow มันกลายเป็นบั๊กไปจนถึงระดับที่ให้ข้อมูลที่เป็นศูนย์ยิ่งกว่านั้นการซ้อนทับใช้เวลาพอสมควรที่จะหายไปและฉันไม่สามารถเห็นสิ่งที่อยู่ข้างใต้ ในตอนเย็นหรือตอนกลางคืนภาพเคลื่อนไหวจะทำให้ฉันเจ็บ (แฟลชเร็วระหว่างการซ้อนทับสีเข้มและเบราว์เซอร์แสง / IDE) ฉันจะปิดการใช้งานได้อย่างไร ฉันยินดีที่จะพัฒนาส่วนขยายสำหรับ Gnome Shell หากไม่มีตัวเลือกที่ใช้งานง่าย (และสามารถทำการปิดใช้งานโดยการใช้ส่วนขยาย) หมายเหตุ: ฉันยังต้องการภาพเคลื่อนไหวอื่น ๆ ทั้งหมดรวมถึงเอฟเฟกต์เลื่อนของการสลับพื้นที่ทำงาน

2
พิมพ์ pids และชื่อของกระบวนการที่สร้างขึ้น
จากคำถามที่นี่ OP ต้องการโพลซ้ำ pid ของกระบวนการที่ใช้pidofในเชลล์สคริปต์ แน่นอนว่านี่ไม่มีประสิทธิภาพเนื่องจากกระบวนการใหม่จะต้องเริ่มต้นสำหรับpidofโปรแกรมหลายครั้งต่อวินาที (ฉันไม่รู้ว่านี่เป็นสาเหตุของ CPU spikes ในคำถาม แต่ดูเหมือนว่าจะเป็นไปได้) โดยปกติแล้วสิ่งรอบตัวในเชลล์สคริปต์คือการทำงานกับโปรแกรมเดี่ยวที่ส่งออกข้อมูลที่คุณต้องการstdoutแล้วทำการประมวลผลข้อความบางอย่างหากจำเป็น ในขณะที่สิ่งนี้เกี่ยวข้องกับโปรแกรมเพิ่มเติมที่จะทำงานพร้อมกัน แต่ก็มีแนวโน้มที่จะมี CPU น้อยลงเนื่องจากกระบวนการใหม่ไม่ได้ถูกสร้างขึ้นอย่างต่อเนื่องเพื่อจุดประสงค์ในการทำโพล ดังนั้นสำหรับคำถามข้างต้นโซลูชันหนึ่งอาจมีโปรแกรมบางตัวที่แสดงชื่อและ pids ของกระบวนการเมื่อสร้างขึ้น จากนั้นคุณสามารถทำสิ่งที่ชอบ: pids-names | grep some_program | cut -f 2 | while read pid; do process-pid "$pid" done ปัญหานี้คือว่ามันก่อให้เกิดคำถามพื้นฐานมากขึ้นวิธีการพิมพ์ชื่อและกระบวนการสามารถพิมพ์ในขณะที่พวกเขาถูกสร้างขึ้น? ฉันพบโปรแกรมที่เรียกว่าps-watcherแม้ว่าปัญหาของมันคือมันเป็นเพียงperlสคริปต์ที่ทำงานซ้ำ ๆpsดังนั้นมันจึงไม่สามารถแก้ปัญหาได้ อีกตัวเลือกหนึ่งคือการใช้งานซึ่งอาจจะทำงานหากเข้าสู่ระบบการประมวลผลโดยตรงผ่านทางauditd tail -fทางออกที่ดีที่สุดจะง่ายกว่าและพกพาได้มากกว่านี้ถึงแม้ว่าฉันจะยอมรับauditdโซลูชันถ้าเป็นตัวเลือกที่ดีที่สุด

2
ผนวกกับตัวแปรที่เหมือนกับ PATH โดยไม่สร้างโคลอนนำถ้าไม่ได้ตั้ง
PKG_CONFIG_PATHฉันจำเป็นต้องผนวกไดเรกทอรีที่ โดยปกติฉันจะใช้มาตรฐาน export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$(pyenv prefix)/lib/pkgconfig แต่PKG_CONFIG_PATHก่อนหน้านี้ไม่ได้ตั้งค่าไว้ในระบบของฉัน ดังนั้นตัวแปรจึงเริ่มต้นด้วย:ตัวอักษรซึ่งบอกให้ค้นหาในไดเรกทอรีปัจจุบันก่อน ฉันไม่ต้องการสิ่งนั้น. ฉันตัดสินต่อไปนี้ export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}$(pyenv prefix)/lib/pkgconfig แต่ดูเหมือนว่าน่าเกลียดมาก มีวิธีที่ดีกว่า? อะไรคือวิธีที่เหมาะสมในการต่อท้ายโคลอนแบบมีเงื่อนไขถ้าหากว่าตัวแปรถูกตั้งค่าแล้ว?

3
ด้วย systemd-networkd ให้ดำเนินการตามการเปลี่ยนแปลงการกำหนดค่าเครือข่าย
ฉันเปลี่ยนจาก Debian's ifupdownไปsystemd-networkdเป็นและมันก็ใช้ได้ดี สิ่งที่ขาดหายไปอย่างหนึ่งก็คือทุกครั้งที่มีการเปลี่ยนแปลงเครือข่ายฉันต้องการโทรหาkillall -ARLM tincเพื่อที่ VPN ของฉันจะทำงานได้ทันเวลา ไม่systemdหรือsystemd-networkdให้การทำงานดังกล่าวหรือไม่ ฉันจะใช้มันอย่างไร

1
เหตุใดแอพพื้นที่ผู้ใช้จึงต้องใช้ส่วนหัวเคอร์เนล
ฉันกำลังสร้างกล่องไม่ว่างและ iptables สำหรับอุปกรณ์ฝังตัวและหนึ่งในการอ้างอิงสำหรับพวกเขาคือส่วนหัวเคอร์เนล ฉันค้นหาทั้งระบบไฟล์ * .ko และไม่พบใครเลย ดังนั้นฉันจึงสรุปว่าแอปไม่ได้สร้างไดรเวอร์ที่สามารถโหลดได้ (โมดูลเคอร์เนล) กรณีอื่น ๆ สำหรับแอปพลิเคชันพื้นที่ผู้ใช้ในการกำหนดให้ส่วนหัวของเคอร์เนลมีอะไรบ้าง

6
วิธีแยกคู่ค่าคีย์จากคำสั่ง ps
ฉันพยายามดึงชื่อแอปพลิเคชันจากpsคำสั่งเช่นนี้: ps -af -u sas |grep "java"| grep -v "grep" และจะสร้างสิ่งต่อไปนี้: sas 24431 1 0 Oct10 ? 00:51:08 /usr/lib/jvm/java-1.7.0-oracle-1.7.0.25.x86_64/jre/bin/java -Denv=DEV -Dapp.name=myApp -Xms512m -Xmx1g -Dlog.dir=/apps/java/logs ฉันพยายามใช้egrepแต่ดูเหมือนจะไม่ทำงาน: ps -af -u sas|grep "java"| grep -v "grep"| egrep -o "-Dapp.name" ฉันจะได้รับเฉพาะ-Dapp.nameค่า "myApp" ได้อย่างไร

4
นิพจน์ทั่วไปที่ใช้ \\ vs using \
ทำไม grep e\\.g\\. <<< "this is an e.g. wow" และ grep e\.g\. <<< "this is an e.g. wow" ทำสิ่งเดียวกัน ถ้าฉันเพิ่มเครื่องหมายสแลชที่สามมันก็มีผลลัพธ์เหมือนกัน แต่เมื่อฉันเพิ่มเครื่องหมายสแลชที่สี่มันไม่ทำงานอีกต่อไป สิ่งนี้เกี่ยวข้องกับคำถามจากการสอบแบบเก่าสำหรับชั้นเรียน มันถามว่าคนที่มีแบ็กสแลชสองตัวอันหนึ่งจะทำงานเพื่อเอาท์พุทบรรทัดด้วย "เช่น" ฉันคิดว่ามันไม่ทำงาน แต่ฉันพยายามทำให้แน่ใจและมันก็ทำเช่นนั้น คำอธิบายคืออะไร

4
แทนที่สตริงที่มีอักขระขึ้นบรรทัดใหม่
ด้วยbashเปลือกในไฟล์ที่มีแถวเหมือนคนดังต่อไปนี้ first "line" <second>line and so on ฉันต้องการแทนที่ด้วยหนึ่งครั้งหรือมากกว่านั้น"line"\n<second>ด้วยother charactersและรับในแต่ละครั้ง: first other characters line and so on ดังนั้นผมจึงต้องเปลี่ยนสตริงทั้งที่มีตัวอักษรพิเศษเช่น"และ<และด้วยตัวอักษรขึ้นบรรทัดใหม่ หลังจากค้นหาคำตอบอื่น ๆ ฉันพบว่าsedสามารถยอมรับการขึ้นบรรทัดใหม่ทางด้านขวาของคำสั่ง (เช่นนั้นother charactersสตริง) แต่ไม่ใช่ทางด้านซ้าย มีวิธี (ง่ายกว่านี้ ) ในการรับผลลัพธ์นี้ด้วยsedหรือgrepไม่?

9
จะสร้าง / var / lib / dpkg / status ใหม่ได้อย่างไร?
ฉันได้ลบไฟล์บางไฟล์ไป/var/lib/dpkg/แล้วนั่นคือ: /var/lib/dpkg/status /var/lib/dpkg/available /var/lib/dpkg/info/* ฉันเข้าใจว่า Debian ใช้ไฟล์เหล่านี้เพื่อเก็บข้อมูลบางอย่างเกี่ยวกับแพ็คเกจที่ติดตั้ง ตอนนี้เมื่อฉันทำapt-get updateฉันได้รับข้อผิดพลาดดังต่อไปนี้: Reading package lists... Error! E: Could not open file /var/lib/dpkg/status - open (2: No such file or directory) E: The package lists or status file could not be parsed or opened. ตามที่ฉันเข้าใจFHSไฟล์ที่อยู่ใน/varนั้นไม่ควรมีความสำคัญกับระบบ ให้คะแนนสิ่งเหล่านี้ควรเป็นไฟล์ชั่วคราวบันทึกแคชและสิ่งที่คล้ายกัน มีวิธีการสร้างไฟล์ที่ถูกลบอีกครั้งหรือไม่?

1
history - แสดงรายการคำสั่งที่รันเรียบร้อยแล้วเท่านั้น
ฉันสงสัยว่ามีวิธีใช้คำสั่งhistory หรือไม่แต่แสดงรายการคำสั่งที่รันได้สำเร็จเท่านั้น ในทำนองเดียวกันจะมีวิธีแสดงรายการข้อผิดพลาดที่เกิดขึ้นหรือไม่? ฉันรู้ว่าแต่ละคำสั่งมีสถานะการออกเป็น: 0- การดำเนินการคำสั่งสำเร็จ 1- คำสั่งล้มเหลวเนื่องจากข้อผิดพลาดระหว่างการขยายหรือเปลี่ยนเส้นทางสถานะการออกมากกว่าศูนย์ 2- การใช้คำสั่งไม่ถูกต้อง 12- พบคำสั่ง แต่ไม่สามารถใช้งานได้ 127- ไม่พบคำสั่ง และสามารถตรวจสอบการดำเนินการคำสั่งด้วยecho $? จาก: http://www.linuxnix.com/2011/03/find-exit-status-script-command-linux.html ตัวอย่าง: หลังจากรันคำสั่ง 4 เหล่านี้: ls help lss ls nonexistentfile ฉันพยายามทดสอบเพื่อพิมพ์คำสั่งที่ประสบความสำเร็จเท่านั้น (สถานะออกจาก 0) ซึ่งควรเป็น 'ls' และ 'ช่วย' เท่านั้น: for j in `history | tail -5 | head -4 | cut -d ' …

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