Unix & Linux

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

2
วิธีดึงเซิร์ฟเวอร์ชื่อใหม่บนการเชื่อมต่อ VPN โดยอัตโนมัติ
ฉันใช้ Ubuntu xenial 16.04 เราใช้ openvpn เพื่อเชื่อมต่อกับคลาวด์ส่วนตัวเสมือน คลาวด์นั้นมีเซิร์ฟเวอร์ DNS ของตัวเอง (เช่นเดียวกับเส้นทางท้องถิ่นของเรา - บ้านหรือสำนักงาน) เมื่อฉันเชื่อมต่อกับ VPN IP ทั้งหมดในเครือข่ายนั้นพร้อมใช้งาน แต่ฉันไม่สามารถเข้าถึงด้วยชื่อโฮสต์ เหตุผลนั้นง่าย: ไฟล์ resolv.conf ยังคงแสดงเนมเซิร์ฟเวอร์สำนักงานในพื้นที่ของฉัน ถ้าฉันเขียนทับ resolv.conf ด้วยตนเองเพื่อให้เซิร์ฟเวอร์ชื่อที่ถูกต้องทั้งหมดดี ดังนั้นฉันจะให้มันตั้งค่า resolv.conf ใหม่โดยอัตโนมัติเมื่อเชื่อมต่อกับ VPN ได้อย่างไร ฉันขอเกี่ยวกับเหตุการณ์ของระบบและรันสคริปต์ได้หรือไม่
11 ubuntu  dns  vpn 

3
มี Unix เทียบเท่ากับตัวแปรสภาพแวดล้อม Windows PATHEXT
ฉันสงสัยว่ามี Unix เทียบเท่ากับตัวแปรสภาพแวดล้อมของ Windows PATHEXTหรือไม่ สำหรับผู้ที่ไม่มีพื้นหลัง Windows: การเพิ่มคำต่อท้ายไฟล์เพื่อPATHEXTให้ฉันสามารถเรียกใช้สคริปต์โดยไม่ต้องพิมพ์คำต่อท้ายใน cmd.exe ตัวอย่างเช่นบนคอมพิวเตอร์ Windows ของฉัน PATHEXT มีคำต่อท้าย.plและเมื่อฉันต้องการรันสคริปต์ Perl ใน cmd.exe ฉันสามารถพิมพ์my-scriptและเรียกใช้งานได้ แต่ในการที่จะรันสคริปต์เดียวกันด้วยการทุบตีฉันต้องเขียนชื่อเต็ม: my-script.pl. ตั้งแต่ฉันทำงานทั้ง Windows และ Unix ในปัจจุบันฉันเกือบจะตกหลุมพรางของการลืมพิมพ์คำต่อท้ายเมื่อไปที่กล่อง Unix อีกครั้ง

5
วิธีการใช้ dos2unix ซ้ำกับเนื้อหาทั้งหมดของโฟลเดอร์?
มีวิธีใช้dos2unixคำสั่งเพื่อให้ทำงานกับไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยหรือไม่? man dos2unixไม่แสดง-rตัวเลือกใด ๆหรือคล้ายกันที่จะทำให้สิ่งนี้ตรงไปข้างหน้า?

2
tarballs นิรนาม
Tar เข้ารหัสชื่อผู้ใช้ของฉันใน tarball ฉันสามารถบังคับให้สร้าง tarball แบบไม่ระบุชื่อได้หรือไม่ --owner rootแทนที่บางส่วนของชื่อผู้ใช้ของฉัน การเพิ่มUSER=root: USER=root tar c --owner root dataไม่มีผลใด ๆ ในระยะสั้นฉันต้องการ: echo hello world > data; tar c --owner root data | grep "$USER" เพื่อไม่ให้ตรงกัน
11 tar  gnu-tar 

2
เพิ่มเครื่องหมายสแลชต่อท้ายในการทุบตีลิงก์สัญลักษณ์ไดเรกทอรี
ฉันมีลิงก์สัญลักษณ์สำหรับไดเรกทอรี เช่น ln -s /tmp /xxx ตอนนี้เมื่อฉันพิมพ์/xxและกดtabปุ่ม bash จะทำให้สายสมบูรณ์/xxx ถ้าฉันกดอีกครั้งมันจะกลายเป็น /xxx/ ตอนนี้วิธีการที่ฉันสามารถขอทุบตีจะสมบูรณ์/xxไป/xxx/โดยอัตโนมัติ (ในกรณีที่มีเพียงหนึ่งในการแข่งขัน)

1
ข้อผิดพลาดในโพรบที่เปิดใช้งาน: syscall :: open_nocancel: รายการ): การเข้าถึงของผู้ใช้ที่ไม่ถูกต้องในการดำเนินการ # 2 ที่ DIF
ฉันเป็นสายการบินเดียวที่จะแสดงไฟล์ที่เปิดโดยกระบวนการ: sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }' อย่างไรก็ตามฉันมีข้อผิดพลาดซ้ำ ๆ มากมายเช่น: dtrace: error on enabled probe ID 4 (ID 946: syscall::open_nocancel:entry): invalid user access in action #2 at DIF offset 24 dtrace: error on enabled probe ID 7 (ID 160: syscall::open:entry): invalid user access in action #2 at DIF …
11 kernel  osx  dtrace 

1
เป็นไปได้ที่จะตรวจสอบความสามารถในการ sudo ก่อน sudo'ing หรือไม่
ฉันกำลังเขียนโปรแกรมอรรถประโยชน์ขนาดเล็ก ฉันต้องการให้พยายามsudoรันบางสิ่งหากจำเป็น นั่นคือ: หากการอนุญาตไฟล์ไม่อนุญาตให้ผู้ใช้ปัจจุบันทำงานกับไฟล์ใดไฟล์หนึ่ง (และsudoกฎจะอนุญาต) ฉันต้องการให้ยูทิลิตี้ของฉันsudoทำงานบางอย่างในฐานะเจ้าของไฟล์ ฉันหวังว่าจะตรวจสอบความสามารถนี้ล่วงหน้าเพราะฉันต้องการให้บันทึกระบบไม่เต็มไปด้วยเสียงรบกวนจากsudoความพยายามที่ล้มเหลว ตามที่sudoรายงานเมื่อเกิดความล้มเหลว: "เหตุการณ์นี้จะถูกรายงาน" ดังนั้นฉันหวังว่าจะตรวจสอบแบบเป็นโปรแกรม: สามารถuser <x>ทำงานcommand <y>ผ่านได้sudoหรือไม่ นี่คือปัญหา: ในขณะที่/etc/sudoersมีการแมปนั้นมันเป็นเจ้าของรากและไม่สามารถอ่านได้โดยผู้ใช้ปกติ ฉันกำลังพิจารณาที่จะวางไข่ subprocess เพื่อให้ทำงานsudo -l(ซึ่งเป็นคำสั่งที่ผู้ใช้ปัจจุบันสามารถเรียกใช้ sudo-run) ฉันจะแยกผลลัพธ์ของสิ่งนี้ อย่างไรก็ตามนี่ดูเหมือนจะเปราะบางเล็กน้อย เอาต์พุตมีข้อมูลที่ฉันต้องการ แต่ดูเหมือนว่ามันถูกออกแบบมาเพื่อให้มนุษย์อ่าน (ไม่ใช่สำหรับการใช้แบบเป็นโปรแกรม) ฉันไม่ทราบว่ามีการรับประกันว่าผลลัพธ์จะเป็นไปตามรูปแบบเดียวกันในอนาคตหรือข้ามแพลตฟอร์มที่แตกต่างกัน การแยกวิเคราะห์ทางโปรแกรมมีการsudo -lพิจารณาว่าปลอดภัยหรือไม่? หากไม่มีมีตัวเลือกที่ดีกว่านี้เพื่อพิจารณาล่วงหน้าว่าคำสั่ง sudo จะประสบความสำเร็จหรือไม่ (พื้นหลังใน X / Y: ยูทิลิตี้นี้ใช้สำหรับบัญชีบทบาทที่ จำกัด การเข้าถึงฉันคาดว่าผู้ใช้รายอื่นบางคนสามารถเลือกที่จะอนุญาตให้บัญชี จำกัด การเข้าถึงสามารถทำงานกับไฟล์ของพวกเขาผ่านกฎ sudo อย่างไรก็ตามฉันชนะ ไม่ทราบล่วงหน้าว่าผู้ใช้รายใดที่มีกฎ sudo ที่เกี่ยวข้องอยู่)
11 sudo 

2
ใน vi / vim ฉันจะผนวกไฟล์อย่างไรแทนที่จะเขียนทับมัน?
:w <file>ฉันรู้ว่าฉันสามารถเขียนไปยังแฟ้มโดยเพียงแค่ทำ ฉันอยากรู้ว่าฉันจะเขียนลงไฟล์ได้อย่างไรโดยการต่อท้ายมันแทนที่จะเขียนทับมัน ตัวอย่างกรณีการใช้งาน: ฉันต้องการนำตัวอย่างบางส่วนออกจากไฟล์บันทึกเป็นไฟล์อื่น เพื่อให้บรรลุในวันนี้ฉันสามารถทำ: เปิดไฟล์บันทึก เลือกบางบรรทัดด้วย Shift+v เขียนเป็นไฟล์: :w /tmp/samples เลือกบรรทัดเพิ่มเติมด้วย Shift+v ต่อท้าย/tmp/samplesด้วย:w !cat - >> /foo/samples แต่น่าเสียดายที่ขั้นตอนที่ 5 เป็นเวลานานน่าเกลียดและข้อผิดพลาดง่าย (หายไป>ทำให้คุณสูญเสียข้อมูล) ฉันหวังว่า Vim มีสิ่งที่ดีกว่าที่นี่

3
ส่งเอาต์พุตไปที่ / dev / stderr vs. > & 2
ในสคริปต์ข้อผิดพลาดมักจะถูกส่งไปยัง file descriptor 2 ด้วย&2เช่น: echo "error" >&2 บางครั้ง/dev/stderrใช้แทน: echo "error" > /dev/stderr มองไปที่/dev/stderrฉันเห็นว่ามันเป็นเพียง symlink ไป/proc/self/fd/2ซึ่งในทางกลับกันคือ symlink ไปที่/dev/pts/5(ใน terminal ปัจจุบันของฉัน) ดูเหมือนซับซ้อนกว่าเล็กน้อย มีเหตุผลบางอย่างที่อยู่เบื้องหลังหรือไม่ มีการใช้/dev/stderrและ&2เทียบเท่า? เป็นที่ชื่นชอบมากกว่าคนอื่น ๆ ?

2
มีระบบไฟล์ใดบ้างที่ `ln -d` ประสบความสำเร็จ?
จาก manpage สำหรับln : -d, -F, --directory allow the superuser to attempt to hard link directories (note: will probably fail due to system restrictions, even for the superuser) มีไดร์เวอร์ระบบไฟล์ใดบ้างที่สามารถใช้งานได้จริงหรือเป็นเพียงตัวเลือกเดียวmount --bind <src> <dest>? หรือพฤติกรรมแบบนี้ถูกบล็อกโดยเคอร์เนลก่อนที่มันจะเข้าสู่ไดร์เวอร์เฉพาะระบบไฟล์หรือไม่? หมายเหตุ: ฉันไม่ได้วางแผนที่จะทำสิ่งนี้บนเครื่องใด ๆ

1
bash ปรับขนาดไม่ถูกต้องภายในคอนเทนเนอร์ Docker แบบโต้ตอบ
ทุกครั้งที่มีการเปลี่ยนแปลงขนาดเทอร์มินัลโดยปกติbashจะเป็นresizeโดยอัตโนมัติเพื่อให้LINESและCOLUMNSจะคำนวณใหม่อย่างถูกต้อง แต่ด้วยเหตุผลบางอย่างสิ่งนี้ไม่ทำงานภายในคอนเทนเนอร์ Docker ที่ทำงานbashแบบโต้ตอบ ฉันมีshopt checkwinsize -sของฉันbashrcในคอนเทนเนอร์ Docker (และตรวจสอบว่ามีการonใช้งานshopt) เหมือนกับbashเซสชันโฮสต์ ฉันคิดไม่ออกจริงๆ shopt checkwinsize -sเป็นวิธีเดียวที่ฉันได้พบว่าได้รับbashการประเมินโดยอัตโนมัติresizeเมื่อปรับขนาดหน้าต่าง
11 bash  docker 

1
ถอนติดตั้งเมานด์ rbind โดยไม่มีผลกับเมานต์ดั้งเดิม
ถามถึงข้อผิดพลาดของเซิร์ฟเวอร์แต่ไม่ได้รับความสนใจเพียงพอจึงโพสต์ที่นี่อีกครั้งด้วยความหวังว่าบางคนที่นี่รู้คำตอบ มีคำถามอีกข้อหนึ่งที่พูดถึงการติดตั้ง rbind mounts แต่วิธีแก้ปัญหามีผลที่ไม่ต้องการ พิจารณาเค้าโครงไดเรกทอรีต่อไปนี้: . ├── A_dir │ └── mount_b ├── B_dir │ └── mount_c └── C_dir ตอนนี้ผมผูกC_dirไปB_dir/mount_cและ rbind B_dirเพื่อA_dir/mount_b: [hidden]$ sudo mount --bind C_dir B_dir/mount_c [hidden]$ sudo mount --rbind B_dir A_dir/mount_b [hidden]$ mount | grep _dir | wc -l 3 ตอนนี้umount A_dir/mount_bจะล้มเหลวซึ่งไม่น่าแปลกใจ ตามที่ตอบทุกที่บนเว็บเราต้องก่อนแล้วumount A_dir/mount_b/mount_c umount A_dir/mount_bอย่างไรก็ตามumount A_dir/mount_b/mount_cจะยกเลิกการต่อเชื่อมB_dir/mount_cซึ่งไม่เป็นที่ต้องการ: …

1
การตั้งค่าจอภาพที่สองด้วย xrandr: ขยายโดยไม่ต้อง / ปิดการเลื่อน
นี่ไม่ใช่คำถาม แต่เป็นการแก้ไขปัญหาภายใต้ Ubuntu ฉันพบ ตั้งค่า: รับหน้าจอแล็ปท็อป (เช่น "LVDS-1-0") และหน้าจอที่สอง (เช่น "DP-1") โดยมีหน้าจอที่สองเป็นหน้าจอหลักของคุณและจอภาพของคุณอยู่ทางขวาของหน้าจอหลักของคุณ ( หรือซ้าย) เป็นส่วนขยาย (ดูรูปภาพ) หน้าจอแรกถูกขยายออกไปตลอดเวลาแม้จะมีคำแนะนำ xrandr อย่างชัดเจนไม่ให้ทำเช่นนี้ เมื่อป้อนสิ่งนี้ฉันสามารถหลีกเลี่ยงการเลื่อนที่น่ารำคาญเมื่อเลื่อนเคอร์เซอร์เมาส์ไปทางขวาบนหน้าจอหลัก xrandr --output LVDS-1-0 --off xrandr --output DP-1 --mode 1920x1080 --primary --pos 0x0 --output LVDS-1-0 --mode 1920x1080 --pos 1920x0 หลังจากนี้จะเปลี่ยนจากจอภาพหนึ่งไปอีกจอหนึ่งโดยไม่ต้องเลื่อนหน้าจอ ปรับปรุง หลังจากเปลี่ยนเป็นการ์ดกราฟิกแยก (nvidia เป็นแบบแยกและ intel ถูกรวมเข้ากับแล็ปท็อปของฉัน) ลำดับของผลลัพธ์ที่จำเป็นต้องเปลี่ยน: output_DP=$(xrandr | grep " …

4
คำสั่ง Bash prompt execute ทุกครั้งที่มีพรอมต์ใหม่ปรากฏขึ้น
ฉันมีพรอมต์ต่อไปนี้ในทุบตีซึ่งแสดงสาขา git ปัจจุบัน: PS1+="$(git_prompt)" #git_prompt is a function in my .bashrc ซึ่งทำงานเมื่อฉันจัดหา. bashrc แต่ไม่ใช่เมื่อฉันเปลี่ยนสาขาดังนั้น PS1 var จะได้รับการประเมินเฉพาะเมื่อฉันจัดหาที่. bashrc แต่ควรได้รับการประเมินทุกครั้งที่มีการแสดงพรอมต์ใหม่ สิ่งนี้สามารถทำได้ด้วย bash 4.3?
11 bash  prompt 


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