Unix & Linux

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


2
ฝูงสัตว์ & exec ปลอดภัยในการทุบตี?
ตัวอย่างการล็อก "มาตรฐาน" ที่ฉันเห็นมีบางอย่างเช่น ... ( flock -n 200 || exit 1; # do stuff ) 200>program.lock การทดสอบexecณ จุดนั้นปลอดภัยหรือไม่? กระบวนการย่อยจะยังคงล็อคหรือไม่ ( flock -n 200 || exit 1; exec /usr/bin/python vendors-notcoolstuff.py ) 200>program.lock ฉันจำได้ว่ากระบวนการ exec'd จะคงไว้ซึ่งตัวอธิบายไฟล์ที่เปิดอยู่และเนื่องจาก flock ใช้ตัวอธิบายไฟล์มันควรจะทำงานได้ แต่ฉันไม่สามารถหาเอกสารที่ทำให้ชัดเจนและชัดเจนได้ สำหรับเร็กคอร์ดนี่เป็นข้อมูลเฉพาะสำหรับ Linux
13 bash  lock 

4
ทำไมงูหลามยังคงทำงานหลังจากถูกลบออกไป?
ใน Debian 8 jessie ฉันได้ลบหลาม: perry@perry:~$ sudo apt-get remove python Reading package lists... Done Building dependency tree Reading state information... Done Package 'python2.7' is not installed, so not removed 0 upgraded, 0 newly installed, 0 to remove and 35 not upgraded. แต่อย่างใดฉันยังคงสามารถเปิดตัวหลามจาก terminal perry@perry:~$ python Python 2.7.9 (default, Apr 29 …
13 debian  apt  python 

4
ข้อผิดพลาด `ls` เมื่อลบไดเรกทอรี
ฉันมีกระสุนสองนัดที่เปิดอยู่ สิ่งแรกคือในไดเรกทอรี A. ในวินาทีฉันลบไดเรกทอรี A แล้วสร้างใหม่ เมื่อฉันกลับไปที่เชลล์ตัวแรกและพิมพ์lsเอาต์พุตคือ: ls: cannot open directory .: Stale file handle ทำไม? ฉันคิดว่าเชลล์แรก (อันที่ยังคงเปิดอยู่ในไดเรกทอรีที่ไม่มีอยู่) จะ "หยุด" ในขณะที่รอคำสั่งถัดไปและจะไม่ "รู้" ว่าไดเรกทอรีนั้นถูกลบและสร้างใหม่ เชลล์เก็บการอ้างอิง "ที่ลึกกว่า" ไปยังไดเร็กทอรีการทำงานปัจจุบันนอกเหนือจากสตริง$PWDหรือไม่?

2
ทำไม touch จึงสร้างไฟล์ใหม่
ฉันทราบว่าtouchคำสั่งจะใช้เพื่ออัปเดตวันที่แก้ไขล่าสุดในไฟล์ นอกจากนี้ยังใช้เพื่อสร้างไฟล์ใหม่หากไฟล์ที่ร้องขอไม่มีอยู่ในระบบไฟล์ เนื่องจากแตะ (ตามชื่อแสดงถึง) ควรอัปเดตวันที่แก้ไขล่าสุดทำไมจึงลองสร้างไฟล์ใหม่ มันเป็นเพียงการตรวจสอบที่เขียนในรหัสของ touch หรือมันเป็นอย่างอื่นที่ทำให้ไฟล์ถูกสร้างขึ้น?
13 files  touch 

1
คัดลอกไฟล์และเพิ่มการประทับเวลาต่อท้าย
ฉันมีสองปัญหากับสคริปต์ของฉันที่คัดลอกไฟล์และเพิ่มการประทับเวลาให้กับชื่อ cp -ra /home/bpacheco/Test1 /home/bpacheco/Test2-$(date +"%m-%d-%y-%T") ดังกล่าวข้างต้นจะเพิ่มTest2เป็นชื่อไฟล์ Testแต่ฉันต้องการที่จะให้ชื่อไฟล์ไฟล์ต้นฉบับซึ่งในตัวอย่างนี้เป็นชื่อ cp -ra /home/bpacheco/Test1 /home/bpacheco/Test2-$(date +"%m-%d-%y-%r") ปัญหาอื่น ๆ คือเมื่อฉันเพิ่ม%rเป็นรหัสเวลาที่ฉันได้รับข้อผิดพลาดระบุว่า "PM" เป้าหมายไม่ได้เป็นไดเรกทอรี ฉันกำลังพยายามที่จะได้รับการประทับเวลาเป็นเวลานาฬิกา 12 ชั่วโมง

5
การกระจาย Linux ที่เล็กที่สุดตามขนาดการติดตั้งคืออะไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันพยายามทดลองกับ Linux และมองหาการกระจายที่เล็กที่สุดตามขนาดการติดตั้ง (RAM, CPU ไม่สำคัญ)

3
ระบบไฟล์จะไม่สอดคล้องกันหากถูกขัดจังหวะเมื่อย้ายไฟล์หรือไม่?
ฉันมีสองโฟลเดอร์ในพาร์ติชันเดียวกัน (EXT2) ถ้าฉันmv folder1/file folder2และการขัดจังหวะบางอย่างเกิดขึ้น (เช่นความล้มเหลวของระบบ) ระบบไฟล์อาจจบลงด้วยการไม่สอดคล้องกันหรือไม่? mvอะตอมทำงานไม่ใช่หรือ ปรับปรุง: จนถึง IRC ฉันได้มุมมองต่อไปนี้: มันเป็นอะตอมดังนั้นความไม่สอดคล้องจึงไม่สามารถเกิดขึ้นได้ ก่อนอื่นให้คุณคัดลอกรายการ dir ใน dir ใหม่จากนั้นลบรายการใน dir ก่อนหน้าดังนั้นคุณอาจมีความไม่สอดคล้องกันของการอ้างอิงไฟล์สองครั้ง แต่จำนวนอ้างอิงคือ 1 มันจะลบตัวชี้ก่อนแล้วจึงคัดลอกตัวชี้ดังนั้นความไม่สอดคล้องกันคือไฟล์นั้นมีการอ้างอิง 0 บางคนสามารถอธิบายได้หรือไม่

4
วิธีใช้ sed เพื่อจัดการเอาต์พุตสตรีมมิ่งอย่างต่อเนื่อง?
ฉันกำลังรวบรวมการนำเสนอสำหรับผู้ชมที่ไม่ใช่ด้านเทคนิค ฉันมีโปรแกรมที่ทำงานในการทุบตีที่ส่งออกกระแสอย่างต่อเนื่องของค่าบางอย่างที่มีความสำคัญ ฉันต้องการเน้นผลลัพธ์ที่สำคัญตามที่ปรากฏเพื่อให้ผู้ชมได้รับแนวคิดเกี่ยวกับความถี่ของพวกเขา ปัญหาคือฉันไม่สามารถsedทำงานบนสตรีมที่กำลังทำงานอยู่ได้ มันทำงานได้ดีถ้าฉันใส่ผลลัพธ์ลงในไฟล์เช่นเดียวกับใน: cat output.txt | sed "s/some text/some text bolded/" แต่ถ้าฉันลองแบบเดียวกันกับเอาต์พุตที่กำลังทำงานอยู่เช่นนี้ command | sed "s/some text/some text bolded/" sedไม่ทำอะไรเลย ความคิดใด ๆ ขณะที่แลมเบิร์ตมีประโยชน์พอที่จะชี้ให้เห็นคำพูดของฉันที่sedไม่ทำอะไรคลุมเครือ สิ่งที่เกิดขึ้นคือการที่เอาท์พุทโปรแกรมstdout(ฉันค่อนข้างมั่นใจว่ามันไม่ได้เขียนไปstderr) sedตามที่ปกติแม้ว่ามันประปาผ่าน ปัญหาน่าจะเป็นที่คำสั่งเรียกโปรแกรมที่สองซึ่งจากนั้นส่งออกไปยัง stdout มีบางบรรทัดที่พิมพ์โดยโปรแกรมแรก สิ่งเหล่านี้ฉันสามารถแก้ไขได้ จากนั้นจะมีกระแสของค่าที่พิมพ์โดยโปรแกรมที่สอง สิ่งเหล่านี้ฉันไม่สามารถแก้ไขได้ วิธี Perl และ awk ไม่ทำงานเช่นกัน

1
การพิสูจน์ตัวตนและการอนุญาต D-Bus
ฉันกำลังพยายามตั้งค่าการเข้าถึงระยะไกลไปยัง D-Bus และฉันไม่เข้าใจว่าการรับรองความถูกต้องและการอนุญาต (ไม่) ทำงานได้อย่างไร ฉันมีเซิร์ฟเวอร์ D-Bus ที่ฟังบนซ็อกเก็ตแบบนามธรรม $ echo $DBUS_SESSION_BUS_ADDRESS unix:abstract=/tmp/dbus-g5sxxvDlmz,guid=49bd93b893fe40d83604952155190c31 ฉันวิ่งdbus-monitorไปดูว่าเกิดอะไรขึ้น กรณีทดสอบของฉันคือnotify-send helloซึ่งทำงานเมื่อดำเนินการจากเครื่องท้องถิ่น จากบัญชีอื่นในเครื่องเดียวกันฉันไม่สามารถเชื่อมต่อกับรถบัสนั้นได้ otheraccount$ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-g5sxxvDlmz,guid=49bd93b893fe40d83604952155190c31 dbus-monitor Failed to open connection to session bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, …

1
วิธีแก้ไข“ การข้าม /usr/lib/libc.a ที่เข้ากันไม่ได้”
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันพยายามสร้างเป้าหมาย Linux ที่ฝังอยู่ใน 64 บิต Fedora 16 (Verne): make[3]: Entering directory `/export/home/git/minerva-5.x/third_party/multifiles' mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o md5.o md5.c mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o bitmapfs.o bitmapfs.c mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o mfcln.o mfcln.c mips-linux-gnu-gcc -EL -Wl,-rpath /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/lib -L/export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/lib …
13 fedora  make  glibc 

5
ไม่สามารถดำเนินการกับไฟล์บนอุปกรณ์ MTP ที่เมาท์ผ่าน GVFS:“ ไม่รองรับการทำงาน”
ฉันใช้ Linux Mint 17.1 64 บิต (อ้างอิงจาก Ubuntu 14.04) นับตั้งแต่อัปเกรดจาก Linux Mint 14 / Ubuntu 12.10 สคริปต์ Python ที่ฉันใช้เพื่อซิงค์เพลงกับ Walkman ของฉันหยุดทำงาน ก่อนหน้านี้เมื่อฉันติดตั้ง Walkman ของฉันมันจะปรากฏเป็นพา ธ โดยอัตโนมัติ/run/user/1000/gvfs/WALKMAN/Storage Mediaและทำงานเหมือนกับระบบไฟล์อื่น ๆ : ฉันสามารถคัดลอกแทร็กไปที่มันลบแทร็กออกจากแทร็กอื่น ๆ ทั้งหมดผ่าน Python อย่างไรก็ตามฉันจำไม่ได้ว่าฉันต้องทำการเปลี่ยนแปลงอะไรเพื่อให้เรื่องนี้เกิดขึ้น ตั้งแต่การอัพเกรดลินุกซ์มิ้นท์ 17 (และตอนนี้ 17.1) เมื่อฉันติด Walkman /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C007%5D/Storage Mediaมันแสดงขึ้นเป็นเส้นทาง นอกจากนี้เมื่อฉันพยายามเรียกใช้ไฟล์เดียวกันพวกเขาก็ล้มเหลว ฉันได้ค้นพบว่าสิ่งนี้เกิดขึ้นไม่เพียงผ่าน Python เท่านั้น แต่ยังอยู่ในบรรทัดคำสั่งด้วย ตัวอย่างเช่น: david@MILTON:~$ cp …
13 linux-mint  gvfs  mtp 

6
การแยกไฟล์. gz ที่อยู่ในโฟลเดอร์
ฉันมีโฟลเดอร์ที่มีไฟล์. pdb.gz ประมาณ 320116 ฉันต้องการที่จะบีบอัดพวกเขาทั้งหมด ถ้าฉันใช้ gunzip * .gz มันทำให้ฉันมีข้อผิดพลาดคือรายการอาร์กิวเมนต์ยาวเกินไป โฟลเดอร์มีขนาดประมาณ 2GB โปรดให้คำแนะนำที่เหมาะสมแก่ฉัน
13 shell 


4
คุณจะล้างแคช arp บน linux ได้อย่างไร
ทั้งสอง: sudo ip -s -s neigh flush all และ: sudo arp -d 192.168.0.102 แทนที่จะล้างแคช arp พวกเขาดูเหมือนจะทำให้รายการไม่ถูกต้อง (พวกเขาจะปรากฏเป็นincomplete) แม้หลังจากผ่านไปครู่หนึ่งแคช ARP ก็ดูเหมือนว่า: $ arp -n Address HWtype HWaddress Flags Mask Iface 192.168.0.103 (incomplete) eth0 192.168.0.1 ether DE:AD:BE:EF:DE:AD C eth0 (MAC ของเกตเวย์ถูกรีเฟรช - ไม่เป็นไร) ฉันจะล้างแคช ARP ได้อย่างไรเช่นใน "ลบรายการทั้งหมดออกจากตาราง" ฉันไม่ต้องการเก็บรายการที่ไม่สมบูรณ์ฉันต้องการนำรายการเหล่านั้นออก เป็นไปได้ไหม แก้ไข นี่คือระบบของฉัน: » …
13 arp 

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