Unix & Linux

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

1
ไม่สามารถหาเอกสารใน json.tool [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน3 ปีที่ผ่านมา ฉันสามารถค้นหาบทความกระจัดกระจายออนไลน์ที่ใช้ json.tool เพื่อผลิตไพ ธ อนสวย แต่ไม่มีเอกสารที่ชัดเจนเกี่ยวกับการใช้งาน ฉันตรวจสอบdocs.python แต่ไม่มีเอกสารอย่างเป็นทางการของ json.tool ฉันมีเวิร์กโฟลว์สองสามตัว (เขียนโดยคนอื่น) ที่ใช้ json.tool เพื่อตรวจสอบความถูกต้องของ json แต่ฉันได้เห็นโพสต์ที่เตือนว่า json.tool นั้นไม่ได้สร้าง json ที่ถูกต้องเสมอไป ดังนั้นฉันต้องการที่จะเข้าใจเพิ่มเติมเกี่ยวกับวิธีการทำงานของ json.tool ใครบ้างที่สามารถแนะนำบางแห่งที่มีเอกสารที่ชัดเจนและครอบคลุมบน json.tool
12 python  json 

3
นำแพคเกจทั้งหมดที่ฉันติดตั้งออกทั้งหมดหรือไม่
ฉันใช้เซิร์ฟเวอร์ Linux หนึ่งตัวที่ติดตั้ง CentOS7 เพื่อทดสอบและติดตั้งเครื่องมือบางอย่าง และตอนนี้ฉันจำไม่ได้ว่าติดตั้งแพคเกจจำนวนเท่าไหร่ ฉันต้องการลบแพ็คเกจทั้งหมดเพื่อให้เซิร์ฟเวอร์ของฉันเหมือนใหม่เหมือนเดิม ฉันไม่ต้องการค้นหาทุกแพ็คเกจและลบทีละชุด มีวิธีใดที่จะลบออกด้วยคำสั่งเดียว?

1
ดูการขยายตัวของตัวแปร Bash สำหรับการดีบั๊กหรือไม่
มีเครื่องมือ / เทคนิคสำหรับการขยายตัวแปรเพื่อให้สามารถอ่านรหัสทุบตีได้ง่ายขึ้นหรือไม่? ตัวอย่างเช่นมันจะแปลงต่อไปนี้: DIR=/var/tmp FILE=${DIR}/file SCRIPT_ROOT=/opt/root TOOL=${SCRIPT_ROOT}/tool.sh ${TOOL} ${FILE} ถึง: DIR=/var/tmp FILE=/var/tmp/file SCRIPT_ROOT=/opt/root TOOL=/opt/root/tool.sh /opt/root/tool.sh /var/tmp/file ฉันกำลังแปลงรหัส BASH เป็น Python และการอ่านไวยากรณ์ BASH นั้นน่าเบื่อ

4
แทรกข้อความที่หมายเลขบรรทัดเฉพาะ
ฉันกำลังทำงานกับสคริปต์ทุบตีที่จะแยกเนื้อหาของเอกสารข้อความขึ้นอยู่กับข้อมูลในบรรทัด หากเนื้อหาของไฟล์ต้นฉบับอยู่ในแนวของ 01 line 01 line 02 line 02 line ฉันจะแทรกลงในบรรทัดที่ 3 ของไฟล์นี้โดยใช้ bash เพื่อให้ได้ผลลัพธ์อย่างไร 01 line 01 line text to insert 02 line 02 line ฉันหวังว่าจะทำเช่นนี้โดยใช้ heredoc หรือสิ่งที่คล้ายกันในสคริปต์ของฉัน #!/bin/bash vim -e -s ./file.txt <<- HEREDOC :3 | startinsert | "text to insert\n" :update :quit HEREDOC ข้างต้นใช้งานไม่ได้ แต่มีคำแนะนำใดบ้างที่ฉันสามารถนำไปใช้กับสคริปต์ทุบตีนี้ได้

4
ใช้เคส / ตัวอย่างการปฏิบัติสำหรับ Bash 'builtin exec
พิจารณาจากเอกสารของ Bash 'builtin exec: exec แทนที่เชลล์โดยไม่ต้องสร้างกระบวนการใหม่ โปรดระบุกรณีการใช้งาน / ตัวอย่างการปฏิบัติ ฉันไม่เข้าใจว่าสิ่งนี้สมเหตุสมผลหรือไม่ ฉัน googled และพบเกี่ยวกับI / O เปลี่ยนเส้นทาง คุณช่วยอธิบายให้ดีขึ้นได้ไหม?

4
ฉันต้องเขียน man pages สำหรับ library C หรือไม่?
ฉันเขียนไลบรารี C ขนาดเล็กสำหรับ Linux และ FreeBSD และฉันจะเขียนเอกสารสำหรับมัน ฉันพยายามเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างหน้าคนและไม่พบคำแนะนำหรือคำอธิบายของวิธีปฏิบัติที่ดีที่สุดในการสร้างหน้าคนสำหรับห้องสมุด โดยเฉพาะอย่างยิ่งฉันสนใจในส่วนที่จะนำหน้าคนของฟังก์ชั่น? 3 หรือไม่? อาจมีตัวอย่างหรือคู่มือดีๆ สร้างหน้าคนสำหรับแต่ละฟังก์ชั่นจากห้องสมุดเป็นความคิดที่ไม่ดี?
12 linux  freebsd  man 

4
lsof -p PID เทียบกับ lsof | PID ของ grep
ฉันไม่เข้าใจ ouput ของคำสั่ง lsof เมื่อฉันเขียน lsof -p PID ฉันได้ 4 บรรทัดและเมื่อฉันเขียน lsof | grep PID ฉันได้รับหลายร้อยบรรทัด มันจะไม่ส่งคืนผลลัพธ์เดียวกันหรือไม่ ขอบคุณสำหรับคำตอบของคุณ นี่คือผลลัพธ์ ดูเหมือนว่าจะเป็นกระบวนการย่อยหรืองานนี้หมายถึงอะไร? lsof -p 29076 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied) java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied) …
12 process  lsof 

5
จะติดตั้ง git ล่าสุดบน Debian 8 ได้อย่างไร
ฉันมีปัญหาบางอย่างgit-lfsและฉันคิดว่าการอัปเกรดเป็นเวอร์ชั่นล่าสุดgitสามารถแก้ไขปัญหานี้ได้ รุ่นปัจจุบันgitใน Debian เป็นรุ่นที่มีเสถียรภาพในปัจจุบันเกี่ยวกับเว็บไซต์อย่างเป็นทางการคือ2.1.4 2.6.4ฉันสามารถสร้างได้จากแหล่งที่มาหรือฉันสามารถเพิ่มที่เก็บภายนอกบางส่วนได้หรือไม่
12 debian  git 

2
ไม่สามารถเรียกใช้ docker hello-world: จุดเมานต์สำหรับอุปกรณ์ที่ไม่พบ
ใหม่สำหรับนักเทียบท่า mint 17ติดตั้งนักเทียบท่าจากเครื่องมือการจัดการซอฟต์แวร์ เมื่อฉันวิ่ง docker run hello-worldฉันได้รับ: FATA[0000] Error response from daemon: Cannot start container a6bcc1ede2c38cb6b020cf5ab35ebd51b64535af57fa44f5966c37bdf89c8781: [8] System error: mountpoint for devices not found เมื่อฉันดูบันทึกการบริการ ( /var/log/upstart/docker.log) ฉันเห็น: ERRO[0617] Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH ERRO[0617] Couldn't run auplink before unmount: exec: "auplink": …

2
เหตุใดการเชื่อมโยงของฉันจึงมองเห็นได้นอกเนมสเปซการเมานท์
ดังนั้นฉันจึงพยายามที่จะจัดการกับ mount namespace ของ Linux ว่าทำงานอย่างไร ดังนั้นฉันจึงทำการทดลองเล็กน้อยและเปิดเทอร์มินัลสองเครื่องและวิ่งต่อไปนี้: อาคาร 1 root@goliath:~# mkdir a b root@goliath:~# touch a/foo.txt root@goliath:~# unshare --mount -- /bin/bash root@goliath:~# mount --bind a b root@goliath:~# ls b foo.txt อาคาร 2 root@goliath:~# ls b foo.txt ทำไมการมองเห็นการติดตั้งจึงปรากฏในเทอร์มินัล 2 เนื่องจากมันไม่ได้เป็นส่วนหนึ่งของเมานต์เนมสเปซฉันจึงคาดว่าไดเรกทอรีจะว่างเปล่าที่นี่ ฉันพยายามผ่าน-o shared=noและใช้--make-privateตัวเลือกด้วยmountแต่ฉันก็ได้ผลลัพธ์เดียวกัน ฉันพลาดอะไรไปบ้างและฉันจะทำให้เป็นส่วนตัวได้อย่างไร

2
Linux iptables การส่งต่อพอร์ต ssh (การปฏิเสธของดาวอังคาร)
ฉันมีเกตเวย์ Linux ที่ทำงาน NAT สำหรับเครือข่ายในบ้านของฉัน ฉันมีเครือข่ายอื่นที่ฉันต้องการส่งต่อแพ็กเก็ตอย่างโปร่งใส แต่ไปยัง / จาก IP / พอร์ตเฉพาะ (เช่นไม่ใช่ VPN) นี่คือตัวอย่าง IP และพอร์ตที่ใช้งานได้: Source Router Remote Gateway Remote Target 192.168.1.10 -> 192.168.1.1 -> 1.2.3.4 -> 192.168.50.50:5000 ฉันต้องการให้เครื่อง Source สามารถพูดคุยกับพอร์ตเฉพาะใน Remote Target ได้ราวกับว่ามันเป็นเส้นทางโดยตรงจากเราเตอร์ บนเราเตอร์ eth0 เป็นเครือข่ายส่วนตัวและ eth1 นั้นเชื่อมต่ออินเทอร์เน็ต Remote Gateway เป็นเครื่องลีนุกซ์ตัวอื่นที่ฉันสามารถเข้าไปได้และสามารถกำหนดเส้นทางไปยัง Remote Target ได้โดยตรง ความพยายามในการแก้ปัญหาอย่างง่ายของฉันคือการตั้งค่าการส่งต่อพอร์ต ssh บนเราเตอร์เช่น: …

1
วิธีแปลงไฟล์ gz (gzip) ที่มีอยู่เป็น rsyncable
ฉันใช้ rsync เพื่อสำรองพื้นที่เก็บข้อมูลที่มีไฟล์ gz จำนวนมากรวมถึงไฟล์ใหม่จำนวนมากในแต่ละวัน การสำรองข้อมูล rsync จะดำเนินการช้ากว่าที่ควรจะเป็นเพราะไฟล์ gz เหล่านี้ไม่ได้สร้างขึ้นด้วยตัวเลือก --rsyncable ของ gzip (ซึ่งทำให้ไฟล์ gz นั้นเป็นมิตรต่อ rsync มากขึ้นโดยไม่เพิ่มขนาดหรือส่งผลต่อความเข้ากันได้) และฉันไม่สามารถแก้ไขปัญหาได้ในขณะที่สร้างเพราะไฟล์ถูกสร้างโดยสคริปต์ python (rdiff-backup) ซึ่งใช้โมดูล gzip ของ python และสิ่งนี้ไม่สนับสนุนเทียบเท่ากับ gzip's --rsyncable ดังนั้นก่อนที่จะรัน rsync ฉันสามารถระบุไฟล์ gz ใหม่ใด ๆ ในแหล่งข้อมูล (เช่นใหม่นับตั้งแต่มีการเรียกใช้ rsync ครั้งล่าสุด) ตอนนี้ฉันต้องการ 're-gzip' ไฟล์เหล่านี้เพื่อให้พวกเขา gzipped ในรูปแบบ rsyncable จากนั้นฉันสามารถเรียกใช้ rsync จากแหล่งที่ได้รับการปรับปรุง ฉันคิดว่านี่หมายถึงการเรียกใช้แต่ละไฟล์ผ่าน gunzip และ …
12 rsync  gzip 

2
ลบดิสก์ขนาด 512 ไบต์แรก ฉันจะกู้คืนข้อมูลของฉันได้อย่างไร
ฉันบังเอิญเขียนไบนารี่ 512 ไบต์ไปยังดิสก์ USB ผิดddและอุปกรณ์ไม่แสดงพาร์ทิชันfdiskอีกต่อไป ฉันคิดว่าข้อมูลทั้งหมดหายไป แต่dd if=/dev/sdx | stringsแสดงให้เห็นว่าข้อมูลยังคงอยู่ที่นั่นเนื่องจากddโชคดีที่ จำกัด ตัวเองไว้ที่ 512 ไบต์แรก มีวิธีกู้คืนไหม? ดิสก์มีสองพาร์ติชัน: หนึ่ง ext4 (~ 4GB) และส่วนที่เหลือของ 16GB ถูกจัดรูปแบบเป็น NTFS

3
การบันทึกและการดีบักสำหรับ qemu เครื่องเสมือน
ฉันมีเครื่องqemuเสมือนซึ่งล้มเหลวหลายครั้งเนื่องจาก HDD ในไฮเปอร์ไวเซอร์ไม่มีพื้นที่เหลือ สิ่งนี้ทำให้ฉันสงสัยว่ามีความเป็นไปได้ที่จะตั้งค่าการบันทึก / การดีบักสำหรับquemuเครื่องเสมือน ฉันพยายามเริ่มเครื่องเสมือนด้วย-D /tmp/qemu-debug-logคำสั่ง: qemu-system-i386 -D /tmp/qemu-debug-log -monitor pty -device e1000,netdev=tap0 -netdev tap,id=tap0 -m 512M -display vnc=:1 -drive file=FreeBSD10.2 .. แต่สิ่งนี้ไม่ได้สร้าง/tmp/qemu-debug-logไฟล์ นอกจากqemuนี้ดูเหมือนจะไม่เขียนลงในmessagesหรือเคอร์เนลบัฟเฟอร์แหวน ( dmesg) แนวทางปฏิบัติที่ดีที่สุดในการเปิดใช้งานการบันทึกสำหรับqemuเครื่องเสมือนคืออะไร
12 qemu 

4
รายการไฟล์ที่ตรงกับรูปแบบ แต่ไม่สนใจไฟล์ที่ตรงกับรูปแบบอื่น?
สมมติว่าฉันมีไดเรกทอรีที่มีไฟล์ a1, a2, a3, b1, b2, b3 ฉันเพียงต้องการให้ตรงกับไฟล์ที่เริ่มต้นด้วยแต่ไม่ได้มีa 3ฉันพยายามls -I "*3" *a*แต่มันกลับแม้ว่าฉันไม่ต้องการให้ตรงกับa1 a2 a3 a3เป็นไปได้ด้วยlsหรือไม่
12 linux  bash  ls  patterns 

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