คำถามติดแท็ก linux

คำถามเกี่ยวกับลินุกซ์จะต้องมีการเขียนโปรแกรมที่เกี่ยวข้อง ใช้แท็กนี้เฉพาะเมื่อคำถามของคุณเกี่ยวข้องกับการเขียนโปรแกรมโดยใช้ Linux API หรือพฤติกรรมเฉพาะของ Linux ไม่ใช่เพียงเพราะคุณใช้งานโค้ดของคุณบน Linux เท่านั้น หากคุณต้องการการสนับสนุน Linux คุณสามารถลอง https://unix.stackexchange.com หรือเว็บไซต์ Stack Exchange ของ Linux ที่เผยแพร่เฉพาะเช่น https://askubuntu.com หรือ https://elementaryos.stackexchange.com/

6
ใช้คอลัมน์ที่ n ในไฟล์ข้อความ
ฉันมีไฟล์ข้อความ: 1 Q0 1657 1 19.6117 Exp 1 Q0 1410 2 18.8302 Exp 2 Q0 3078 1 18.6695 Exp 2 Q0 2434 2 14.0508 Exp 2 Q0 3129 3 13.5495 Exp ฉันต้องการใช้คำที่ 2 และ 4 ของทุกบรรทัดดังนี้: 1657 19.6117 1410 18.8302 3078 18.6695 2434 14.0508 3129 13.5495 ฉันใช้รหัสนี้: nol=$(cat "/path/of/my/text" | …
85 linux  bash 

4
dup2 / dup - ทำไมฉันต้องทำซ้ำ file descriptor?
ฉันพยายามทำความเข้าใจการใช้dup2และdup. จากหน้าคน: DESCRIPTION dup and dup2 create a copy of the file descriptor oldfd. After successful return of dup or dup2, the old and new descriptors may be used interchangeably. They share locks, file position pointers and flags; for example, if the file position is modified by using lseek on …

9
วิธีการให้ข้อโต้แย้งเพื่อฆ่าทางท่อ
ฉันต้องการค้นหากระบวนการบางอย่างและฆ่ากระบวนการนั้น ฉันเขียนคำสั่งดังนี้: ps -e | grep dmn | awk '{print $1}' | kill dmnที่ไหนชื่อกระบวนการคือ แต่มันไม่ทำงาน ฉันจะค้นหากระบวนการตามชื่อและกระบวนการkillได้อย่างไร

6
รับคำเตือน "Insecure world writable dir / home / Chance" ใน PATH โหมด 040777 สำหรับรางและอัญมณี
ฉันได้ลองสิ่งนี้แล้วแต่มันไม่ได้ทำงานและดูเหมือนจะเป็น OSX ฉันมีการติดตั้ง Ubuntu 10.10 ใหม่พร้อม rvm, ราง 3 และ Ruby 1.9.2 ฉันมีแอปรางใหม่ แต่การใช้อัญมณีหรือรางทำให้เกิดคำเตือนต่อไปนี้ (มีความล่าช้า) $ ราง -v /home/chance/.rvm/gems/ruby-1.9.2-p180@global/gems/railties-3.0.5/lib/rails/script_rails_loader.rb:11: warning: Insecure world writable dir /home/chance in PATH, mode 040777 /home/chance/.rvm/gems/ruby-1.9.2-p180@global/gems/bundler-1.0.10/lib/bundler/runtime.rb:136: warning: Insecure world writable dir /home/chance in PATH, mode 040777 Rails 3.0.5 $ อัญมณี -v /home/chance/.rvm/rubies/ruby-1.9.2-p180/bin/gem:4: warning: Insecure world writable …
85 ruby-on-rails  ruby  linux  gem  rvm 

15
หนังสือ Linux / Unix ที่ดีสำหรับผู้ใช้ขั้นสูงคืออะไร? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา มีหนังสือดีๆสำหรับผู้ใช้ * nix ที่ค่อนข้างใหม่ แต่ไม่ใหม่โดยสิ้นเชิงที่จะได้รับความรู้เชิงลึกมากขึ้น (ดังนั้นจึงไม่มี "Linux for Dummies") ส่วนใหญ่ฉันไม่ได้มองหาสิ่งที่จะอ่านตั้งแต่ต้นจนจบ แต่ฉันอยากจะมีบางอย่างที่หยิบมาอ่านเป็นชิ้น ๆ ได้เมื่อฉันต้องการรู้วิธีทำบางอย่างหรือเมื่อใดก็ตามที่ฉันมี "ฉันจะทำสิ่งนั้นอีกครั้งได้อย่างไร" ช่วงเวลา บางพื้นที่ที่ฉันต้องการเห็น ได้แก่ : การบริหารบรรทัดคำสั่ง การเขียนสคริปต์ทุบตี การเขียนโปรแกรม (แม้ว่าฉันต้องการบางสิ่งที่ไม่เกี่ยวข้องกับโปรแกรมเมอร์ C) ฉันต้องการให้สิ่งนี้เป็นไปตามแพลตฟอร์มที่เป็นไปได้ (หมายความว่ามีข้อมูลที่เกี่ยวข้องกับ linux distro ใด ๆ เช่นเดียวกับ BSD, Solaris, OS X ฯลฯ ) แต่ระบบยูนิกซ์ที่ฉันใช้มากที่สุดคือ OS X และ Debian / …

18
Ubuntu - ข้อผิดพลาด: สร้างการ์ด SD ไม่สำเร็จ
ฉันเห็นโพสต์มากมายเกี่ยวกับการเขียนลงในการ์ด SD แต่ฉันเชื่อว่าปัญหาของฉันแตกต่างกัน ฉันไม่สามารถสร้างการ์ด SD ในระหว่างขั้นตอนการสร้าง AVD ตอนแรกฉันพยายามใช้ Android SDK และ AVD Manager เพื่อทำสิ่งนี้โดยเลือก ชื่อ : my_avd Target : Android 2.2 - API ระดับ 8 การ์ด SD : ขนาด: 1024 MiB Skin : Built-In: Default (HVGA) ฮาร์ดแวร์ : คุณสมบัติ: Abstracted LCD ความหนาแน่นค่า: 160 หน้าต่างจะปรากฏขึ้นพร้อมข้อความ: "ผลลัพธ์ของการสร้าง AVD 'my_avd': ข้อผิดพลาด: ไม่สามารถสร้างการ์ด SD …
84 android  linux  ubuntu 

1
3> & 1 หมายถึง 4> & 3 5> & 3 ฯลฯ หรือไม่
ฉันคาดหวัง echo foo | tee /proc/self/fd/{3..6} 3>&1 ล้มเหลวด้วยข้อผิดพลาดเช่น/ proc / self / fd / 4: ไม่มีไฟล์หรือไดเร็กตอรี่อื่น ๆ , แต่ด้วยความประหลาดใจของฉัน, มันแสดงผลออกมา foo foo foo foo foo มันเป็น3>&1สาเหตุทำให้ตัวบอกรายละเอียดทั้งหมดต่อไปนี้ถูกเปลี่ยนเส้นทางไปยัง stdout ยกเว้นว่าจะไม่ทำงานหากฉันเปลี่ยน3เป็นอย่างอื่นเช่น $ echo foo | tee /proc/self/fd/{3..6} 4>&1 tee: /proc/self/fd/3: No such file or directory tee: /proc/self/fd/5: No such file or directory tee: …

1
ทำไมการเขียนทิ้งไบต์ 4K อย่างต่อเนื่องในบัฟเฟอร์
ฉันมีรหัสต่อไปนี้เป็นหลัก: int fileWrite(int file, void * pBuffer, size_t size) { size_t bytesWritten = (size_t)write( file, pBuffer, size ) ; if (bytesWritten != size) { return -1; } return 0; } มันทำงานได้ถ้าขนาดคือ 1GB แต่เมื่อขนาดเป็น ~ 2GB มันจะเหลือ 4K ไบต์อย่างสม่ำเสมอ ฉันสามารถแก้ไขได้โดยการเขียนการวนซ้ำและย้ายบัฟเฟอร์ขึ้น แต่ฉันอยากรู้ว่าทำไมมันล้มเหลวอยู่เสมอ ตัวอย่างเช่นถ้าขนาดคือ 2147483648 เขียนเฉพาะเขียน 2147479552 ปล่อย 4096 ไม่ได้เขียน ทำไมสิ่งนี้ถึงเกิดขึ้นและถูกต้องหรือไม่ที่จะเขียนการวนซ้ำ
30 c  linux  system-calls 

1
เหตุใดที่อยู่ของ __libc_start_main จึงเหมือนกันภายใน GDB แม้ว่า ASLR จะเปิดอยู่
Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/firstlove/projects/org-ioslide/example/a.out Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it …
16 c  linux  gdb  libc  aslr 

2
การส่ง TCP พื้นที่ผู้ใช้ที่ไม่มีการคัดลอกของหน่วยความจำที่แมป dma_mmap_coherent ()
ฉันใช้ Linux 5.1 บน Cyclone V SoC ซึ่งเป็น FPGA ที่มีสอง ARMv7 cores ในหนึ่งชิป เป้าหมายของฉันคือการรวบรวมข้อมูลจำนวนมากจากอินเทอร์เฟซภายนอกและสตรีม (ส่วนหนึ่ง) ข้อมูลนี้ผ่านทางซ็อกเก็ต TCP ความท้าทายที่นี่คืออัตราข้อมูลสูงมากและอาจเข้าใกล้อินเทอร์เฟซ GbE ที่อิ่มตัว ฉันมีการนำไปใช้งานที่ใช้การwrite()เรียกไปยังซ็อกเก็ต แต่มันใช้งานได้ที่ 55MB / s; ประมาณครึ่งหนึ่งของขีด จำกัด GbE ตามทฤษฎี ตอนนี้ฉันกำลังพยายามให้การส่ง TCP เป็นศูนย์คัดลอกเพื่อเพิ่มปริมาณงาน แต่ฉันชนกำแพง เพื่อให้ได้ข้อมูลจาก FPGA ลงในพื้นที่ผู้ใช้ Linux ฉันได้เขียนไดรเวอร์เคอร์เนล ไดรเวอร์นี้ใช้บล็อก DMA ใน FPGA เพื่อคัดลอกข้อมูลจำนวนมากจากอินเทอร์เฟซภายนอกไปยังหน่วยความจำ DDR3 ที่ต่ออยู่กับแกน ARMv7 จัดสรรโปรแกรมควบคุมหน่วยความจำนี้เป็นพวงของบัฟเฟอร์ 1MB ต่อเนื่องกันเมื่อตรวจสอบโดยใช้dma_alloc_coherent()กับGFP_USERและ exposes …

3
ไม่สามารถโหลดไลบรารีแบบไดนามิก 'libnvinfer.so.6'
ฉันพยายามนำเข้าแพคเกจหลาม TensorFlow ปกติ แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: นี่คือข้อความจากภาพเทอร์มินัลด้านบน: 2020-02-23 19:01:06.163940: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer.so.6'; dlerror: libnvinfer.so.6: cannot open shared object file: No such file or directory 2020-02-23 19:01:06.164019: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libnvinfer_plugin.so.6'; dlerror: libnvinfer_plugin.so.6: cannot open shared object file: No such file or directory 2020-02-23 …

5
ไม่มีการระบุเหตุการณ์ที่ไม่ได้ระบุ
ฉันกำลังดูไฟล์สำหรับการเปลี่ยนแปลงโดยใช้ inotify เหตุการณ์ (มันเกิดขึ้นจาก Python โทรเข้า libc) สำหรับไฟล์บางช่วงgit cloneผมเห็นบางสิ่งบางอย่างที่แปลก: ผมเห็นIN_CREATEเหตุการณ์และฉันเห็นทางlsว่าไฟล์มีเนื้อหา แต่ผมไม่เคยเห็นหรือIN_MODIFY IN_CLOSE_WRITEนี่เป็นสาเหตุให้ฉันมีปัญหาเนื่องจากฉันต้องการตอบกลับIN_CLOSE_WRITEในไฟล์: โดยเฉพาะเพื่อเริ่มต้นการอัปโหลดเนื้อหาไฟล์ แฟ้มที่มีพฤติกรรมผิดปกติอยู่ใน.git/objects/packไดเรกทอรีและพวกเขาสิ้นสุดในหรือ.pack .idxไฟล์อื่น ๆ ที่คอมไพล์สร้างมีเชนมากกว่าปกติIN_CREATE-> IN_MODIFY-> IN_CLOSE_WRITE(ฉันไม่ได้ดูIN_OPENเหตุการณ์) นี่คือ Docker บน MacOS แต่ฉันได้เห็นหลักฐานของ Docker บน Linux ในระบบรีโมตแล้วดังนั้นความสงสัยของฉันคือ MacOS นั้นไม่เกี่ยวข้องกัน ฉันเห็นสิ่งนี้หากกำลังดูและgit cloneอยู่ในคอนเทนเนอร์นักเทียบท่าเดียวกัน คำถามของฉัน: เหตุใดเหตุการณ์เหล่านี้จึงหายไปในไฟล์เหล่านี้ สิ่งที่สามารถทำได้เกี่ยวกับมันได้หรือไม่ โดยเฉพาะฉันจะตอบสนองต่อความสมบูรณ์ของการเขียนไฟล์เหล่านี้ได้อย่างไร? หมายเหตุ: นึกคิดฉันต้องการตอบสนองเมื่อการเขียนเป็น "เสร็จสิ้น" เพื่อหลีกเลี่ยงความจำเป็น / (ไม่ถูกต้อง) การอัปโหลดการเขียน "ยังไม่เสร็จ" แก้ไข: การอ่านhttps://developer.ibm.com/tutorials/l-inotify/ดูเหมือนว่าสิ่งที่ฉันเห็นมีความสอดคล้องกับ ไฟล์ชั่วคราวแยกต่างหากที่มีชื่อเหมือนtmp_pack_hBV4Alzกำลังสร้างแก้ไขและปิด สร้างฮาร์ดลิงก์ไปยังไฟล์นี้โดยใช้.packชื่อสุดท้าย tmp_pack_hBV4Alzชื่อเดิมจะถูกลบ ฉันคิดว่าปัญหาของฉันซึ่งพยายามใช้ …
11 linux  git  docker  libc  inotify 

1
lsb_release: ไม่พบคำสั่งในคอนเทนเนอร์ Ubuntu Docker ล่าสุด
ฉันแค่อยากจะทดสอบสิ่งที่รวดเร็วจริง ๆ ดังนั้นฉันจึงวิ่งคอนเทนเนอร์นักเทียบท่าและฉันต้องการตรวจสอบรุ่นที่ฉันใช้อยู่: $ docker run -it ubuntu root@471bdb08b11a:/# lsb_release -a bash: lsb_release: command not found root@471bdb08b11a:/# ดังนั้นฉันจึงลองติดตั้ง (ตามที่แนะนำไว้ที่นี่ ): root@471bdb08b11a:/# apt install lsb_release Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package lsb_release root@471bdb08b11a:/# มีใครทราบบ้างไหมว่าทำไมสิ่งนี้ถึงไม่ทำงาน

5
การเชื่อมโยงแบบไดนามิก - Vs Linux ของ windows
ใน Windows เมื่อฉันรวบรวมรหัส C / C ++ ในโครงการ DLL ใน MSVC ฉันได้รับ 2 ไฟล์: MyDll.dll MyDll.lib ที่เท่าที่ฉันเข้าใจMyDll.libมีชนิดของตารางตัวชี้ที่ระบุตำแหน่งฟังก์ชั่นใน dll เมื่อใช้ dll นี้พูดในไฟล์ exe MyDll.libจะถูกฝังลงในไฟล์ exe ในระหว่างการเชื่อมโยงดังนั้นในขณะรันไทม์มัน "รู้" ซึ่งฟังก์ชั่นตั้งอยู่ในMyDll.dllและสามารถใช้งานได้ แต่ถ้าฉันรวบรวมรหัสเดียวกันภายใต้ Linux ฉันได้รับเพียงไฟล์เดียวMySo.soโดยไม่ MySo.a(เทียบเท่ากับlibไฟล์ใน Linux) ดังนั้นไฟล์ปฏิบัติการภายใต้ Linux รู้ได้อย่างไรว่าฟังก์ชั่นตั้งอยู่ที่ไหนMySo.soถ้าไม่มีอะไรฝังอยู่ในระหว่างการเชื่อมโยง?

1
ป้องกันกระบวนการจากการเปิดไฟล์ descriptor ใหม่บน Linux แต่อนุญาตให้รับไฟล์ descriptor ผ่านซ็อกเก็ต
ขณะนี้ฉันกำลังทำงานในโครงการที่ฉันมีกระบวนการผู้ปกครองที่ตั้งค่า socketpair ส้อมและจากนั้นใช้ socketpair นี้เพื่อสื่อสาร เด็กถ้ามันต้องการที่จะเปิดไฟล์ (หรือทรัพยากรอื่น ๆ ที่ใช้อธิบายไฟล์อื่น ๆ ) ควรจะไปที่ผู้ปกครองขอทรัพยากรและได้รับการfdส่งผ่าน socketpair นอกจากนี้ฉันต้องการป้องกันเด็กจากการเปิดไฟล์ descriptor ใด ๆ ด้วยตัวเอง ฉันสะดุดsetrlimitซึ่งประสบความสำเร็จในการป้องกันเด็กจากการเปิดไฟล์ descriptors ใหม่ แต่ก็ดูเหมือนว่าจะทำให้โมเดอเรเตอร์ไฟล์ใด ๆ ที่ส่งผ่านการเชื่อมต่อซ็อกเก็ตเริ่มต้นใช้งานไม่ได้ มีวิธีการใด ๆ บน Linux ที่อนุญาตให้กระบวนการเดี่ยวเปิดไฟล์ใด ๆ ส่งไฟล์ descriptor ไปยังกระบวนการอื่นและอนุญาตให้ใช้โดยไม่อนุญาตให้กระบวนการอื่นเปิดไฟล์ descriptor ด้วยตัวเอง? สำหรับกรณีการใช้งานของฉันที่สามารถกำหนดค่าเคอร์เนลใด ๆ การเรียกของระบบและอื่น ๆ ตราบใดที่มันสามารถใช้หลังจาก fork และตราบใดที่มันใช้กับตัวอธิบายไฟล์ทั้งหมด (ไม่ใช่แค่ไฟล์ แต่ยังซ็อกเก็ตซ็อกเก็ตคู่ ฯลฯ )
9 c  linux  system-calls 

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