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

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

4
ไม่พบการติดตั้งอึกในเครื่องแม้ว่าจะติดตั้ง npm install -g gulp แล้วก็ตาม
ฉันพยายามติดตั้งอึกโดย npm install -g gulp ผลลัพธ์น่าจะเป็นแบบนี้ (ฉันได้ข้ามบันทึกบางส่วน) npm http 304 https://registry.npmjs.org/string_decoder npm http 304 https://registry.npmjs.org/lodash._htmlescapes /usr/bin/gulp -> /usr/lib/node_modules/gulp/bin/gulp.js gulp@3.6.2 /usr/lib/node_modules/gulp ├── tildify@0.2.0 ├── pretty-hrtime@0.2.1 ├── deprecated@0.0.1 ├── archy@0.0.2 ├── semver@2.2.1 ├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1) ├── orchestrator@0.3.3 (sequencify@0.0.7) ├── liftoff@0.9.8 (extend@1.2.1, minimist@0.0.8, resolve@0.6.3, findup-sync@0.1.3) ├── vinyl-fs@0.1.4 (graceful-fs@2.0.3, map-stream@0.1.0, mkdirp@0.3.5, vinyl@0.2.3, …
88 linux  ubuntu  gulp 


7
วิธีหยุดกระบวนการ java อย่างสง่างาม?
ฉันจะหยุดกระบวนการ Java อย่างสง่างามใน Linux และ Windows ได้อย่างไร Runtime.getRuntime().addShutdownHookเรียกเมื่อใดและไม่ได้รับเมื่อใด แล้วเข้ารอบสุดท้ายพวกเขาช่วยอะไรที่นี่? ฉันสามารถส่งสัญญาณบางประเภทไปยังกระบวนการ Java จากเชลล์ได้หรือไม่ ฉันกำลังมองหาโซลูชันแบบพกพาที่ดีกว่า
88 java  linux  windows  shell  process 

3
ทำความเข้าใจกับบันทึกของ Linux oom-killer
แอพของฉันถูกฆ่าโดย oom-killer เป็น Ubuntu 11.10 ที่ทำงานบน USB สดโดยไม่มีการแลกเปลี่ยนและพีซีมี RAM 1 Gig แอปเดียวที่ทำงานอยู่ (นอกเหนือจากสิ่งที่สร้างขึ้นใน Ubuntu ทั้งหมด) คือโปรแกรม flasherav ของฉัน โปรดทราบว่า / tmp ถูกแมปหน่วยความจำและในขณะที่เกิดปัญหามีไฟล์อยู่ในนั้นประมาณ 200MB (ดังนั้นจึงใช้ RAM มากถึง 200MB) ฉันพยายามที่จะเข้าใจวิธีวิเคราะห์บันทึก om-killer เพื่อที่ฉันจะเข้าใจว่าหน่วยความจำทั้งหมดถูกใช้ไปที่ใดนั่นคือชิ้นส่วนต่าง ๆ ที่จะรวมกันได้ถึง ~ 1 กิ๊กซึ่งส่งผลให้เกิดการเตะโอม - เพชฌฆาต ใน? เมื่อฉันเข้าใจแล้วฉันสามารถลดการใช้งานของผู้กระทำความผิดเพื่อให้แอปทำงานบนเครื่องที่มีหน่วยความจำ 1 GB คำถามเฉพาะของฉันคือ เพื่อพยายามวิเคราะห์สถานการณ์ฉันสรุปคอลัมน์ "total_vm" และฉันได้รับเพียง 609342KB (ซึ่งเมื่อเพิ่มเข้าไปใน 200MB ใน / …

6
ใช้คำสั่ง find แต่ไม่รวมไฟล์ในสองไดเร็กทอรี
ฉันต้องการค้นหาไฟล์ที่ลงท้ายด้วย_peaks.bedแต่ไม่รวมไฟล์ในtmpและscriptsโฟลเดอร์ คำสั่งของฉันเป็นดังนี้: find . -type f \( -name "*_peaks.bed" ! -name "*tmp*" ! -name "*scripts*" \) แต่มันไม่ได้ผล ไฟล์ในtmpและscriptโฟลเดอร์จะยังคงแสดงอยู่ ใครมีความคิดเกี่ยวกับเรื่องนี้?
88 linux  shell  unix  find 

3
ตั้งค่าแท็บ cron ตามเวลาที่กำหนดในช่วงวันธรรมดา
ฉันพยายามตั้งค่างาน cron บนเซิร์ฟเวอร์ Ubuntu เราต้องการให้งาน cron เรียกใช้สคริปต์ในบางช่วงเวลาของวันและในบางวันของสัปดาห์ ตัวอย่างเช่นเราต้องการตั้งค่างาน cron ที่รันสคริปต์ตามลำดับต่อไปนี้: เรียกใช้สคริปต์ทุกๆ 2 นาทีตั้งแต่ 9.00 น. ถึง 14.00 น. ในช่วงวันธรรมดา นี่คือสิ่งที่ฉันทำได้จนถึงตอนนี้: * / 2 09-14 * * * / path_to_script วันธรรมดาควรทำอย่างไร
88 linux  cron 

3
การใช้ gdb กับโค้ดแอสเซมบลีขั้นตอนเดียวที่นอกเหนือจากปฏิบัติการที่ระบุทำให้เกิดข้อผิดพลาด“ ไม่พบขอบเขตของฟังก์ชันปัจจุบัน”
ฉันอยู่นอกเป้าหมายปฏิบัติการของ gdb และฉันไม่มีสแต็กที่ตรงกับเป้าหมายนั้นด้วยซ้ำ ฉันต้องการทำทีละขั้นตอนเพื่อที่ฉันจะได้ตรวจสอบว่าเกิดอะไรขึ้นในรหัสแอสเซมบลีของฉันเพราะฉันไม่ใช่ผู้เชี่ยวชาญในการประกอบ x86 น่าเสียดายที่ gdb ปฏิเสธที่จะทำการดีบักระดับแอสเซมบลีอย่างง่ายนี้ ช่วยให้ฉันสามารถตั้งค่าและหยุดบนเบรกพอยต์ที่เหมาะสมได้ แต่ทันทีที่ฉันพยายามทำทีละขั้นตอนเป็นต้นไป gdb รายงานข้อผิดพลาด "ไม่พบขอบเขตของฟังก์ชันปัจจุบัน" และ EIP จะไม่เปลี่ยนแปลง รายละเอียดเพิ่มเติม: รหัสเครื่องถูกสร้างขึ้นโดยคำสั่ง gcc asm และฉันคัดลอกไปยังตำแหน่งหน่วยความจำเคอร์เนลที่มันทำงานจากเอาต์พุตของ objdump -d ฉันไม่รังเกียจวิธีง่ายๆในการใช้ตัวโหลดเพื่อโหลดรหัสออบเจ็กต์ของฉันไปยังที่อยู่ที่ย้ายตำแหน่ง แต่จำไว้ว่าการโหลดจะต้องทำในโมดูลเคอร์เนล ฉันคิดว่าอีกทางเลือกหนึ่งคือการสร้างโมดูลเคอร์เนลปลอมหรือไฟล์ข้อมูลการดีบักเพื่อมอบให้กับ gdb เพื่อทำให้เชื่อว่าพื้นที่นี้อยู่ในโค้ดโปรแกรม gdb ทำงานได้ดีบนเคอร์เนลที่รันได้เอง (สำหรับผู้ที่ต้องการทราบจริงๆฉันกำลังแทรกโค้ดที่รันไทม์ลงในพื้นที่ข้อมูลเคอร์เนลของลินุกซ์ภายใน VMware VM และทำการดีบักจาก gdb รีโมตดีบักเคอร์เนลผ่าน gdb ในตัวของ VMware Workstation หมายเหตุฉันไม่ได้เขียนเคอร์เนล หาประโยชน์ฉันเป็นนักศึกษาระดับบัณฑิตศึกษาด้านความปลอดภัยที่เขียนต้นแบบ) (ฉันสามารถตั้งค่าเบรกพอยต์สำหรับแต่ละคำสั่งภายในแอสเซมบลีของฉันได้ซึ่งใช้งานได้ แต่จะค่อนข้างลำบากหลังจากนั้นสักครู่เนื่องจากขนาดของคำแนะนำการประกอบ x86 จะแตกต่างกันไปและตำแหน่งของการประกอบจะเปลี่ยนไปทุกครั้งที่รีบูต)

11
แยกไฟล์หนึ่งไฟล์ออกเป็นหลายไฟล์ตามตัวคั่น
ฉันมีไฟล์เดียวที่มี-|ตัวคั่นหลังแต่ละส่วน ... จำเป็นต้องสร้างไฟล์แยกกันสำหรับแต่ละส่วนโดยใช้ยูนิกซ์ ตัวอย่างของไฟล์อินพุต wertretr ewretrtret 1212132323 000232 -| ereteertetet 232434234 erewesdfsfsfs 0234342343 -| jdhg3875jdfsgfd sjdhfdbfjds 347674657435 -| ผลลัพธ์ที่คาดหวังในไฟล์ 1 wertretr ewretrtret 1212132323 000232 -| ผลลัพธ์ที่คาดหวังในไฟล์ 2 ereteertetet 232434234 erewesdfsfsfs 0234342343 -| ผลลัพธ์ที่คาดหวังในไฟล์ 3 jdhg3875jdfsgfd sjdhfdbfjds 347674657435 -|
88 linux  unix  awk  split 

9
คุณแตกต่างไดเร็กทอรีสำหรับเฉพาะไฟล์บางประเภทได้อย่างไร?
ฉันมีคำถามเกี่ยวกับคำสั่ง diff หากฉันต้องการให้ไดเร็กทอรีแบบเรียกซ้ำ diff แต่สำหรับไฟล์บางประเภทเท่านั้นจะทำอย่างไร ฉันลองใช้ตัวเลือกการยกเว้น แต่สามารถใช้ได้เพียงรูปแบบเดียวเท่านั้น: $ diff /destination/dir/1 /destination/dir/2 -r -x *.xml ที่มีคำสั่งฉันเท่านั้นที่สามารถแยกประเภทของไฟล์ XML, แม้ว่าจะมีไฟล์ในรูปแบบภาพโฟลเดอร์ ( png, gif, jpg) txt, phpฯลฯ วิธีการแตกต่างเฉพาะไฟล์บางประเภท
88 linux  bash 

5
หน้าจอ GNU ไม่ตอบสนองดูเหมือนถูกบล็อก
หน้าจอ GNU ดูเหมือนจะค้าง ไม่สามารถป้อนข้อมูลของผู้ใช้ ฉันใช้หน้าจอ GNU และเมื่อฉันกดหน้าจอมันก็ไม่ตอบสนอง ฉันสามารถเรียกใช้คำสั่งหน้าจอ GNU ทั้งหมดได้ แต่ป้อนข้อมูลของผู้ใช้ไม่ได้ ฉันไม่อยากฆ่าหน้าจอนี้เพราะฉันมีงานสำคัญและฉันไม่อยากเสียมันไป

10
แยกผลลัพธ์ของคำสั่งตามคอลัมน์โดยใช้ Bash?
ฉันต้องการทำสิ่งนี้: เรียกใช้คำสั่ง จับเอาท์พุท เลือกบรรทัด เลือกคอลัมน์ของบรรทัดนั้น ตัวอย่างเช่นสมมติว่าฉันต้องการรับชื่อคำสั่งจาก a $PID(โปรดทราบว่านี่เป็นเพียงตัวอย่างฉันไม่ได้แนะนำว่านี่เป็นวิธีที่ง่ายที่สุดในการรับชื่อคำสั่งจากรหัสกระบวนการ - ปัญหาจริงของฉันคือ คำสั่งอื่นที่มีรูปแบบผลลัพธ์ที่ฉันไม่สามารถควบคุมได้) ถ้าฉันวิ่งpsฉันจะได้รับ: PID TTY TIME CMD 11383 pts/1 00:00:00 bash 11771 pts/1 00:00:00 ps ตอนนี้ฉันทำps | egrep 11383และได้รับ 11383 pts/1 00:00:00 bash ขั้นตอนต่อไป: ps | egrep 11383 | cut -d" " -f 4. ผลลัพธ์คือ: <absolutely nothing/> ปัญหาคือcutตัดเอาต์พุตด้วยช่องว่างเดียวและเมื่อpsเพิ่มช่องว่างระหว่างคอลัมน์ที่ 2 และ 3 …
88 linux  bash  pipe 

9
วิธี จำกัด ผู้ใช้ SSH ให้เป็นชุดคำสั่งที่กำหนดไว้ล่วงหน้าหลังจากเข้าสู่ระบบ?
นี่เป็นแนวคิดสำหรับการรักษาความปลอดภัย พนักงานของเราจะสามารถเข้าถึงคำสั่งบางอย่างบนเซิร์ฟเวอร์ linux ได้ แต่ไม่ใช่ทั้งหมด พวกเขาจะต้องมีความเป็นไปได้ในการเข้าถึงไฟล์บันทึก ( less logfile) หรือเริ่มคำสั่งต่างๆ ( shutdown.sh/ run.sh) ข้อมูลพื้นฐาน: พนักงานทุกคนเข้าถึงเซิร์ฟเวอร์ด้วยชื่อผู้ใช้เดียวกัน: ผลิตภัณฑ์ของเราทำงานโดยใช้สิทธิ์ผู้ใช้ "ปกติ" ไม่จำเป็นต้อง "ติดตั้ง" เพียงแค่เปิดเครื่องรูดในผู้ใช้ของคุณและเรียกใช้ เราจัดการเซิร์ฟเวอร์หลายเครื่องที่ "ติดตั้ง" แอปพลิเคชันของเรา johndoeทุกเครื่องมีการใช้ บางครั้งพนักงานของเราจำเป็นต้องเข้าถึงแอปพลิเคชันบนบรรทัดคำสั่งเพื่อเข้าถึงและตรวจสอบไฟล์บันทึกหรือเพื่อเริ่มต้นแอปพลิเคชันด้วยมือ มีเพียงบางคนเท่านั้นที่สามารถเข้าถึงบรรทัดคำสั่งได้ เรากำลังใช้การพิสูจน์ตัวตน ppk บนเซิร์ฟเวอร์ จะดีมากถ้าพนักงาน 1 สามารถเข้าถึงไฟล์บันทึกได้เท่านั้นและพนักงาน 2 ก็สามารถทำ X ได้เช่นกัน ... วิธีแก้ปัญหา: ฉันจะใช้commandตัวเลือกตามที่ระบุไว้ในคำตอบที่ยอมรับ ฉันจะสร้างเชลล์สคริปต์เล็ก ๆ ของฉันเองซึ่งจะเป็นไฟล์เดียวที่สามารถเรียกใช้งานได้สำหรับพนักงานบางคน สคริปต์จะเสนอคำสั่งหลายคำสั่งที่สามารถดำเนินการได้ แต่ไม่มีคำสั่งอื่น ฉันจะใช้พารามิเตอร์ต่อไปนี้authorized_keysจากที่ระบุไว้ที่นี่ : command="/bin/myscript.sh",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-dss AAAAB3....o9M9qz4xqGCqGXoJw= user@host …
88 linux  shell  ssh 

4
การรัน jmap ทำให้ไม่สามารถเปิดไฟล์ซ็อกเก็ตได้
ฉันต้องรันjmapเพื่อที่จะถ่ายฮีปดัมพ์ของกระบวนการของฉัน แต่jvmกลับ: Unable to open socket file: target process not responding or HotSpot VM not loaded The -F option can be used when the target process is not responding ดังนั้นฉันจึงใช้-F: ./jmap -F -dump:format=b,file=heap.bin 10330 Attaching to process ID 10331, please wait... Debugger attached successfully. Server compiler detected. JVM version is …
88 java  linux  jvm  jvm-hotspot 

4
ทำไม rand () ทำซ้ำตัวเลขบ่อยกว่าบน Linux มากกว่า Mac?
ฉันใช้ hashmap ใน C เป็นส่วนหนึ่งของโครงการที่ฉันกำลังทำงานและใช้การแทรกแบบสุ่มเพื่อทดสอบเมื่อฉันสังเกตเห็นว่าrand()บน Linux ดูเหมือนว่าจะซ้ำตัวเลขบ่อยกว่าบน Mac RAND_MAXคือ 2147483647 / 0x7FFFFFFF บนทั้งสองแพลตฟอร์ม ฉันได้ลดขนาดลงในโปรแกรมทดสอบนี้ที่ทำให้อาร์เรย์แบบRAND_MAX+1ยาว - ยาวสร้างRAND_MAXตัวเลขแบบสุ่มบันทึกว่าแต่ละรายการซ้ำกันหรือไม่และตรวจสอบออกจากรายการตามที่เห็น #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { size_t size = ((size_t)RAND_MAX) + 1; char *randoms = calloc(size, sizeof(char)); int dups = 0; srand(time(0)); for (int i = 0; i < …
87 c  linux  macos  random 

5
ใน LINUX กำหนดว่า. a library / archive 32-bit หรือ 64-bit?
เราแจกจ่าย lib แบบคงที่ใน Linux ทั้งในเวอร์ชัน 64 บิตและ 32 บิต เมื่อแก้ไขปัญหาลูกค้าฉันต้องการให้เชลล์สคริปต์การวินิจฉัยของฉันกำจัดปัญหาอย่างรวดเร็วโดยการตรวจสอบไฟล์. a archive เพื่อตรวจสอบว่าเป็น 32 หรือ 64 บิต วิธีการที่เกิดขึ้นกับฉันน้อยกว่าที่หรูหรา: แยกสมาชิก. o และถามคำสั่ง "ไฟล์" (เช่น ELF 32 บิตเป็นต้น) เริ่มต้นรวมสมาชิกจำลองที่เข้ารหัสเพื่อระบุเช่น 32bit.o / 64bit.o และใช้ "ar -t" เพื่อตรวจสอบ ฉันได้ลองใช้ "strings xyz.a | grep 32" แล้ว แต่มันใช้ได้ไม่ดีในเวอร์ชันต่างๆ ไม่ใช่ปัญหาอกหัก แต่ถ้าคุณรู้วิธีแก้ปัญหาที่สวยงามฉันก็อยากจะรู้

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