Unix & Linux

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

4
วิธีการ ssh -Y จากนั้น su - <ผู้ใช้อื่น> และยังคงส่งต่อแอปพลิเคชัน X ไปยังเครื่องท้องถิ่นของคุณ
มันง่ายพอที่จะ 'ดึงข้อมูล' (เช่นวาดในเครื่อง) แอปพลิเคชัน linux ที่ทำงานจากระยะไกล: หากฉันssh -Yไปยังเครื่องระยะไกลและเรียกใช้แอปพลิเคชันแอปพลิเคชันนั้นจะปรากฏขึ้นอย่างเพียงพอ อย่างไรก็ตามหากในขณะที่ฉันอยู่ในเครื่องระยะไกลฉันsuเป็นผู้ใช้คนอื่นฉันไม่สามารถส่งต่อแอปพลิเคชัน X ไปยังเครื่องท้องถิ่นของฉันได้ wrong authenticationมันบอกว่า ฉันไม่แน่ใจว่าจะจัดการกรณีนี้ได้อย่างไร echo $DISPLAYยังคงเป็นที่ถูกต้อง (กำหนดโดยเริ่มต้นssh -Yการเข้าสู่ระบบ) แต่คุกกี้เซสชั่นอาจมีการตั้งค่าเฉพาะสำหรับผู้ใช้เริ่มต้นที่ลงทะเบียน SSH ฉันจะเอาชนะความยากลำบากนี้และส่งต่อแอปพลิเคชั่น X อื่น ๆ ที่เรียกใช้จากผู้ใช้อื่นได้อย่างไร เหตุผลที่ฉันไม่ได้โดยตรงเพราะฉันไม่ต้องการให้ผู้ใช้นั้นสามารถเข้าถึงผ่าน ssh (เป็นผู้ใช้ "virtualbox" ซึ่งเห็นได้ชัดว่าเป็นเป้าหมายที่ง่ายสำหรับบอทที่พยายาม ssh ไปยังเซิร์ฟเวอร์นั้น) ...
13 x11  ssh-tunneling  su 

2
ทำไมไม่ใช้% h ในตัวเลือก ControlPath ของ OpenSSH
ทำไม "ssh_config (5)" manpages แนะนำว่าControlPathตัวเลือกที่ควรมีอย่างน้อย%h, %pและ%rตัวยึดเพื่อระบุตัวตนของแต่ละการเชื่อมต่อที่ใช้ร่วมกัน? ผมคิดว่าหลายครั้งควรแบ่งปันซ็อกเก็ตเดียวกันกับการเชื่อมต่อไปยังโฮสต์เดียวกัน มันจะไม่สมเหตุสมผลถ้ามีคำจำกัดความง่ายๆเช่น: ControlPath ~/.cache/ssh/mux/%h แทนสิ่งที่ชอบ: ControlPath ~/.cache/ssh/mux/%r@%h:%p ในความเข้าใจของฉันเกี่ยวกับคำจำกัดความแรกการเชื่อมต่อหนึ่งถูกใช้ร่วมกันระหว่างหลายเซสชันกับผู้ใช้ระยะไกลที่แตกต่างกันไปยังโฮสต์ระยะไกลเดียวกันบนพอร์ตระยะไกลที่แตกต่างกัน ฉันต้องการที่จะมี defintion ssh -o ControlMaster=noแรกในส่วนของค่าเริ่มต้นโฮสต์เพื่อให้พอเพียงที่จะบอกว่า ฉันต้องการแบ่งปันการเชื่อมต่อกับโฮสต์ระยะไกลเดียวกันระหว่างเซสชันทั้งหมดที่เริ่มต้นโดยผู้ใช้ภายในเครื่องเดียวกันโดยไม่คำนึงถึงผู้ใช้ระยะไกลและพอร์ตระยะไกล ซ็อกเก็ตของไคลเอ็นต์หลักควรใช้งานได้ภายใต้โฮมไดเรกทอรีของผู้ใช้ในพื้นที่

2
ทางเลือกในการ wget
ฉันมีเว็บไซต์บนเซิร์ฟเวอร์ที่โดยทั่วไปเป็นหน้า HTML รูปภาพและเสียง ฉันลืมรหัสผ่านของฉันไปที่เซิร์ฟเวอร์นั้นและฉันต้องคว้าทุกสิ่งที่เก็บไว้ที่นั่น ฉันสามารถไปทีละหน้าและบันทึกทุกอย่าง แต่เว็บไซต์มีมากกว่า 100 หน้า ฉันใช้ OSX ฉันได้ลองใช้wgetแต่ฉันคิดว่าเซิร์ฟเวอร์กำลังบล็อกอยู่ มีทางเลือกอื่นที่ฉันสามารถใช้เพื่อจับเนื้อหานั้นหรือไม่?
13 wget 


2
systemd - หน่วยจับเวลาที่เลียนแบบพฤติกรรมของ anacron
ฉันต้องเขียนหน่วยจับเวลาสำหรับเครื่องที่เปลี่ยนบ่อย (เช่นการตั้งค่าเดสก์ท็อปแบบดั้งเดิม) หน่วยตัวจับเวลานี้ต้องเปิดใช้งานเป็นประจำ แต่ไม่บ่อยนัก (เช่นรายสัปดาห์รายเดือน) ฉันหาวิธีบางอย่าง แต่พวกเขาทั้งหมดไม่พอดี: ตามหน้า man เท่านั้นOnBootSecและOnStartupSecสั่งจะเปิดใช้งานหากจุดเวลาที่กำหนดไว้ในอดีต ฉันพบตัวอย่างด้วยการใช้การรวมกันของเหล่านี้ด้วยOnActiveSecเพื่อกำหนดเหตุการณ์ปกติ ปัญหาคือ: ทุกครั้งที่มีการบูตเครื่องตัวจับเวลาจะเปิดใช้งานหน่วยที่กำหนดค่าไว้ หากคุณมีตัวจับเวลาซึ่งควรจะใช้ครั้งเดียวต่อสัปดาห์ / เดือนซึ่งบ่อยเกินไป ตัวอย่างเช่น: ฉันไม่ต้องการหมุนบันทึกของฉันสามครั้งต่อวัน ... การแก้ปัญหาด้วยOnCalendarคำสั่ง หากเครื่องปิดที่จุดเวลาที่กำหนด (ส่วนใหญ่เที่ยงคืนเพราะถ้าคุณข้ามชั่วโมงในการกำหนดเวลามันเริ่มต้นที่ 00:00:00) จับเวลาจะไม่เปิดใช้งานหลังจากการบูตครั้งต่อไป อย่างน้อยฉันก็เข้าใจ นั่นถูกต้องใช่ไหม ? ดังนั้นที่นี่มาคำถาม: มีการจับเวลากับกิจกรรมปฏิทินเปิดใช้งานหลังจากการเริ่มต้นต่อไปถ้าเวลาที่กำหนดไว้ในอดีต? ถ้าไม่: มีวิธีแก้ปัญหาเพื่อรับพฤติกรรมดังกล่าวหรือไม่?
13 cron  systemd 

4
นี่คือการพิมพ์ผิดในส่วนการเปลี่ยนเส้นทางของคู่มือทุบตีหรือไม่?
Note that the order of redirections is significant. For example, the command ls &gt; dirlist 2&gt;&amp;1 directs both standard output and standard error to the file dirlist, while the command ls 2&gt;&amp;1 &gt; dirlist directs only the standard output to file dirlist, because the standard error was duplicated from the …


6
เปลี่ยนไดเรกทอรีทำงาน
ฉันพยายามบีบอัดไดเรกทอรีที่ /home/cyrus/sql และฉันต้องการเปลี่ยนไดเรกทอรีทำงานเมื่อซิปโฟลเดอร์: / $ zip -b /home/cyrus sql.zip /home/cyrus/sql แต่เมื่อฉันตรวจสอบไฟล์ zip: / $ unzip -l sql.zip Archive: sql.zip Length Date Time Name --------- ---------- ----- ---- 0 2013-05-30 10:59 home/cyrus/sql/ 1776642 2013-05-23 10:22 home/cyrus/sql/wordpress.sql --------- ------- 1776642 2 files sqlโฟลเดอร์รากควรจะได้รับ ฉันทำอะไรผิด
13 zip 

5
ไฟล์พิเศษที่ทำให้เกิดข้อผิดพลาด I / O
ฉันต้องการทดสอบโดยอัตโนมัติว่ามีซอฟต์แวร์ใดตอบสนองตามที่คาดหวังหากไฟล์ SQLite DB ที่สำคัญไม่สามารถอ่านได้ (ทำให้เกิดข้อผิดพลาด I / O) ตรงที่เกิดขึ้นเมื่อหลายวันก่อนที่ลูกค้า เราแก้ไขด้วยตนเอง แต่ตอนนี้ฉันต้องการสร้างรหัสอัตโนมัติเพื่อแก้ไขและต้องการเข้าถึงไฟล์ที่เสียหายเพื่อทดสอบ ทุกอย่างในไฟล์ของ Unix ฉันสงสัยว่าอาจมีไฟล์พิเศษที่ทำให้เกิดข้อผิดพลาด I / O เมื่อพยายามอ่านไฟล์ (เช่นใน / dev) บางไฟล์ที่คล้ายกัน (imo) จะเป็น: /dev/full ซึ่งมักจะพูดว่า "ไม่มีพื้นที่เหลือบนอุปกรณ์" หากคุณพยายามเขียน /dev/null และ /dev/zero ดังนั้นฉันคิดว่าจะต้องมีไฟล์แบบนั้น (แต่ยังไม่พบ) ไม่มีใครรู้ว่าไฟล์ดังกล่าวหรือวิธีการอื่น ๆ สำหรับฉันที่จะได้รับผลลัพธ์ที่ต้องการ (ภาพพาร์ทิชันที่ผิดพลาดโดยเจตนา, เสื้อคลุมรอบเปิด () โดยใช้ LD_PRELOAD, ... )? วิธีที่ดีที่สุดที่จะไปที่นี่คืออะไร?
13 linux  devices  io  testing 

4
ผู้ใช้แล็ปท็อปควรเปลี่ยนจาก ext4 เป็น btrfs หรือไม่
ที่เกี่ยวข้องกับการนี้ ฉันต้องการใช้ประโยชน์จากสวิตช์ OS เพื่ออัปเกรดเป็น BTRFS BTRFS อ้างว่ามีจำนวนมาก (ความยืดหยุ่นในการสูญเสียข้อมูลการรักษาด้วยตนเองถ้า RAID ตรวจสอบข้อมูลเมตาดาต้าและข้อมูลการบีบอัดภาพรวม) แต่มันช้าเมื่อใช้กับ - fsyncโปรแกรมที่น่าสนใจเช่นdpkg(ฉันรู้eatmydataและapt-btrfs-snapshotโปรแกรมเส็งเคร็ง) และฉันจะไม่ตั้งค่า RAID: p EXT4 อนุญาตให้ใช้การตรวจสอบข้อมูลรวมของเมตาดาต้าเท่านั้นและไม่บีบอัดข้อมูล ใน 6 ปีฉันต้องติดตั้งระบบปฏิบัติการใหม่สองครั้งเพราะ HDD เสียหาย (หลังออกทริปเที่ยวบิน) สิ่งแรกที่ทำให้แล็ปท็อปนั้นไม่สามารถบูตได้ทำให้เกิดการเสียหายครั้งที่สองเนื่องจากฟิล์มที่เสียหายและจากนั้นตรวจสอบ md5sum ของไบนารีระบบปฏิบัติการ (สมาร์ทบอกฉันว่าดิสก์มีสติ) ปัจจุบันคนที่ทำตัวแปลก ๆ ฉันไม่ทราบว่าฮาร์ดแวร์หรือซอฟต์แวร์ผิดหรือไม่ แต่ฉันสงสัยว่าฮาร์ดแวร์ (ทั้งหมดเริ่มต้นทันทีหลังจากขึ้นเครื่องอีกครั้ง) คุณจะแนะนำให้เปลี่ยนเป็น BTRFS สำหรับแล็ปท็อปเนื่องจากการบีบอัดข้อมูลและตรวจสอบข้อสรุปหรือฉันควรติดกับ EXT4 (ฉันไม่สนใจว่าสิ่งใดจะ "ดีที่สุด" เมื่อเทียบกับตัวแปรใด ๆ แต่ฉันไม่มีประสบการณ์กับ BTRFS และต้องการข้อเสนอแนะบางอย่าง) แก้ไข: ชัดเจนกว่านี้: BTRFS ยังคงถูกตั้งค่าสถานะเป็นแบบทดลองฉันรู้แต่ SUSE บอกว่าไม่ควรทำอีกต่อไป …

4
วิธี scp ด้วยนิพจน์ทั่วไป
ฉันพยายามคัดลอกไฟล์ทั้งหมดที่ไม่ได้ขึ้นต้นด้วยตัวอักษร "a" ในหน่วย ksh การคัดลอกจากเครื่องต้นทางไปยังเครื่องปลายทางทำงานได้ดี : scp -p !(a*) user@machine:/path/directory/. แต่ถ้าฉันอยู่บนเซิร์ฟเวอร์ปลายทางและต้องการคัดลอกจากเซิร์ฟเวอร์ต้นทางล้มเหลว: scp -p user@machine:/path/!(a*) . ความคิดใด ๆ
13 ksh  scp 

2
“ การขยายสแต็กอัตโนมัติ” คืออะไร?
getrlimit (2)มีคำจำกัดความต่อไปนี้ใน man pages: RLIMIT_AS ขนาดสูงสุดของหน่วยความจำเสมือนของกระบวนการ (พื้นที่ที่อยู่) ในหน่วยไบต์ ขีด จำกัด นี้มีผลต่อการเรียก brk (2), mmap (2) และ mremap (2) ซึ่งล้มเหลวด้วยข้อผิดพลาด ENOMEM เมื่อเกินขีด จำกัด นี้ นอกจากนี้ยังมีการขยายตัวของสแต็คอัตโนมัติจะล้มเหลว (และสร้าง SIGSEGV ที่ฆ่ากระบวนการถ้าไม่มีสแต็คอื่นได้รับการให้บริการผ่านทาง sigaltstack (2)) เนื่องจากค่ามีความยาวบนเครื่องที่มีความยาว 32 บิตขีด จำกัด นี้จะมากที่สุดที่ 2 GiB หรือทรัพยากรนี้ไม่ จำกัด "การขยายสแต็กอัตโนมัติ" มีความหมายอย่างไรที่นี่ สแต็กในสภาพแวดล้อม Linux / UNIX จะเติบโตตามต้องการหรือไม่? ถ้าใช่กลไกที่แน่นอนคืออะไร
13 linux  process  memory  limit 

5
รันคำสั่งเดียวกันอีกครั้งโดยใช้พารามิเตอร์อื่น
ฉันรู้ว่าฉันสามารถเรียกใช้คำสั่งต่อไปนี้ ls Some{File,Folder} และมันก็เทียบเท่ากับการรันสิ่งนี้: ls SomeFile SomeFolder (ฉันยังใช้มันเพื่อสิ่งต่าง ๆ เช่นmv place_{a,b}) อย่างไรก็ตามฉันสงสัยว่ามีทางลัดอื่นที่ฉันสามารถทำสิ่งนี้: run-command --a --whole --lot --of --flags parameter a; \ run-command --a --whole --lot --of --flags parameter b และฉันต้องพิมพ์run-command --a --whole --lot --of --flags parameter {a,b}หรืออะไรที่คล้ายกัน

8
ทำไมเทอร์มินัลเป็นกรณี ๆ
เมื่อฉันทำ - CD ..แทนที่จะcd .. ทำให้ฉันผิดพลาดว่า - CD: command not found ทำไมเทอร์มินัลคำนึงถึงขนาดตัวพิมพ์เมื่อมาถึงคำสั่ง linux? ฉันหมายความว่าคุณควรจะสามารถรันคำสั่งด้วยอักขระ "all uppercase" หรือ "all all lowercase" ฉันรู้ว่ามันเป็นเพราะเหตุผลบางอย่าง แต่ฉันแค่อยากรู้

4
ปิด --skip-grant-tables ใน MySQL
ฉันค่อนข้างใหม่ในการใช้ Linux แต่กำลังตั้งค่าฐานข้อมูล MySQL ของฉันใน Amazon ec2 เช่นกัน ฉันทำตามคำแนะนำบางอย่างที่ฉันพบเกี่ยวกับการรีเซ็ตรหัสผ่านของผู้ใช้โดยใช้--skip-grant-tablesตัวเลือกของ MySQL ตอนนี้ฉันกำลังพยายามเพิ่มผู้ใช้และไม่สามารถหาวิธีปิดตัวเลือกนั้นได้ นี่คือสิ่งที่ฉันพยายามทำ: mysql&gt; GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON ...my db username and pass แต่ฉันได้รับข้อผิดพลาดนี้: ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement ฉันจะปิดตัวเลือกนี้ได้อย่างไร

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