Unix & Linux

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

2
วิธีการนับความยาวของอาร์เรย์ที่กำหนดไว้ในทุบตี?
ฉันใหม่เพื่อทุบตีและไม่สามารถหาบทช่วยสอนที่ดีเพื่อตอบคำถามของฉัน array=( item1 item2 item3) for name in ${array[@]}; do echo current/total ... some other codes done ฉันต้องการคำนวณค่า "ปัจจุบัน" และ "รวม" ตามที่คาดหวังเอาท์พุทของสิ่งนี้: 1/3 2/3 3/3 ขอบคุณสำหรับเคล็ดลับใด ๆ
57 bash  array 

9
วิธี grep สำหรับสายเดียวกัน แต่หลายไฟล์ในเวลาเดียวกันได้อย่างไร
ฉันมีชุดไฟล์บันทึกที่ฉันต้องการตรวจสอบและฉันต้องการค้นหาสตริงที่ระบุในไฟล์เดียวกันพร้อมกันเป็นไปได้หรือไม่ ขณะนี้ฉันกำลังใช้ grep -E 'fatal|error|critical|failure|warning|' /path_to_file ฉันจะใช้สิ่งนี้และค้นหาสตริงของไฟล์หลายไฟล์พร้อมกันได้อย่างไร หากนี่เป็นสิ่งที่จำเป็นต้องมีสคริปต์ผู้อื่นสามารถให้สคริปต์ง่ายๆเพื่อทำสิ่งนี้ได้หรือไม่
57 scripting  grep 

5
บันทึก sshd ของฉันอยู่ที่ไหน
ฉันหาบันทึก sshd ของฉันไม่ได้ในที่มาตรฐาน สิ่งที่ฉันได้ลอง: ไม่เข้า /var/log/auth.log ไม่เข้า /var/log/secure ระบบค้นหา'auth.log'และพบว่าไม่มีอะไร ฉันได้ตั้ง/etc/ssh/sshd_configการใช้งานอย่างชัดเจนSyslogFacility AUTHและLogLevel INFOและเริ่มต้นใหม่ sshd และยังไม่สามารถหาพวกเขา ฉันใช้ OpenSSH 6.5p1-2 บน Arch Linux

3
ฉันจะระงับเอาต์พุตจาก grep ได้อย่างไรเพื่อให้ส่งคืนสถานะออกเท่านั้น
ฉันมีgrepคำสั่ง ฉันกำลังค้นหาคำหลักจากไฟล์ แต่ไม่ต้องการแสดงผลลัพธ์ grepผมแค่อยากจะรู้ว่าออกจากสถานะของ

3
ความหมายของ 0.0.0.0 เป็นเกตเวย์คืออะไร?
ทุกคนสามารถอธิบายการกำหนดเกตเวย์ให้ฉันได้หรือไม่? ความแตกต่างระหว่างการเพิ่มเกตเวย์เป็น0.0.0.0และการกำหนดที่อยู่ IP ที่เฉพาะเจาะจงเป็นเกตเวย์คืออะไร?

4
เส้นประหรือเปลือกอื่น ๆ “ เร็วขึ้น” กว่าทุบตีหรือไม่
ฉันคิดเสมอว่าประโยชน์เพียงอย่างเดียวของการใช้เครื่องหมายขีดคั่นแทนการทุบตีก็คือเส้นประนั้นเล็กลงและดังนั้นกรณีของเส้นประจะเริ่มเร็วขึ้นในเวลาบูต แต่ฉันได้ทำการวิจัยมาแล้วและพบว่ามีคนบางคนย้ายสคริปต์ทั้งหมดของพวกเขาไปที่หวังว่าพวกเขาจะทำงานได้เร็วขึ้นและฉันก็พบสิ่งนี้ในบทความDashAsBinShใน Ubuntu Wiki: เหตุผลสำคัญที่จะเปลี่ยนเปลือกเริ่มต้นได้อย่างมีประสิทธิภาพ bash เป็นกระสุนเต็มรูปแบบที่ยอดเยี่ยมเหมาะสำหรับการใช้แบบโต้ตอบ; แท้จริงมันยังคงเป็นเปลือกเข้าสู่ระบบเริ่มต้น อย่างไรก็ตามมันค่อนข้างใหญ่และช้าในการเริ่มต้นและใช้งานโดยเปรียบเทียบกับเส้นประ ทุกวันนี้ฉันใช้สคริปต์ทุบตีมากมายหลายอย่างในระบบของฉันและปัญหาของฉันคือฉันมีสคริปต์เฉพาะที่ฉันทำงานอย่างต่อเนื่อง 24/7 ที่วางไข่เด็กประมาณ 200 คนซึ่งคอมพิวเตอร์ของฉันร้อนขึ้น 10 ° C มากกว่าการใช้งานปกติ มันเป็นสคริปต์ที่ค่อนข้างใหญ่ที่มี bashisms จำนวนมากดังนั้นการย้ายไปที่ POSIX หรือเชลล์อื่น ๆ ใช้เวลานานมาก (และ POSIX ไม่สำคัญสำหรับการใช้งานส่วนตัว) แต่มันจะคุ้มค่าถ้าฉันสามารถลดบางสิ่งนี้ การใช้งาน CPU ฉันรู้ว่ายังมีสิ่งอื่น ๆ ที่จะต้องพิจารณาเช่นการเรียกไบนารีภายนอกเช่นsedสำหรับ bashism ง่ายๆเช่น${foo/bar}หรือแทนgrep=~ TL; DRทุบตีช้ากว่าจริง ๆ เมื่อเริ่มต้นและใช้งานเมื่อเปรียบเทียบกับขีดกลางหรือไม่ มี Unix shell อื่น ๆ ซึ่งมีประสิทธิภาพมากกว่าการทุบตีหรือไม่?
57 bash  performance  dash 

1
สำหรับลูปใน zsh และ bash
ฉันได้สังเกตว่ามีสองวิธีในการสร้างลูปในzsh : for x (1 2 3); do echo $x; done for x in 1 2 3; do echo $x; done พวกเขาทั้งสองพิมพ์: 1 2 3 คำถามของฉันคือทำไมทั้งสองไวยากรณ์ มีการ$xทำซ้ำผ่านที่แตกต่างกันชนิดของวัตถุในแต่ละของพวกเขา? ไม่ทุบตีทำให้ความแตกต่างที่คล้ายกัน? ภาคผนวก: ทำไมงานต่อไปนี้: #!/bin/zsh a=1 b=2 c=5 d=(a b c) for x in $d; do print $x;done แต่อันนี้ไม่ได้: #!/bin/zsh a=1 b=2 c=5 d=(a …
57 bash  zsh 

5
จะตรวจสอบเวอร์ชั่นของแพ็คเกจที่มีในระบบ rpm ได้อย่างไร?
หากฉันต้องการตรวจสอบแพ็คเกจที่มีอยู่ใน Debian ฉันจะเรียกใช้apt-cache policy pkgnameในกรณีที่wajigให้: wajig: Installed: 2.01 Candidate: 2.01 Version table: *** 2.01 0 100 /var/lib/dpkg/status 2.0.47 0 500 file:/home/wena/.repo_bin/ squeeze/main i386 Packages 500 ftp://ftp.is.co.za/debian/ squeeze/main i386 Packages นั่นหมายความว่ามีแพ็กเกจ wajig สามแพ็กเกจหนึ่งแพ็กเกจที่ติดตั้ง ( /var/lib/dpkg/status) และอีกสองแพ็กเกจ(ซึ่งเป็นเวอร์ชันเดียวกัน) หนึ่งในสองเหล่านี้อยู่ในที่เก็บในตัวเครื่องและอีกอันหนึ่งสามารถหาได้จากที่เก็บระยะไกล ฉันจะบรรลุผลลัพธ์ที่คล้ายกันในระบบรอบต่อนาทีได้อย่างไร

5
ฉันจะได้รับ bash เสร็จสิ้นสำหรับนามแฝงคำสั่งได้อย่างไร
ฉันกำลังมองหาที่จะได้รับแท็บเสร็จในนามแฝงบรรทัดคำสั่งของฉันเช่นว่าฉันกำหนดนามแฝงต่อไปนี้: alias apt-inst='sudo aptitude install' มีวิธีรับความสำเร็จที่จัดทำโดยความถนัดเมื่อฉันกดปุ่มแท็บหรือไม่ นั่นคือเมื่อฉันเขียน 'sudo aptitude install gnumer' และแท็บ Hit ความถนัดจะทำสิ่งนี้ให้เป็น gnumeric หรือหากมีความไม่แน่นอนแสดงรายการแพ็คเกจทั้งหมดที่เริ่มต้นด้วย gnumer ถ้าฉันทำโดยใช้นามแฝงของฉันไม่มีอะไร - ไม่เสร็จ

5
GIF screencasting; วิธี UNIX
ที่จะใช้หน้าจอแบบคงที่ของส่วนที่เลือกของหน้าจอของฉันฉันมักจะใช้กับscrot -s shot.pngนี่เป็นสิ่งที่ยอดเยี่ยมสำหรับการเพิ่มภาพประกอบในโพสต์ StackExchange ฉันยังพบสคริปต์นี้เพื่ออัปโหลดภาพหน้าจอดังกล่าวไปยังImgur.comโดยอัตโนมัติและใส่ลิงค์ไว้ในคลิปบอร์ด X ของฉัน! ลองเปลี่ยนเป็นสิบสอง : ฉันจะสร้างหน้าจอ GIF แบบเดียวกันได้อย่างไร มีมีโปรแกรมเช่นrecordmydesktop, byzanzและร่วมตามที่กล่าวไว้ในการขอให้อูบุนตูที่มีจุดมุ่งหมายที่จะ "ใช้งานง่าย" แต่ในประสบการณ์ของผมเป็นรถไม่มีประสิทธิภาพส่วนใหญ่ unscriptable และพอเพียงเล็กน้อยสิ่งหนึ่งออกเช่นนี้ ฉันแค่ต้องการเลือกพื้นที่และบันทึก GIF ด้วยคำสั่งคอนโซลที่ฉันสามารถเข้าใจได้ไม่ใช่ความผิดพลาด GUI ที่ไม่สามารถอธิบายได้ ฉันจะทำสิ่งนี้ได้อย่างไร

11
จะหลีกเลี่ยงข้อขัดแย้งระหว่าง dnsmasq และ systemd-แก้ปัญหาได้อย่างไร?
ฉันเพิ่งติดตั้งdnsmasqเพื่อทำหน้าที่เป็นเซิร์ฟเวอร์ DNS สำหรับเครือข่ายท้องถิ่นของฉัน dnsmasq รอฟังพอร์ต 53 ซึ่งใช้งานอยู่แล้วโดยผู้ฟัง DNS stub ในระบบจากระบบที่แก้ไขแล้ว เพียงหยุดการแก้ไข systemd แล้วรีสตาร์ทหลังจาก dnsmasq กำลังทำงานแก้ปัญหานี้ แต่กลับมาหลังจากรีบูต: systemd-modified เริ่มต้นด้วยการตั้งค่าและ dnsmasq จะไม่เริ่มทำงานเนื่องจากพอร์ต 53 ถูกใช้งานแล้ว คำถามแรกที่เห็นได้ชัดฉันเดาว่าฉันควรทำอย่างไรให้ระบบดีที่สุดเข้าใจว่ามันไม่ควรเริ่มฟัง DNS stub ในเครื่องและทำให้พอร์ต 53 ใช้งานโดย dnsmasq อย่างไรก็ตามคำถามที่น่าสนใจมากขึ้นก็คือวิธีการที่ทั้งสองบริการมักจะหมายถึงการทำงานร่วมกัน พวกเขาหมายถึงการทำงานเคียงข้างกันหรือไม่ได้รับการแก้ไข systemd ในทางถ้าคนใช้ dnsmasq?
57 systemd  dnsmasq 

1
เปลี่ยนการอนุญาตของไฟล์ด้วยความช่วยเหลือของแมวของฉัน
root@system:~# less myfile -bash: /bin/less: Input/output error ระบบไฟล์รูทตาย แต่แมวของฉันยังมีชีวิตอยู่ (ในความทรงจำของฉัน): root@system:~# cat > /tmp/somefile C^d root@system:~# เขาเป็นคนขี้เหงา แต่เพื่อน ๆ ของเขาก็จากไปแล้ว: root@system:~# mount -bash: /bin/mount: Input/output error root@system:~# dmesg -bash: /bin/dmesg: Input/output error root@system:~# less -bash: /bin/less: Input/output error root@system:~# chmod -bash: /bin/chmod: Input/output error ระบบยังคงทำงานอยู่และบรรลุตามวัตถุประสงค์ ฉันรู้ว่าฉันรู้ว่าการตอบสนองที่มีเหตุผลเพียงอย่างเดียวของเรื่องนี้คือทำให้ระบบล่มและแทนที่ไดรฟ์ราก น่าเสียดายที่มันไม่ใช่ตัวเลือกเพราะมันต้องใช้เวลาและเงินเป็นจำนวนมาก นอกจากนี้มันจะฆ่าแมวของฉันและนั่นจะทำให้ฉันเศร้า ฉันคิดว่าจะพาเขาไปหาเพื่อนผู้บริจาคของเขา ฉันไม่กล้าลอง …

3
ความแตกต่างระหว่าง“ cd -” และ“ cd ~ -”
คำสั่ง Bash cd - พิมพ์ไดเรกทอรีที่ใช้ก่อนหน้านี้และเปลี่ยนแปลงไป ในทางกลับกันคำสั่ง Bash cd ~- เปลี่ยนเป็นไดเรกทอรีที่ใช้ก่อนหน้าโดยตรงโดยไม่ต้องสะท้อนอะไรเลย นั่นคือความแตกต่างเท่านั้น? กรณีการใช้งานสำหรับแต่ละคำสั่งคืออะไร?

2
sudo เป็นผู้ใช้รายอื่นที่มีสภาพแวดล้อม
$ whoami admin $ sudo -S -u otheruser whoami otheruser $ sudo -S -u otheruser /bin/bash -l -c 'echo $HOME' /home/admin เหตุใดจึงไม่$HOMEถูกตั้งค่าเป็น/home/otheruserแม้ว่า bash จะถูกเรียกใช้เป็นเชลล์การเข้าสู่ระบบ โดยเฉพาะ/home/otheruser/.bashrcไม่ได้มีที่มา นอกจากนี้ยัง/home/otheruser/.profileไม่ได้รับที่มา - ( /home/otheruser/.bash_profileไม่มีอยู่) แก้ไข: ปัญหาจริงคือhttps://stackoverflow.com/questions/27738224/mkvirtualenv-with-fabric-as-another-user-fails

8
งานหยุดทำงานสำหรับเซสชัน c2 ของผู้ใช้
ข้อความต่อไปนี้ปรากฏขึ้นเกือบทุกครั้งที่ฉันปิดคอมพิวเตอร์: A stop job is running for Session c2 of user ... (1min 30s) มันจะรอ 1 นาที 30 วินาทีจากนั้นจึงปิดกระบวนการต่อไป ฉันทำตามคำแนะนำในการวิเคราะห์การปิดระบบ systemdและรับshutdown-log.txt (ฉันไม่สามารถวางบันทึกโดยตรงที่นี่เพราะมันยาวมาก) น่าเสียดายที่ฉันไม่เข้าใจบันทึกด้วยตัวเอง ใครช่วยให้ฉันค้นหาสิ่งที่ทำให้ระบบของฉันไม่ปิดอย่างถูกต้องหรือไม่ ผมทำงาน Arch Linux กับเคอร์เนล4.4.5-1-ARCHของฉันรุ่นsystemd229-3 นอกจากที่ 1:A stop job is running...ผมสังเกตว่าทุกครั้งที่ผมออกจากระบบแล้วปิดเครื่องคอมพิวเตอร์ของฉันจากหน้าจอเข้าระบบก็ไม่ได้รับข้อความ ฉันพยายามออกจากระบบก่อนที่จะปิดหลายครั้งดังนั้นฉันคิดว่ามันไม่ได้เกิดขึ้นโดยบังเอิญ หวังว่าข้อมูลจะช่วยได้ เพิ่มเติม 2:เป็นเซสชัน c2 เสมอที่ทำให้การปิดระบบหยุดทำงาน ดังนั้นตามที่ @ n.st แนะนำให้ฉันดูที่การวินิจฉัยปัญหาการปิดระบบอีกครั้งและเก็บไว้loginctl session-status c2แทนdmesgแต่ไม่มีอะไรเกิดshutdown-log.txtขึ้น ฉันแทนที่loginctl session-status c2ด้วยsystemd-cglsและได้รับบันทึกต่อไปนี้: Control …
56 systemd  shutdown 

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