Unix & Linux

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


5
เหตุใดฮาร์ดลิงก์จึงใช้ได้ในระบบไฟล์เดียวกันเท่านั้น
ฉันกำลังอ่านบทนำนี้ถึงบรรทัดคำสั่งโดย Mark Bates ในบทแรกเขากล่าวว่าฮาร์ดลิงก์ไม่สามารถขยายระบบไฟล์ได้ สิ่งสำคัญที่ควรทราบเกี่ยวกับฮาร์ดลิงก์คือมันใช้งานได้กับระบบไฟล์ปัจจุบันเท่านั้น คุณไม่สามารถสร้างฮาร์ดลิงก์ไปยังไฟล์บนระบบไฟล์อื่น ในการทำเช่นนั้นคุณต้องใช้ลิงก์สัญลักษณ์ส่วน 1.4.3 ฉันรู้จักระบบไฟล์เดียว หนึ่งเริ่มต้นจาก root ( /) คำสั่งนี้ฮาร์ดลิงก์ไม่สามารถครอบคลุมระบบไฟล์ได้ไม่สมเหตุสมผลสำหรับฉัน บทความ Wikipedia เกี่ยวกับระบบไฟล์ Unixนั้นไม่เป็นประโยชน์เช่นกัน

3
แถบเลื่อนเลื่อนไปที่ที่ฉันคลิก
ฉันใช้ MATE กับ Fedora เมื่อถึงจุดหนึ่งพฤติกรรมของแถบเลื่อนในหลาย ๆ แอปพลิเคชันได้เปลี่ยนไป เมื่อฉันคลิกด้านล่างแถบเลื่อนตอนนี้แถบเลื่อนจะข้ามไปที่ที่ฉันคลิก ก่อนหน้านี้มันใช้เพื่อเลื่อนหน้าลงทีละหน้า (ถ้าฉันคลิกที่ใดก็ได้ด้านล่างตำแหน่งปัจจุบันของแถบเลื่อน) ฉันชอบพฤติกรรมเก่า เมื่ออยู่บนหน้าเว็บที่ยาวมากพฤติกรรมใหม่มีแนวโน้มที่จะทำให้แถบเลื่อนใช้งานไม่ได้เกือบ: ฉันไม่สามารถควบคุมตำแหน่งที่ฉันคลิกได้อย่างแม่นยำพอที่จะควบคุมตำแหน่งที่หน้าเว็บกระโดดไป มีวิธีในการฟื้นพฤติกรรมก่อนหน้านี้หรือไม่? กล่าวอีกนัยหนึ่งมีวิธีที่ทำให้คลิกบนแถบเลื่อนด้านล่างตำแหน่งที่ตั้งปัจจุบันของการเลื่อนเพื่อให้หน้าต่างลงไปหนึ่งหน้าแทนที่จะกระโดดไปที่ที่ฉันคลิก? ความแตกต่างนี้เห็นได้ชัดเจนที่สุดใน Firefox แต่ไม่ จำกัด เพียง Firefox เท่านั้น มันมีผลต่อแอปพลิเคชันอื่นเช่นกัน
22 mouse  gtk  scrolling 

6
ฉันจะระงับเอาต์พุตได้อย่างไรถ้าคำสั่งสำเร็จ
ฉันต้องการทำให้เอาต์พุตของสคริปต์ง่ายขึ้นโดยระงับเอาต์พุตของคำสั่งรองที่มักจะประสบความสำเร็จ อย่างไรก็ตามการใช้-qมันซ่อนเอาท์พุทเมื่อมันล้มเหลวเป็นครั้งคราวดังนั้นฉันจึงไม่มีทางเข้าใจข้อผิดพลาด stderrนอกจากนี้คำสั่งเหล่านี้เข้าสู่ระบบการส่งออกของพวกเขาใน มีวิธีระงับเอาต์พุตของคำสั่งเฉพาะเมื่อสำเร็จหรือไม่? ตัวอย่างเช่น (แต่ไม่ จำกัด เฉพาะ) สิ่งเช่นนี้: mycommand | fingerscrossed หากทุกอย่างเป็นไปด้วยดีfingerscrossedจับเอาท์พุทและทิ้งมันไป มิฉะนั้นจะส่งกลับไปยังเอาต์พุตมาตรฐานหรือข้อผิดพลาด (อะไรก็ตาม)

1
netfilter / iptables: ทำไมไม่ใช้ตารางดิบ?
ภายใต้ Linux เรามักจะใช้ตาราง "ตัวกรอง" เพื่อทำการกรองแบบทั่วไป: iptables --table filter --append INPUT --source 1.2.3.4 --jump DROP iptables --table filter --append INPUT --in-interface lo --jump ACCEPT ตามแผนภูมิการไหลของ netfilter ด้านล่างแพ็คเก็ตเดินทางผ่านตาราง "ดิบ" เป็นครั้งแรก: ดังนั้นเราสามารถเขียน: iptables --table raw --append PREROUTING --source 1.2.3.4 --jump DROP iptables --table raw --append PREROUTING --in-interface lo --jump ACCEPT แพ็กเก็ตได้รับการจัดการเร็วกว่าโดยไม่จำเป็นต้องไปถึงแม้ว่าการกำหนดเส้นทาง conntrack + …
22 linux  iptables 

2
เหตุใดความดีจึงมีตั้งแต่ -20 ถึง 19
niceคำสั่งช่วยให้คุณสามารถปรับการจัดลำดับความสำคัญการตั้งเวลา ( "ความดี") ของโปรแกรม ในทุกระบบที่เหมือนกับ Unix ที่ฉันใช้ความดีจะถูกระบุด้วยช่วงของจำนวนเต็มโดยที่ -20 เป็นลำดับความสำคัญการจัดตารางเวลาที่ดีที่สุด 0 คือค่าเริ่มต้นและ 19 เป็นค่าที่น้อยที่สุด การมี 0 เป็นความดีเริ่มต้นนั้นง่ายพอ แต่เหตุใดจึงเลือก -20 และ 19 เป็นจุดสิ้นสุดของช่วง ทำไมไม่ -128 และ 127 ซึ่งจะพอดีกับไบต์ 8 บิตที่ลงนามแล้ว? หรือเพราะเหตุใด -100 ถึง 100 ซึ่งเป็นมนุษย์ที่ใช้ทศนิยมได้ง่ายกว่าหรือใกล้เคียงกับการยศาสตร์ -99 ถึง 99 เล็กน้อย มีการเลือกช่วง -20 ถึง 19 โดยพลการหรือไม่หรือมีความสัมพันธ์กับ internals ของตัวกำหนดตารางเวลาที่niceเชื่อมโยงกับตอนแรกหรือไม่ (ฉันเข้าใจว่าวันนี้ไม่มีความสัมพันธ์อย่างน้อยสำหรับ Linux ซึ่งตัวกำหนดตารางเวลาใช้ลำดับความสำคัญในช่วง 0 ถึง 139 …

2
ทำไมความพยายาม SSH ของฉันถึงล้มเหลวเนื่องจากหมดเวลา
ฉันยังใหม่กับการใช้ ssh และเทคโนโลยีที่เกี่ยวข้องดังนั้นจึงเป็นไปได้อย่างมากที่ฉันไม่เข้าใจสิ่งพื้นฐาน (นี่อาจเป็นคำถามสำหรับข้อบกพร่องของเซิร์ฟเวอร์แทน .... ไม่แน่ใจ) ฉันพยายามที่จะ ssh ลงในเว็บเซิร์ฟเวอร์ (ที่ฉันเป็นเจ้าของ) และการเชื่อมต่อไม่เคยถูกสร้างขึ้นเนื่องจากการหมดเวลา ~ $ ssh -vvv DOMAIN.com OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 debug1: Reading configuration data /Users/USER/.ssh/config debug1: Reading configuration data /etc/ssh_config debug1: /etc/ssh_config line 20: Applying options for * debug1: /etc/ssh_config line 102: Applying options for * debug2: ssh_connect: …
22 ssh 

5
ฉันจะสร้างบริการสำหรับเชลล์สคริปต์ได้อย่างไรเพื่อให้ฉันสามารถเริ่มต้นและหยุดเหมือน daemon ได้?
ฉันใช้ CentOS 7 เป้าหมายของฉันคือการสร้าง cron ทุก ๆ ห้าวินาที แต่ในขณะที่ฉันวิจัยเราสามารถใช้ cron เพียงหนึ่งนาทีดังนั้นสิ่งที่ฉันทำตอนนี้คือฉันได้สร้างเชลล์ไฟล์ hit.sh while sleep 5; do curl http://localhost/test.php; done แต่ฉันกดมันเองด้วยการคลิกขวา สิ่งที่ฉันต้องการคือการสร้างบริการสำหรับไฟล์นั้นเพื่อให้ฉันสามารถเริ่มและหยุดโดยอัตโนมัติ ฉันพบสคริปต์เพื่อสร้างบริการ #!/bin/bash # chkconfig: 2345 20 80 # description: Description comes here.... # Source function library. . /etc/init.d/functions start() { # code to start app comes here # example: …

2
CTRL + 4 (และ CTRL + \) ทำอะไรในทุบตี?
ฉันเพิ่งค้นพบโดยบังเอิญว่าCTRL+ 4 ปิดโปรแกรมที่อ่านstdinอินพุตจากบรรทัดคำสั่ง นี่คือลักษณะเมื่อฉันพิมพ์CTRL+ 4หรือCTRL+ / ลงในโปรแกรมที่อ่านstdin $ cat wefwef wefwef ^\Quit $ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. ^\Quit $ ฉัน^\Quitปรากฏขึ้นจากนั้นโปรแกรมก็ปิด ความแตกต่างของสิ่งนี้เมื่อเทียบกับการใช้^Cหรือ^D? อะไร^\Quitทำอย่างไร แก้ไข : พบว่าCTRL+ \ทำสิ่งเดียวกันมาก

3
ออกข้อผิดพลาดเมื่อใช้ตัวแปรเชลล์ที่ว่างเปล่า
บางครั้งฉันก็ใช้$PROJECT_HOME/*เพื่อลบไฟล์ทั้งหมดในโครงการ เมื่อตัวแปรสภาพแวดล้อมPROJECT_HOMEไม่ได้ถูกตั้งค่า (เพราะฉันทำsuและผู้ใช้ใหม่ไม่มีชุดตัวแปรสภาพแวดล้อมนี้) จึงเริ่มลบไฟล์ทั้งหมดจากโฟลเดอร์รูท นี่คือสันทราย ฉันbashจะกำหนดค่าให้เกิดข้อผิดพลาดได้อย่างไรเมื่อฉันใช้ตัวแปรสภาพแวดล้อมที่ไม่ได้กำหนดในเชลล์?

5
แยกความแตกต่างระหว่างการรันและการซอร์สในสคริปต์เชลล์ bash หรือไม่?
ไม่ว่าฉันจะขออะไรจากที่นี่เป็นเรื่องแปลกแหกคอก / ไม่เป็นทางการ / มีความเสี่ยงหรือทักษะ Google-fu ของฉันไม่ได้ขึ้นอยู่กับว่า ... ในbashเชลล์สคริปต์มีวิธีใดที่จะบอกได้ง่ายว่าเชลล์สคริปต์นั้นมาจากแหล่งอื่นหรือไม่? กล่าวอีกนัยหนึ่งเป็นไปได้ไหมที่จะแยกแยะระหว่างพฤติกรรมสองอย่างต่อไปนี้? # from another shell script source myScript.sh # from command prompt, or another shell script ./myScript.sh สิ่งที่ฉันกำลังคิดที่จะทำคือการสร้างเชลล์สคริปต์แบบยูทิลิตี้ที่มีbashฟังก์ชั่นที่สามารถให้บริการได้เมื่อมีที่มา แม้ว่าสคริปต์นี้จะถูกเรียกใช้ด้วยตัวเองฉันก็อยากให้มันทำงานบางอย่างตามหน้าที่ที่กำหนดไว้เช่นกัน มีตัวแปรสภาพแวดล้อมบางชนิดที่เชลล์สคริปต์นี้สามารถรับได้เช่น some_function() { # ... } if [ -z "$IS_SOURCED" ]; then some_function; fi โดยเฉพาะอย่างยิ่งฉันกำลังมองหาโซลูชันที่ไม่ต้องการสคริปต์ผู้โทรเพื่อตั้งค่าตัวแปรสถานะใด ๆ แก้ไข : ฉันทราบความแตกต่างระหว่างการจัดหาและการเรียกใช้สคริปต์สิ่งที่ฉันพยายามค้นหาที่นี่หากเป็นไปได้ที่จะบอกความแตกต่างในสคริปต์ที่ใช้งานอยู่ (ทั้งสองวิธี)

1
วิธีที่ iptables สำรวจตารางและโซ่เชื่อมโยงกัน
ฉันรู้ว่า linux มีตารางในตัว 3 ตัวและแต่ละตัวมีโซ่ของตัวเองดังต่อไปนี้: ตัวกรอง : การเตรียมการก้าวไปข้างหน้าการโพสต์ข้อความ NAT : การเตรียมการ, อินพุต, เอาต์พุต, การโพสต์ MANGLE : PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING แต่ฉันไม่เข้าใจว่าพวกมันถูกสำรวจโดยวิธีใดถ้ามี ตัวอย่างเช่นพวกเขาสำรวจเส้นทางอย่างไรเมื่อ: ฉันส่งแพ็คเก็ตไปยังพีซีในเครือข่ายท้องถิ่นเดียวกัน เมื่อฉันส่งแพ็คเก็ตไปยังพีซีในเครือข่ายอื่น เมื่อเกตเวย์ได้รับแพ็คเก็ตและมันจะต้องส่งต่อ เมื่อฉันได้รับแพ็คเก็ตปลายทางให้ฉัน กรณีอื่น ๆ (ถ้ามี)

2
จะตั้งค่าการอนุญาต drwxr-xr-x เป็นโฟลเดอร์อื่นได้อย่างไร?
ฉันมีผู้กำกับไม่กี่คนในโฟลเดอร์ด้านล่าง - teckapp@machineA:/opt/keeper$ ls -ltrh total 8.0K drwxr-xr-x 10 teckapp cloudmgr 4.0K Feb 9 10:22 keeper-3.4.6 drwxr-xr-x 3 teckapp cloudmgr 4.0K Feb 12 01:44 data ฉันมีโฟลเดอร์อื่น ๆ บางอย่างเช่นกันในเครื่องอื่น ๆ drwxr-xr-xบางอย่างที่ฉันจำเป็นต้องเปลี่ยนสิทธิ์ในการดังกล่าวข้างต้นอย่างใดอย่างหนึ่งเช่นนี้ หมายความว่าฉันจะเปลี่ยนการอนุญาตของโฟลเดอร์ให้เป็นdrwxr-xr-xอย่างไร ฉันรู้ว่าฉันต้องใช้chmodคำสั่งด้วยสิ่งนี้ แต่สิ่งที่ควรค่ากับ chown ที่ฉันควรใช้สำหรับสิ่งนี้

2
รูปแบบสำหรับการส่งข้อความไปยัง sendmail คืออะไร?
ฉันใช้คำสั่งต่อไปนี้เพื่อสร้างข้อความได้ทันทีและส่งพวกเขา: echo "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com ดูเหมือนว่าเมื่อคุณส่งข้อมูลจากไฟล์โดยทำสิ่งที่ชอบ: sendmail email@example.com mail.txt จากนั้น sendmail จะเห็นแต่ละบรรทัดเป็นส่วนหัวและแยกวิเคราะห์ แต่วิธีที่ฉันส่งไปด้านบนทุกอย่างจบลงในหัวเรื่อง หากต้องการสะท้อนข้อความที่มีส่วนหัวให้เป็น sendmail แล้วรูปแบบคืออะไร เราจะทำอย่างไร
22 shell  email  sendmail  echo 

4
ทดสอบ unix เมื่อใดควรใช้ eq vs = vs == ในคำสั่งทดสอบ?
เมื่อใดที่ฉันควรใช้-eqvs =vs== เช่น [[ $num -eq 0 ]] [[ $num = 'zzz' ]] ฉันสังเกตรูปแบบการใช้-eq(และ-neอื่น ๆ ) สำหรับตัวเลขและ=สตริง มีเหตุผลสำหรับสิ่งนี้และเมื่อใดที่ฉันควรใช้==
22 shell  test 

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