Unix & Linux

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

2
กำลังเตรียมใช้งานตัวแปร Bash - จำเป็นต้องมีการแนะนำหรือกำหนดตามที่คุณไป
มีข้อได้เปรียบ / เสียเปรียบในการเตรียมใช้งานค่าของตัวแปร bash ในสคริปต์ไม่ว่าจะก่อนโค้ดหลักหรือตัวแปรโลคัลในฟังก์ชันก่อนกำหนดค่าจริงให้กับมัน? ฉันต้องทำอะไรแบบนี้หรือเปล่า: init() { name="" name=$1 } init "Mark" มีความเสี่ยงของตัวแปรที่เริ่มต้นด้วยค่าขยะ (หากไม่ได้กำหนดค่าเริ่มต้น) และมีผลกระทบเชิงลบของค่าของตัวแปรหรือไม่?
9 bash  variable 

3
ตัวบ่งชี้โทเค็นของ `]` คืออะไร?
คู่มือทุบตีพูดว่า: เมื่อใช้ [แบบฟอร์มอาร์กิวเมนต์สุดท้ายของคำสั่งจะต้องเป็น] $ type [ [ is a shell builtin $ type ] bash: type: ]: not found ดังนั้นจึง]ไม่ใช่คำที่สงวนไว้และไม่เป็นตัวดำเนินการหรือเป็นคำสั่งในตัว ในฐานะโทเค็นตัวระบุโทเค็น]คืออะไร คำหรือชื่อ?
9 bash 

1
วิธีแก้จุดบกพร่องสาเหตุของการใช้ทรัพยากร ksoftirqd มากเกินไป?
man ksoftirqd ระบุว่า: หาก ksoftirqd ใช้เวลา CPU นานกว่าเล็กน้อยแสดงว่าเครื่องอยู่ภายใต้ภาระการขัดจังหวะแบบนุ่มนวลหนัก ฉันทำงานกับระบบ Debian Wheezy ภายใต้การใช้งานระบบที่สูงซึ่งกระบวนการ ksoftirqd ใช้ทรัพยากรซีพียูและดิสก์มากเกินไปในช่วงเวลาสั้น ๆ ในช่วงเวลานั้นระบบจะทำงานอย่างช้ามาก เราจะเริ่มเข้าใจได้อย่างไรว่าสาเหตุใดที่ทำให้เกิดการใช้ทรัพยากรอย่างนี้ ksoftirqd?
9 interrupt  load 

1
mkdir: ไม่สามารถสร้างไดเรกทอรี: ไม่ได้ใช้งานฟังก์ชัน
ฉันอยู่ในวิทยาลัยและต้องส่งการบ้านของฉันจากเครื่องลีนุกซ์โรงเรียน แต่ฉันชอบทำการบ้านบนแล็ปท็อปของฉัน (Mac) ดังนั้นแทนที่จะคัดลอกไฟล์ของฉันมากกว่าทุกครั้งที่แล้วส่งพวกเขาก็ตัดสินใจที่จะทำให้สคริปต์ที่จะทำมันให้ฉันใช้และscp sshเมื่อฉันทดสอบสคริปต์ของฉันในครั้งแรกscpคำสั่งจะสร้างไดเรกทอรีhw3ในเครื่องอื่น hw4ครั้งต่อไปที่ผมทดสอบมันสร้างไดเรกทอรี ไดเรกทอรีทั้งสองมีไฟล์โปรแกรมของฉันอยู่ในนั้น rm -rตั้งแต่ไดเรกทอรีทั้งสร้างขึ้นเฉพาะสำหรับการทดสอบฉันลบพวกเขาทั้งสองใช้ แต่นี่คือปัญหาที่เกิดขึ้น ผ่านการทดสอบในภายหลังของสคริปต์และแก้จุดบกพร่องอื่น ๆ ของฉันฉันพบว่าตอนนี้ผมไม่สามารถสร้างไฟล์หรือโฟลเดอร์ชื่อ hw3 หรือ hw4 บนเครื่องอื่น ๆ sshในขณะที่เชื่อมต่อกับมันผ่าน ฉันสามารถสร้างโฟลเดอร์ชื่ออะไรอื่นเพียงแค่ไม่ได้หรือhw3 hw4ฉันไม่สามารถทำให้พวกเขาผ่านทางmkdir, mv, cpหรือสัมผัสทำให้ฉันคิดว่ามีสิ่งผิดปกติกับระบบแฟ้ม อย่างไรก็ตามฉันสามารถสร้างhw3และhw4ไฟล์ในไดเรกทอรีหลัก ไม่มีใครที่ฉันได้พูดคุยเพื่อที่จะรู้ว่าสิ่งนี้คืออะไรและไม่เคยเห็นมาก่อนและ Googling ปัญหาไม่ได้เปิดผลลัพธ์ใด ๆ ที่โรงเรียนของฉันมีเครื่องที่แตกต่างกันมากมายฉันสามารถเข้าสู่ระบบได้และลองใช้หลายเครื่อง แต่ปัญหายังคงมีอยู่ในเครื่องทั้งหมดซึ่งเหมาะสมแล้วตั้งแต่ฉันทำงานจากไดรฟ์เครือข่าย (SDRIVE ในเส้นทาง) เพื่อให้สคริปต์ทำงานได้ฉันใช้วิธีแก้ปัญหาเพียงสร้างมันขึ้นมาhww#แทนhw#แต่ฉันก็ยังอยากรู้ว่าเกิดอะไรขึ้นและจะแก้ไขอย่างไร นี่คือเอาต์พุตเทอร์มินัลของฉันจากเมื่อฉันเข้าสู่ระบบผ่านsshและคำสั่งของฉัน Last login: Tue Mar 3 11:40:18 2015 from r03ane3md.device.mst.edu You are currenly one of 7 users …

1
วิธีการรวบรวมอาร์เรย์ RAID ที่เจาะจงโดยไม่ใช้ /etc/mdadm.conf
เป็นไปได้หรือไม่ที่จะรวบรวมอาร์เรย์ RAID ที่เฉพาะเจาะจงโดยใช้mdadmและฟังก์ชันการสแกนของมัน แต่ไม่จำเป็นต้องใช้ไฟล์การกำหนดค่า พื้นหลัง: ฉันใช้ initramfs ที่กำหนดเองเพื่อตั้งค่าระบบของฉัน (dm-crypt และอื่น ๆ ) ทุกอย่างเสร็จสิ้นและกำหนดค่าภายในสคริปต์เริ่มต้นและนั่นคือวิธีที่ฉันต้องการเก็บไว้นั่นคือไม่มีไฟล์กำหนดค่าเพิ่มเติม เป้าหมายของฉัน: ภายในสคริปต์เริ่มต้นฉันต้องการรวบรวมอาร์เรย์ RAID หนึ่งชุดโดยใช้บรรทัดคำสั่งเท่านั้น อาเรย์จะถูกระบุผ่าน UUID ชื่ออุปกรณ์ md จะได้รับและสมาชิกอาเรย์ควรได้รับการสแกน (ตั้งแต่เช่นแท่ง USB ที่เชื่อมต่อหรืออุปกรณ์ที่ล้มเหลวจะทำให้ชื่อ / dev / sdX สับสน) อุปกรณ์อื่นและอาร์เรย์ RAID ที่มีศักยภาพทั้งหมดจะถูกละเว้นเนื่องจากในระหว่างการบูตจะมีเพียงหนึ่งอาร์เรย์ที่เป็นที่สนใจ (มีระบบไฟล์รูท) อ่าน man page ของ mdadm อย่างละเอียดและทำการทดสอบหลายครั้งฉันพบสิ่งนี้: mdadm --assemble --uuid <uuid> /dev/md0 ดูเหมือนว่าจะใช้งานได้ แต่เป็นวิธีที่ถูกต้องหรือไม่ จากหน้า man: หากมีการระบุอุปกรณ์หนึ่งรายการอย่างแม่นยำ …
9 raid  mdadm  initramfs 

1
วิธีผนวกหลายบรรทัดไปยังไฟล์ด้วย bash โดยใช้“ -” ที่หน้าสตริง
คำถามที่คล้ายกันมากกับวิธีต่อท้ายหลายบรรทัดไปยังไฟล์ที่มี bashแต่ฉันต้องการเริ่มต้นไฟล์ด้วย--และผนวกเข้ากับไฟล์ด้วยถ้าเป็นไปได้ printf "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test ปัญหากำลังเริ่มต้นไฟล์ด้วย "-" ให้ฉัน: -bash: printf: --: invalid option printf: usage: printf [-v var] format [arguments] มีวิธีหนี--หรือไม่? มีทางเลือกอื่นอีกไหม? ฉันไม่แน่ใจว่าจะใช้หลายบรรทัดได้echoอย่างไรและcatไม่ใช่ตัวเลือกที่ดีฉันต้องการให้เป็นสคริปต์อัตโนมัติ

2
strace ที่ใช้งานตามระยะเวลาที่กำหนด
วิธีการเรียกใช้ strace ในกระบวนการผู้ใช้สำหรับช่วงเวลาที่ระบุพูด 1 นาทีโดยไม่ต้องยกเลิกกระบวนการผู้ใช้และไม่ใช้ Ctrl + C? ฉันต้องการสร้างสคริปต์เพื่อทำให้การดำเนินการสเตรซอัตโนมัติสำหรับกระบวนการผู้ใช้
9 strace 

7
มีเซิร์ฟเวอร์ webdav ที่มีผู้ใช้หลายคนพร้อมใช้งานสำหรับ linux หรือไม่?
ฉันกำลังมองหาการรื้อถอนบริการ SMBA ของฉันอย่างสมบูรณ์และแทนที่ด้วยบริการ WebDav การค้นหาของ google ทั้งหมดได้ชี้ให้ฉันใช้ Apache / Webdav นี่ใกล้เคียงกับสิ่งที่ฉันต้องการ แต่เท่าที่ฉันอ่านมันต้องการ Apache เพื่อเข้าถึงไฟล์ของผู้ใช้และที่แย่กว่านั้น หากสร้างไฟล์ไฟล์ใหม่จะเป็นของ Apache (ไม่ใช่ผู้ใช้) โปรดทราบว่าการมีไฟล์ที่มีความเป็นเจ้าของ Unix และสิทธิ์ที่ถูกต้องเป็นข้อกำหนดเนื่องจากผู้ใช้บางรายมีการเข้าถึง SSH โดยตรง ดังนั้นฉันค่อนข้างมองหาวิธีที่จะทำให้ Apache / Webdav ทำงาน "ถูกต้อง" กับผู้ใช้หลายคน (นั่นคือเปลี่ยนผู้ใช้ unix เป็นผู้ใช้ที่ล็อกอินก่อนที่จะพยายามให้บริการไฟล์ ) หรือค้นหาทางเลือกที่สมบูรณ์ของ Apache / WebDAV จนถึงขณะนี้การค้นหายังไม่ได้เปิดอะไรเลย

1
ทำไม Ctrl-C ไม่ทำงาน
ฉันแค่กดCtrlcสองครั้งที่กระสุนของฉันเพื่อหยุดกระบวนการที่ใช้เวลานานกว่าจะเสร็จ ^C ถูกสะท้อนสองครั้ง แต่กระบวนการก็ยังดำเนินต่อไป ทำไมไม่Ctrlcออกจากกระบวนการเหมือนปกติ

2
บังคับให้ SSH ถามวลีรหัสผ่านส่วนตัวของฉันในเชลล์ (ไม่ใช่ในหน้าต่าง)
เมื่อฉันใช้ SSH เป็นครั้งแรกหลังจากบู๊ตเครื่องจะถามฉันว่าคีย์ส่วนตัวของฉันกำลังปลดล็อกวลีรหัสผ่าน (ซึ่งเป็นพฤติกรรมที่ฉันคาดไว้) แต่มันทำในหน้าต่างไม่ใช่ในเชลล์ (คล้ายกับgksudoVS sudo) นี่น่าผิดหวัง (ฉันต้องใช้เมาส์คลิกที่หน้าต่าง) และบางครั้งก็ทำให้เกิดข้อผิดพลาด (ฉันใช้ Guake terminal บางครั้งในแบบเต็มหน้าจอในกรณีนี้ฉันไม่สามารถโฟกัสบนหน้าต่าง SSH และฉันถูกบังคับให้รีสตาร์ท X ) ดังนั้นคำถามของฉันคือ: มีวิธีบังคับ SSH เพื่อขอรหัสผ่านคีย์ส่วนตัวของฉันในบรรทัดคำสั่งแทนที่จะ popping หน้าต่างหรือไม่

1
ทำไมฉันไม่สามารถสร้างไฟล์ด้วยชื่อนำหน้าด้วย“ passwd” ใน“ / ฯลฯ ”?
ฉันมีพีซีที่ติดตั้ง Ubuntu 16.04 เมื่อเร็ว ๆ นี้ฉันต้องการติดตั้งแพคเกจบางอย่าง แต่มีปัญหาในการติดตั้ง หลังจากขุดบางฉันพบว่าความล้มเหลวดูเหมือนว่าจะเกี่ยวข้องกับระบบบัญชีผู้ใช้ linux ปัญหาคือไฟล์ที่มีชื่อนำหน้าด้วยpasswd.ไม่สามารถสร้างได้ใน/etcพา ธ # ls /etc/passwd.* ls: cannot access '/etc/passwd.*': No such file or directory # touch /etc/passwd.test-test-test touch: cannot touch '/etc/passwd.test-test-test': Permission denied # ls /etc/passwe.* ls: cannot access '/etc/passwe.*': No such file or directory # touch /etc/passwe.test-test-test # ฉันสามารถสร้างไฟล์นั้นในเส้นทางอื่น ๆ …

1
พยายามเขียนเชลล์สคริปที่ทดสอบเซิร์ฟเวอร์จากระยะไกล แต่มันยังคงอยู่ในคำสั่งอื่นเมื่อฉันออกจากระบบ
ลองที่นี่เพื่อเขียนเชลล์สคริปต์ที่คอยทดสอบเซิร์ฟเวอร์ของฉันและส่งอีเมลถึงฉันเมื่อมันหยุดทำงาน ปัญหาคือว่าเมื่อฉันออกจากระบบจากการเชื่อมต่อ ssh แม้จะใช้มัน&ในตอนท้ายของคำสั่งเช่น./stest01.sh &มันจะตกอยู่ในที่อื่นโดยอัตโนมัติและทำให้ฉันส่งจดหมายต่อเนื่องจนกว่าฉันจะเข้าสู่ระบบอีกครั้งและฆ่ามัน #!/bin/bash while true; do date > sdown.txt ; cp /dev/null pingop.txt ; ping -i 1 -c 1 -W 1 myserver.net > pingop.txt & sleep 1 ; if grep "64 bytes" pingop.txt ; then : else mutt -s "Server Down!" myemail@address.com < sdown.txt ; sleep 10 …

1
อธิบายว่าทำไมนาฬิกา 'งาน' ไม่ทำงาน แต่ดู 'ps' ทำงาน
jobsเป็นคำสั่งโปรดของฉันเพื่อดูรหัสของฉันที่ทำงานในพื้นหลัง เพื่อตรวจสอบพวกเขาแบบไดนามิกฉันมักจะพิมพ์ watch 'jobs' ซึ่งไม่แสดงอะไรเลย อย่างไรก็ตาม watch 'ps' ทำงานได้อย่างสมบูรณ์ ฉันทำผิดพลาดไปหลายเดือนแล้ว ฉันคิดว่าการเข้าใจว่าทำไมการทำงานครั้งแรกไม่ทำงานในขณะที่งานที่สองสามารถช่วยฉันหยุดทำข้อผิดพลาดเดียวกันได้ ใครช่วยได้บ้าง

1
ทำไมจำนวนเซกเตอร์ของฮาร์ดดิสก์ทั้งหมดแสดงใน fdisk ไม่เหมือนกับการคำนวณเชิงทฤษฎี
เมื่อเราใช้ fdisk เพื่อตรวจสอบฮาร์ดดิสก์มันจะแสดงสิ่งที่ชอบ: Disk /dev/sda/: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors แต่เมื่อเราคูณ 255 x 63 x 2610 จำนวนนั้นคือ 41929650 น้อยกว่าจำนวนทั้งหมดเล็กน้อย ของภาคที่แสดงข้างต้น ทำไม?

2
วิธีการวนซ้ำ 3 ครั้งในสคริปต์ทุบตีเมื่อนักเทียบท่าดันล้มเหลว?
ฉันมีสคริปต์ทุบตีซึ่งเพียงนักเทียบท่าดันภาพ: docker push $CONTAINER_IMAGE:latest ฉันต้องการวนซ้ำ 3 ครั้งเมื่อสิ่งนี้ล้มเหลว ฉันจะทำสิ่งนี้ได้อย่างไร

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