Unix & Linux

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

2
กำหนดพื้นที่ทำงานบน i3 ให้กับจอแสดงผลหลายจอ
ฉันเปิดใช้งาน i3 บนแล็ปท็อป Linux ของฉัน ฉันมักจะใช้เพียงจอมอนิเตอร์ภายในของแล็ปท็อป (จอแสดงผลeDP1) แต่เมื่อฉันทำงานฉันมักจะเชื่อมต่อจอภาพที่สองเข้ากับพอร์ต HDMI ของคอมพิวเตอร์ (จอแสดงผลHDMI2) จนถึงตอนนี้ฉันได้ทำให้มันทำงานได้ดีโดยการเพิ่มคำสั่งเหล่านี้ไปยังไฟล์ config i3 ของฉัน: # use workspaces on different monitors workspace "1: P1" output eDP1 workspace "2: P2" output eDP1 workspace "3: P3" output eDP1 workspace "4: P4" output eDP1 workspace "5: P5" output eDP1 workspace "6: S1" output …
15 i3  workspaces 

3
เป็นไปได้หรือไม่ที่จะแทรกแผ่น CD จริงลงในเครื่อง VirtualBox?
ฉันมีแผ่นซีดีสำหรับ Age of Empire III และฉันต้องการเล่นใน Windows 10 VM เป็นไปได้ไหม ฉันรู้วิธีแทรกซีดีเสมือน (เช่นไฟล์ ISO) ลงใน VirtualBox VM (ผ่านการตั้งค่า "ที่เก็บข้อมูล") แต่ซีดีทางกายภาพเป็นเรื่องที่แตกต่าง ทางออกที่ดีที่สุดที่ฉันสามารถนึกได้ก็คือการเพิ่มตำแหน่งที่ฉันติดตั้งซีดีบนระบบ Linux ของฉันเข้ากับระบบผ่านโฟลเดอร์ที่ใช้ร่วมกัน

3
โทร Linux syscall จากภาษาสคริปต์
ฉันต้องการเรียก Linux syscall (หรืออย่างน้อย libc wrapper) โดยตรงจากภาษาสคริปต์ ฉันไม่สนใจภาษาสคริปต์ใด - เป็นสิ่งสำคัญที่จะไม่รวบรวม (เหตุผลโดยทั่วไปเกี่ยวกับการไม่ต้องการคอมไพเลอร์ในเส้นทางการพึ่งพา แต่นั่นไม่ใช่ที่นี่หรือที่นั่น) มีภาษาสคริปต์ (เชลล์, Python, Ruby, etc) ที่อนุญาตสิ่งนี้หรือไม่? โดยเฉพาะอย่างยิ่งมันเป็นsyscall สุ่ม

5
เป็นโปรแกรม "ถ้า" และ "แล้ว" ที่จริงแล้ว
ฉันอ่านว่าใช้เครื่องหมายอัฒภาคเพื่อคั่นโปรแกรม: $ echo 3; ls -la มันหมายความว่าอย่างนั้นifหรือthenและelseเป็นโปรแกรมแยกต่างหากที่นี่ $ if [ $VARIABLE == abcdef ] ; then echo yes ; else echo no ; fi คำถามนี้ไม่เกี่ยวกับเครื่องหมายอัฒภาค

1
ssh รันคำสั่งอย่างไร
ฉันกำลังใช้ Bash กับทั้งลูกค้าและเซิร์ฟเวอร์ เมื่อรันคำสั่งผ่าน SSH: ssh <host> 'declare' ให้รายการของตัวแปรเชลล์ ssh <host> 'mount' ให้รายการของจุดเมานท์ อย่างไรก็ตามdeclareเป็น Bash builtin ในขณะที่mountเป็นคำสั่งภายนอก SSH จะรู้ได้อย่างไรว่าจะใช้งานอะไรถ้ามี shell builtin และคำสั่งภายนอกที่มีชื่อเดียวกันบนเซิร์ฟเวอร์?
15 shell  ssh 

2
ฉันจะเรียกใช้โปรแกรมกราฟิกในคอนเทนเนอร์ใต้ Wayland ได้อย่างไร
เมื่อฉันใช้เดสก์ท็อป X11 ฉันสามารถเรียกใช้แอปพลิเคชั่นกราฟิกในคอนเทนเนอร์นักเทียบท่าโดยการแชร์$DISPLAYตัวแปรและ/tmp/X11-unixไดเรกทอรี ตัวอย่างเช่น: docker run -ti -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix some:ubuntu xclock ตอนนี้ฉันกำลังใช้ Wayland อยู่ใน Fedora 25 ดังนั้นจึงไม่มีโครงสร้างพื้นฐาน X11 ที่จะแชร์กับคอนเทนเนอร์ ฉันจะเปิดแอปพลิเคชั่นแบบกราฟิกในคอนเทนเนอร์ได้อย่างไรและให้ปรากฏบนเดสก์ท็อปของฉันได้อย่างไร มีวิธีผูกมัดใน XWayland ไหม?
15 x11  docker  wayland 


4
มีเครื่องมือในการค้นหาสถานะทั่วไปของเครื่องหรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันต้องการเครื่องมือสำหรับ linux ที่จะทำให้ฉันมีความคิดทั่วไปว่าเกิดอะไรขึ้นกับเครื่อง ข้อมูลตัวอย่างฉันกำลังมองหา: มีการติดตั้ง daemons ใด (www, db, อื่น ๆ ) กำหนดค่าที่ตั้งสำหรับบริการเหล่านั้น เคอร์เนลและ distro คือเซิร์ฟเวอร์ที่ทำงานและอายุเท่าไหร่ distro คือ (จะรักถ้าเครื่องมือจะบอกด้วยว่า distro นั้นยังรองรับอยู่หรือไม่) ข้อมูล RAM, CPU และพื้นที่ดิสก์ ไดรฟ์ที่ติดตั้ง / เส้นทาง ข้อมูลเกี่ยวกับบัญชีของฉัน: ฉันเป็น sudoer, ข้อมูลที่เป็นประโยชน์อื่น ๆ ข้อมูลเครือข่ายทั่วไป (พอร์ตที่ถูกปิดกั้นหรือค่อนข้างเปิด) แก้ไข: ล่าม / คอมไพเลอร์ที่ติดตั้งและเวอร์ชัน (C, Python ฯลฯ ) …

2
ตรวจสอบว่า luks slot มีวลีรหัสผ่านอยู่
ฉันมีพาร์ติชั่นที่เข้ารหัสด้วย luk ซึ่งได้รับการปกป้องโดยวลีรหัสผ่านและไฟล์คีย์ ไฟล์คีย์สำหรับการเข้าถึงรูทีนและข้อความรหัสผ่านอยู่ในซองที่ปิดผนึกสำหรับกรณีฉุกเฉิน เดือนพฤษภาคมผ่านไปและฉันได้ทำลายไฟล์คีย์โดยไม่ตั้งใจดังนั้นฉันจึงกู้คืนโดยใช้ข้อความรหัสผ่านจากซองจดหมาย ตอนนี้ฉันอยากรู้ว่าฉันมีสองช่องเสียบกุญแจที่ใช้งานได้ แต่ฉันไม่รู้ว่าที่มีวลีรหัสผ่านไฟล์คีย์ที่ไม่มีประโยชน์และมีข้อความรหัสผ่านฉุกเฉินของฉันอยู่ที่ใด เห็นได้ชัดว่าฉันลบผิดฉันจะสูญเสียข้อมูลทั้งหมดในไดรฟ์ #cryptsetup luksDump /dev/sda2 LUKS header information for /dev/sda2 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha256 Payload offset: 4096 MK bits: 256 MK digest: xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx …
15 luks 

1
เปลือกทั่วไป“ ส้อมระเบิด” เรียกตัวเองว่าสองครั้งอย่างแน่นอนอย่างไร?
หลังจากผ่านคำถาม Fork Bombที่โด่งดังใน Askubuntu และเว็บไซต์แลกเปลี่ยนเงินตราต่างประเทศอื่น ๆ ฉันไม่เข้าใจว่าสิ่งที่ทุกคนพูดถึงมันชัดเจน คำตอบมากมาย ( ตัวอย่างที่ดีที่สุด ) พูดอย่างนี้: " {:|: &}หมายถึงเรียกใช้ฟังก์ชัน:และส่งออกไปยัง:ฟังก์ชันอีกครั้ง" ดีสิ่งที่แน่นอนคือการส่งออกของ:? สิ่งที่ถูกส่งผ่านไปยังอีก:หรือไม่ และนอกจากนี้ยังมี: โดยพื้นฐานแล้วคุณกำลังสร้างฟังก์ชั่นที่เรียกตัวเองว่าสองครั้งทุกการโทรและไม่มีทางที่จะยุติตัวเอง วิธีการที่ถูกดำเนินการสองครั้งว่า? ในความคิดของฉันไม่มีอะไรถูกส่งผ่านไปยังวินาที:จนกว่าการดำเนินการครั้งแรกจะ:เสร็จสิ้นซึ่งจริงๆแล้วจะไม่มีวันสิ้นสุด ในCตัวอย่างเช่น foo() { foo(); foo(); // never executed } ที่สองfoo()ไม่ได้ดำเนินการเลยเพียงเพราะครั้งแรกfoo()ไม่สิ้นสุด ฉันคิดว่าตรรกะเดียวกันนี้ใช้ได้กับ:(){ :|: & };:และ :(){ : & };: ทำงานเช่นเดียวกับ :(){ :|: & };: โปรดช่วยฉันเข้าใจตรรกะ

1
สับสนเกี่ยวกับ“ /etc/init.d” และบริการใน“ / lib / systemd / system”
ฉันยังใหม่กับโลกของลินุกซ์ดังนั้นฉันจึงขอโทษสำหรับสิ่งผิดปกติ ฉันพยายามเรียกใช้ Mongo DB บนเครื่อง Debian 8.5 เมื่อฉันติดตั้งแพคเกจ (สร้างไว้ล่วงหน้าจาก percona.com) ฉันสังเกตเห็นไฟล์ต่อไปนี้: /etc/init.d/mongod (1) /lib/systemd/system/mongod.service (2) เกี่ยวกับ /etc/init.d/mongod ฉันเข้าใจว่าสิ่งนี้เรียกว่า (ตราบใดที่มีการลงทะเบียนผ่านupdate-rc.d) ที่บูต / ในสถานะระบบอื่น ๆ (ไม่ต้องการรับข้อมูลทางเทคนิคเกี่ยวกับเรื่องนี้ฉันดูดซับข้อมูลจำนวนมากและสิ่งนี้ดูมีความสำคัญน้อยกว่า) นี่เป็นสิ่งที่ดีที่สุดสำหรับฉัน สคริปต์ทำการเริ่มต้นจำนวนมากและเปิด mongo daemon ในที่สุด มันดูเหมือนว่าจะมี“ทริกเกอร์” สำหรับการเริ่มต้น, หยุด, รีสตาร์ท ฯลฯ sudo service mongod <action>และเท่าที่ผมเข้าใจว่าฉันสามารถเรียกผู้ที่มี เกี่ยวกับ /lib/systemd/system/mongod.service ไฟล์นี้ดูเหมือนจะทำสิ่งเดียวกัน (เช่นเรียกใช้ mongo) แต่มีการกำหนดค่าน้อยกว่าเพียงหนึ่งบรรทัดในพารามิเตอร์ ExecStart: [Unit] Description=MongoDB (High-performance, schema-free document-oriented …

5
ป้องกัน sudo ไม่ให้ใส่รหัสผ่านเมื่อเรียกใช้คำสั่งที่ไม่ได้รับอนุญาต
ฉันได้รับอนุญาตจากกลุ่มให้รันคำสั่งบางอย่างโดยไม่มีรหัสผ่านทาง sudo เมื่อผู้ใช้คนใดคนหนึ่งพิมพ์ผิดหรือรันคำสั่งผิดระบบจะแจ้งให้พวกเขาใส่รหัสผ่านแล้วพวกเขาก็จะได้รับข้อผิดพลาด สิ่งนี้สร้างความสับสนให้กับผู้ใช้ดังนั้นฉันต้องการแสดงข้อผิดพลาดแทนที่จะแจ้งรหัสผ่านให้พวกเขา เป็นไปได้ไหม นี่คือตัวอย่างของไฟล์ sudoers ของฉัน: %mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh * ตัวอย่างเมื่อพวกเขาเรียกใช้สคริปต์ที่ไม่ถูกต้อง: # sudo /usr/local/bin/otherscript.sh [sudo] password for user: Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. ผลลัพธ์ที่ต้องการ: Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the …
15 sudo 

3
วิธีรันหนึ่งคำสั่งที่มีไดเรกทอรีเป็นอาร์กิวเมนต์แล้ว cd ไปเหมือนกัน? ฉันได้รับ“ ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว”
ฉันต้องการสร้างฟังก์ชั่นสั้น ๆ เพื่อทำสิ่งต่อไปนี้ สมมติว่าฉันย้ายไฟล์ 'file.tex' ไปยังไดเรกทอรีเอกสารของฉัน: mv file.tex ~/Documents จากนั้นฉันต้องการไปcdยังไดเรกทอรีนั้น: cd ~/Documents ฉันต้องการที่จะพูดคุยนี้ไปยังไดเรกทอรีใด ๆ เพื่อให้ฉันสามารถทำได้: mv file.tex ~/Documents follow และให้followคำสั่งอ่านปลายทางจากคำสั่งก่อนหน้าจากนั้นดำเนินการตามนั้น สำหรับไดเรกทอรีง่าย ๆ มันไม่ได้ประหยัดเวลามาก แต่เมื่อทำงานกับไดเรกทอรีที่ซ้อนกันมันจะยิ่งใหญ่มากที่จะสามารถใช้ mv file.tex ~/Documents/folder1/subfolder1 follow ฉันคิดว่ามันค่อนข้างง่ายและฉันสามารถทำสิ่งนี้: follow() { place=`history 2 | sed -n '1p;1q' | rev | cut -d ' ' -f1 | rev` cd $place } …
15 bash  cd-command 

1
วิธีกรองบรรทัดของเอาต์พุตคำสั่งที่เกิดขึ้นในไฟล์ข้อความ?
forbidden.txtสมมติว่าเรามีไฟล์ข้อความของสายที่ต้องห้าม วิธีสั้น ๆ ในการกรองทุกบรรทัดของเอาต์พุตคำสั่งที่มีอยู่ในไฟล์ข้อความคืออะไร? cat input.txt | exclude-forbidden-lines forbidden.txt | sort
15 shell  pipe  filter 

1
เหตุใด rsync จึงไม่ใช้การถ่ายโอนเดลต้าสำหรับไฟล์เดียวทั่วทั้งเครือข่าย
ฉันได้ดูคำถามนี้และคำถามนี้แต่พวกเขาดูเหมือนจะไม่สามารถบอกอาการที่ฉันเห็นได้ ฉันมีล็อกไฟล์ขนาดใหญ่ (ประมาณ 600 MB) ที่ฉันพยายามถ่ายโอนข้ามเครือข่ายเซลลูลาร์ เพราะมันเป็นแฟ้มบันทึกมันเป็นเพียงการผนวกเข้ากับ (แม้ว่ามันจะเป็นจริงในฐานข้อมูล SQLite มีเพียง INSERT การดำเนินการเพื่อให้มันไม่ได้ค่อนข้างง่ายเหมือนที่ แต่มีข้อยกเว้นของสุดท้าย 4k หน้า (หรืออาจจะเป็น น้อย) ไฟล์จะเหมือนกันทุกครั้งมันเป็นสิ่งสำคัญที่จะต้องทำการเปลี่ยนแปลงเท่านั้น แต่เมื่อฉันทำการทดสอบผ่านการเชื่อมต่อที่ไม่มีการตรวจสอบ (เช่นฮอตสปอต wifi ฟรี) ฉันไม่เห็นการถ่ายโอนข้อมูลที่เร่งความเร็วหรือลดลงที่สังเกตหรือรายงาน ผ่านการเชื่อมต่อ WiFi ช้าฉันเห็นตามคำสั่งของ 1MB / s หรือน้อยกว่ารายงานว่าการถ่ายโอนจะใช้เวลาเกือบ 20 นาที ผ่านการเชื่อมต่อ WiFi ที่รวดเร็วฉันเห็นความเร็วที่เร็วขึ้นเหมือนกัน แต่ไม่มีรายงานการเร่งความเร็วและความพยายามครั้งที่สองในการถ่ายโอน คำสั่ง (ฆ่าเชื้อเพื่อลบข้อมูลที่ละเอียดอ่อน) ที่ฉันใช้อยู่คือ: rsync 'ssh -p 9999' --progress LogFile michael@my.host.zzz:/home/michael/logs/LogFile ผลลัพธ์ที่ฉันได้รับในตอนท้ายดูเหมือนว่า: LogFile 640,856,064 100% …
15 rsync 

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