Unix & Linux

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

5
วิธีการจำคำสั่งก่อนหน้า (โดยไม่มีการดำเนินการ) เพื่อเปลี่ยนคำสั่ง?
ฉันจำเคล็ดลับที่ฉันไม่สามารถเรียกใช้คำสั่งล่าสุดโดยไม่เรียกใช้: สมมติว่าฉันต้องการที่จะสามารถเข้าถึงคำสั่งได้! 1255 เมื่อกดปุ่มลูกศรขึ้นและแก้ไขคำสั่ง ดังนั้นเคล็ดลับในการเรียกคำสั่งทำให้มันปรากฏขึ้นในบรรทัดคำสั่ง แต่ไม่ได้ดำเนินการและหลังจากนั้นสามารถเข้าถึงได้ผ่านทางปุ่มลูกศรขึ้น? ฉันพยายามใส่เสียงก้อง แต่จากนั้นฉันก็มีเสียงก้องต่อคำสั่งฉันจำไม่ได้ว่าทำอย่างถูกต้อง

2
ฉันจะเพิ่มพื้นที่สว็อปสูงสุดใน Mac OS X ได้อย่างไร
ใน Mac OS X Yosemite 10.10.5 เมื่อฉันพยายามเรียกใช้การคำนวณที่จำเป็นต้องจัดสรรและใช้หน่วยความจำ 128 GB (เป็นโปรแกรมบรรทัดคำสั่งที่เขียนด้วย C) เคอร์เนลจะฆ่ากระบวนการของฉันด้วยอคติอย่างรุนแรง รายการบันทึกคอนโซลนี้เป็นตัวอย่างหนึ่งอินสแตนซ์: 9/25/15 7: 08: 40.000 PM เคอร์เนล [0]: การแลกเปลี่ยนต่ำ: ฆ่า pid 6202 (huffgrp) การคำนวณใช้งานได้ดีและใช้เวลาพอสมควรเมื่อจัดสรรและใช้หน่วยความจำ 64 GB Mac ของฉันมี RAM ขนาด 32 GB และพื้นที่ว่างบนฮาร์ดไดรฟ์ ฉันยังลองใช้มันใน Mac เครื่องอื่นที่มี RAM ขนาด 8 GB ซึ่งการคำนวณ 64 GB ก็ทำงานได้ดีเช่นกันใช้เวลานานขึ้น แต่การคำนวณ 128 GB ก็ถูกฆ่าโดยเคอร์เนลด้วยวิธีเดียวกัน …

9
วิธีเชื่อมโยงคำสั่ง 'date -d @xxxxxx' และ 'find ./' ได้อย่างไร
ฉันมีไดเรกทอรีที่ชื่อ timestamps ให้ในมิลลิวินาทีตั้งแต่ 1970-01-01: 1439715011728 1439793321429 1439879712214 . . และฉันต้องการผลลัพธ์เช่น: 1442039711 Sat Sep 12 08:35:11 CEST 2015 1442134211 Sun Sep 13 10:50:11 CEST 2015 1442212521 Mon Sep 14 08:35:21 CEST 2015 . . ฉันสามารถแสดงรายการไดเรกทอรีทั้งหมดตามคำสั่ง: find ./ -type d | cut -c 3-12 แต่ฉันไม่สามารถใส่เอาต์พุตไปที่คำสั่งถัดไป: date -d @xxxxxxและจัดการกับเอาต์พุต ฉันจะทำสิ่งนี้ได้อย่างไร
14 shell  find  date 

3
ทำให้กระบวนการไม่มีทักษะบน Linux
ฉันกำลังทำงานกับแอปพลิเคชันตัวจัดการรหัสผ่านและเพื่อเหตุผลด้านความปลอดภัยฉันต้องการเปิดใช้งานกระบวนการที่ไม่มีทักษะ นอกจากนี้ฉันไม่ต้องการให้โปรแกรมนี้เป็นดีมอนเพราะฉันต้องอ่านจากอินพุตมาตรฐานและเขียนลงไป มีวิธีทำเช่นนี้หรือไม่?
14 linux  process  kill 

2
วิธีที่เร็วที่สุดในการลบรายการที่ซ้ำกันในรายการคำศัพท์ขนาดใหญ่?
ฉันต้องทำรายการคำซ้ำให้ซ้ำซ้อน ฉันลองใช้หลายคำสั่งและทำการวิจัยที่นี่และที่นี่ซึ่งพวกเขาอธิบายว่าวิธีที่เร็วที่สุดในการขจัดความซ้ำซ้อนของรายการคำดูเหมือนจะใช้ awk awk -> O (n)? จัดเรียง -> O (n บันทึก n)? อย่างไรก็ตามฉันพบว่าสิ่งนี้ดูเหมือนจะไม่เป็นความจริง นี่คือผลการทดสอบของฉัน: sort -u input.txt -o output.txt จริง 0m12.446s ผู้ใช้ 0m11.347s sys 0m0.906s awk '!x[$0]++' input.txt > output.txt ผู้ใช้0m47.221s จริง0m45.419s sys 0m1.260s ดังนั้นการใช้ sort -u จึงเร็วกว่า 3.7 เท่า ทำไมนี้ มีวิธีที่เร็วยิ่งขึ้นในการทำซ้ำซ้อน? *********** อัปเดต ******** เมื่อมีคนชี้ให้เห็นในความคิดเห็นอาจเป็นไปได้ว่ารายการคำศัพท์ของฉันเรียงลำดับแล้วบ้าง เพื่อแยกความเป็นไปได้นี้ฉันสร้าง wordlist สองรายการโดยใช้สคริปต์ …
14 bash  awk  performance  sort 


4
เรียงลำดับบรรทัดตามจำนวนคำต่อบรรทัด
รับอินพุต: hello: world foo bar baz bar: baz: bin boop bop fiz bang beep bap: bim bam bop boatkeeper: poughkeepsie ฉันต้องการเรียงลำดับเป็นคำส่วนใหญ่ที่ด้านบนสุดไปจนถึงท้ายที่สุดเช่น: baz: bin boop bop fiz bang beep hello: world foo bar baz bap: bim bam bop boatkeeper: poughkeepsie bar: ฉันจะทำสิ่งนี้กับsortเครื่องมืออื่น ๆ ได้อย่างไร?

3
จะลบคอลัมน์หรือหลายคอลัมน์ออกจากไฟล์โดยใช้คำสั่ง shell ได้อย่างไร
ไฟล์ของฉัน ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT INFO_NAM WERT PROCID -------- -------- -------- -------- -------- -------- ---- ------ 15MinAvg AIRSS 33-GIS DMDMGIS1 I MvAvr15m 1123 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 P MvAvr15m 2344 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 Q MvAvr15m 4545 CP 15MinAvg AIRSS 33-GIS DMDMGIS2 I MvAvr15m 6576 CP 15MinAvg …

5
จะรับค่าสัมบูรณ์โดยใช้ awk ได้อย่างไร
หากฉันมีวันที่ด้านล่างสองวัน: 2015-09-12,2015-08-13 และฉันต้องการได้จำนวนวันระหว่างพวกเขาฉันจะใช้รหัสด้านล่าง: awk -F'[-,]' '{print 360*($4-$1)+30*($5-$2)+($6-$3)}' ผลลัพธ์สำหรับรหัสนี้จะเป็น-29จริงในขณะที่ความแตกต่างคือ29

3
สคริปต์เริ่มต้นของ Systemd postgresql
ฉันกำลังติดตั้ง postgresql บนเซิร์ฟเวอร์ตัวที่สอง ก่อนหน้านี้ฉันติดตั้ง postgresql แล้วใช้สคริปต์ที่ให้มา ./contrib/start-scripts/linux วางลงใน dir ที่ถูกต้อง # cp ./contrib/start-scripts/linux /etc/rc.d/init.d/postgresql92 # chmod 755 /etc/rc.d/init.d/postgresql92 ซึ่งฉันสามารถดำเนินการตามที่คาดไว้ด้วย # service postgresql92 start อย่างไรก็ตามเครื่องใหม่ใช้ Systemd และดูเหมือนว่ามีวิธีที่แตกต่างอย่างสิ้นเชิงในการทำเช่นนี้ ฉันไม่ต้องการแฮ็คข้อมูลนี้และทำลายบางสิ่งบางอย่างดังนั้นฉันจึงสงสัยว่าใครก็ตามสามารถชี้ให้ฉันในทิศทางที่ถูกต้องว่าจะบรรลุผลลัพธ์เดียวกันได้อย่างไร

4
ดาวในไฟล์ passwd หมายถึงอะไร
ฉันมีคอมพิวเตอร์ที่ฉันจำเป็นต้องบูทเข้าไป แต่ดูเหมือนว่ารหัสผ่านจะเป็นการหลอกลวง นอกจากนี้ฉันไม่สามารถเมานต์ไดรฟ์สำหรับเขียนและเป็นโปรเซสเซอร์ mips ดังนั้นฉันไม่สามารถติดในเครื่องอื่นเพื่อเรียกใช้ อย่างไรก็ตามพวกเขาไฟล์ passwd มีผู้ใช้บางคนที่มีลักษณะเช่นนี้พร้อมกับติดดาวตามชื่อผู้ใช้ หมายความว่ารหัสผ่านว่างเปล่าหรืออะไร root:8sh9JBUR0VYeQ:0:0:Super-User,,,,,,,:/:/bin/ksh sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh daemon:*:1:1:daemons:/:/dev/null bin:*:2:2:System Tools Owner:/bin:/dev/null uucp:*:3:5:UUCP Owner:/usr/lib/uucp:/bin/csh sys:*:4:0:System Activity Owner:/var/adm:/bin/sh adm:*:5:3:Accounting Files Owner:/var/adm:/bin/sh lp:VvHUV8idZH1uM:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh nuucp::10:10:Remote UUCP User:/var/spool/uucppublic:/usr/lib/uucp/uucico auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh

1
เหตุใดการขยายพารามิเตอร์ bash ไม่ทำงานในไฟล์เซอร์วิส systemd
ฉันกำลังพยายามที่จะใช้systemd's EnvironmentFileและเพิ่มตัวเลือกในการคำสั่งเมื่อมีการตั้งค่าในแฟ้ม ฉันมีต่อไปนี้ในไฟล์หน่วย: ExecStart=/usr/bin/bash -c "echo ${PORT:+port is $PORT}" ซึ่งไม่ได้สะท้อนอะไรเลยเมื่อฉันเริ่มให้บริการ งานต่อไปนี้เป็นไปตามที่คาดไว้: ExecStart=/usr/bin/bash -c "echo port is $PORT" ซึ่งหมายความว่าไฟล์อ่านอย่างถูกต้อง การทดแทนพารามิเตอร์ยังทำงานบนบรรทัดคำสั่ง: $ PORT=1234 bash -c 'echo ${PORT:+port is $PORT}' port is 1234 ฉันกำลังคิดถึงอะไร

3
ค้นหาและแทนที่อักขระควบคุม (^ @, ^ M, ^ I …) ใน vi
ฉันคัดลอกบรรทัดนี้จาก/proc/some_proc_id/cmdlineในเครื่อง Ubuntu ของฉัน java^@-jar^@/usr/lib/selenium/selenium-server-standalone.jar^@-port^@4444^@-trustAllSSLCertificates^@ อย่างใดอักขระช่องว่างจะถูกแทนด้วย^@ใน vi ฉันพยายามแทนที่พวกเขาด้วยอักขระช่องว่างโดยใช้คำสั่ง :%s#^@# #g แต่มันบอกว่าpattern not found ^@. หนึ่งจะสามารถแทนที่อักขระพิเศษโดยเฉพาะอย่างยิ่งที่เริ่มต้นด้วยสัญลักษณ์กะรัตได้อย่างไร


2
วิธีการเปลี่ยนเจ้าของไดเรกทอรี
แก้ไข : ปัญหาคือแอปเปิ้ลใช้สิทธิ์ในการทำเครื่องหมายสำรองข้อมูลและป้องกันไม่ให้คุณแก้ไขพวกเขา (อาจเป็นคุณลักษณะด้านความปลอดภัย) โดยใช้chmod -RN <dir>ฉันลบข้อมูล ACL จากโฟลเดอร์ทั้งหมดที่มีข้อมูลสำคัญและนั่นทำให้ฉันสามารถทำให้ตัวเองเป็นเจ้าของและใช้สิทธิ์ที่เหมาะสม คำถามเดิม ฉันมีการสำรองข้อมูลที่มีขนาดใหญ่มาก (> 700GB) ที่ตอนนี้มีการอนุญาตที่ไม่ถูกต้อง (UID ของฉันเปลี่ยนไประหว่างการติดตั้งใหม่ทั้งหมด) และฉันต้องเปลี่ยนพวกเขา ตัวเลือกที่ใช้เวลานานคือการผ่านแต่ละโฟลเดอร์ด้วยตนเองและเปลี่ยนการอนุญาต แต่จะใช้เวลานาน ฉันต้องการใช้chownเพื่อทำให้ตัวเองเป็นเจ้าของข้อมูลสำคัญทั้งหมดของฉันแล้วใช้chmod 700ในโฟลเดอร์เหล่านั้นทั้งหมดเพื่อให้rwxสิทธิ์แก่ฉันเท่านั้น ทางออกที่ดีที่สุดคือวิธีการใช้findเพื่อค้นหาโฟลเดอร์ที่ตรงกับ regex ซ้ำ (อันปัจจุบันของฉัน.*/[DCV].*|Pictures|M[ou].*) แล้วทำให้ UID ของฉันเป็นเจ้าของและตั้งค่าการอนุญาตเป็น 700 บิตที่สำคัญที่ฉันไม่สามารถเข้าใจ: แต่เมื่อฉันพยายามที่จะเรียกฉันได้รับchown Me DirectoryNamechown: DirectoryName: Operation not permitted ทุกสิ่งที่ฉันค้นหาเกี่ยวข้องกับการเปลี่ยนการอนุญาตของไฟล์ไม่ใช่ไดเรกทอรี บางทีฉันอาจจะมองผิดวิธีนี้? มีบางอย่างบอกฉันว่าไม่มีวิธีให้ UID ของฉันrwxและ---แก่คนอื่น ฉันจะบรรลุสิ่งนี้ได้อย่างไร ฉันใช้ Mac OS X 10.10.3 ฉันรู้ว่านี้เป็นฟอรั่ม Unix …

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