Unix & Linux

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

1
ความสำคัญของ "แท็บ" เช่นใน "crontab" หรือ "inittab" คืออะไร?
"แท็บ" หมายถึงอะไรใน "crontab" หรือ "inittab" การมีความคิดบางอย่างเกี่ยวกับความหมายอาจช่วยจัดหมวดหมู่ไฟล์ทางจิตใจซึ่งมีคำต่อท้าย "แท็บ" และเข้าใจความสัมพันธ์กับส่วนอื่น ๆ ของระบบปฏิบัติการ

4
จะเกิดอะไรขึ้นเมื่อผู้ใช้ที่ไม่ใช่รูทส่งสัญญาณไปยังกระบวนการของผู้ใช้รูท
ฉันสงสัยเกี่ยวกับความปลอดภัยของสัญญาณ UNIX SIGKILLจะฆ่ากระบวนการ ดังนั้นจะเกิดอะไรขึ้นเมื่อกระบวนการของผู้ใช้ที่ไม่ใช่รูทส่งสัญญาณไปยังกระบวนการของผู้ใช้รูท กระบวนการยังคงดำเนินการตัวจัดการสัญญาณหรือไม่? ฉันทำตามคำตอบที่ยอมรับ (gollum's) และฉันพิมพ์man capabilitesและฉันพบสิ่งต่าง ๆ มากมายเกี่ยวกับเคอร์เนล Linux จากman capabilities : NAME capabilities - overview of Linux capabilities DESCRIPTION For the purpose of performing permission checks, traditional UNIX implementations distinguish two categories of processes: privileged processes (whose effective user ID is 0, referred to as superuser …
33 security  signals 

5
วิธีการ untar อย่างปลอดภัยโดยไม่สร้างมลพิษไดเรกทอรีปัจจุบันในกรณีของ tarbomb?
โครงการปล่อยเกียรติจดหมายเหตุน้ำมันดินที่มีไดเรกทอรีเดียวเช่นzyrgus-3.18.tar.gzมีzyrgus-3.18โฟลเดอร์ซึ่งจะมีsrc, build, distฯลฯ แต่พังค์บางโครงการใส่ทุกอย่างไว้ที่ราก: '- (ซึ่งจะทำให้เกิดความยุ่งเหยิงโดยรวมเมื่อยกเลิกการเก็บถาวรการสร้างโฟลเดอร์ด้วยตนเองทุกครั้งเป็นความเจ็บปวด มีวิธีที่รวดเร็วในการบอกว่าไฟล์. tar หรือ. tar.gz มีมากกว่าหนึ่งไดเรกทอรีที่รากหรือไม่ แม้จะเป็นไฟล์เก็บถาวรขนาดใหญ่ หรือดียิ่งขึ้นมีเครื่องมือที่ในกรณีเช่นนี้จะสร้างไดเรกทอรี (ชื่อของไฟล์เก็บถาวรที่ไม่มีนามสกุล) และใส่ทุกอย่างไว้ข้างในหรือไม่?
33 tar 

3
เทอร์มินัลอีมูเลเตอร์ใดที่สนับสนุนโหมดการควบคุม tmux?
tmuxมีโหมดการควบคุมที่เปิดใช้งานด้วย-CCเพื่อให้เทอร์มินัลอีมูเลเตอร์สามารถควบคุม tmux ได้ iTerm2 ใช้สิ่งนี้เพื่อเอฟเฟกต์ที่ยอดเยี่ยมสำหรับการอนุญาตให้หน้าต่าง tmux ปรากฏเป็นหน้าต่าง iTerm แยกต่างหาก มีเทอร์มินัลอีมูเลเตอร์อื่น ๆ ที่รองรับโหมดควบคุมหรือไม่? ฉันมีความสนใจเป็นพิเศษใน terminal emulators / ลูกค้า SSH สำหรับ Windows ที่อาจมีฟังก์ชั่นดังกล่าว แต่ Linux / Unix ก็น่าสนใจเช่นกัน
33 terminal  tmux  iterm 

2
กระบวนการภายในคอนเทนเนอร์ Docker มีลักษณะอย่างไร
ฉันได้ยินมาว่ามีความสับสนเกิดขึ้นหลายครั้งเมื่อไม่นานมานี้ว่าภาชนะบรรจุ Docker เป็นอะไรและโดยเฉพาะอย่างยิ่งสิ่งที่เกิดขึ้นภายในด้วยความเคารพต่อคำสั่งและกระบวนการที่ฉันเรียกใช้ในขณะที่อยู่ในภาชนะ Docker ใครช่วยกรุณาให้ภาพรวมระดับสูงของสิ่งที่เกิดขึ้น?

1
เหตุใดเชลล์ในตัวของเชลล์จึงไม่สามารถทำงานด้วยตัวพิมพ์ใหญ่ แต่คำสั่งอื่นสามารถทำได้
ทำไมนี้ เมื่อฉันทำเช่นนี้ CD ~/Desktop ไม่ได้พาฉันไปที่เดสก์ท็อป แต่นี่: echo "foo bar" | GREP bar ให้ฉัน: bar

4
จะเปิดใช้งาน scl CentOS 6.4 อย่างถาวรได้อย่างไร
ฉันติดตั้ง devtoolset เวอร์ชั่นใหม่กว่า (1.1) และสงสัยว่าฉันจะตั้งค่าเหล่านี้เป็นค่าเริ่มต้นถาวรได้อย่างไร ตอนนี้เมื่อฉันเข้าสู่เซิร์ฟเวอร์ที่รัน CentOS ฉันต้องรันคำสั่งนี้scl enable devtoolset-1.1 bash ฉันพยายามเพิ่มลงใน ~ / .bashrc และวางลงบนบรรทัดสุดท้ายโดยไม่ประสบความสำเร็จ

6
'cat' เป็นเชลล์ในตัวหรือเป็นโปรแกรมภายนอกหรือไม่
เมื่อฉันใช้typeคำสั่งเพื่อตรวจสอบว่าcatเป็นเชลล์ในตัวหรือโปรแกรมภายนอกฉันได้รับผลลัพธ์ด้านล่าง: -$ type cat cat is hashed (/bin/cat) -$ นี่หมายความว่าcatเป็นโปรแกรมภายนอก/bin/catหรือไม่ ฉันสับสนเพราะเมื่อฉันตรวจสอบผลลัพธ์ด้านล่างechoเพื่อดูว่ามันเป็นbuilt-inโปรแกรม/bin/echo -$ type echo echo is a shell builtin -$ which echo /bin/echo -$ ดังนั้นฉันไม่สามารถใช้ตรรกะที่/bin/catจำเป็นต้องหมายถึงโปรแกรมภายนอกเพราะเสียงก้องเป็น/bin/echoแต่ยังคงเป็นในตัว แล้วฉันจะรู้ได้อย่างไรว่าcatมันคืออะไร? ในตัวหรือภายนอก?
33 bash  cat  echo  shell-builtin 


3
ใช้ตัวแปรเพื่อจัดเก็บรหัสสีของเทอร์มินัลสำหรับ PS1 หรือไม่
ในของ.bashrcฉันฉันใช้รหัสสีเทอร์มินัล ANSI เพื่อ colorize บิตต่าง ๆ ดูเหมือนว่านี้: PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ ' ที่ไหนvirtual_envและgit_branchฟังก์ชั่นทุบตีสิ่งที่ส่งออกใน stdout ตอนนี้เพื่อให้ง่ายต่อการอ่านและแก้ไข, PS1ฉันต้องการที่จะเก็บรหัสสีในตัวแปรและหมายถึงพวกเขาแทนการฝังพวกเขาโดยตรงใน ดังนั้นฉันจึงมีตัวแปรหลายอย่างเช่นนี้: GREEN="\[\033[32m\]" YELLOW="\[\033[33m\]" RESET="\[\033[0m\]" ฉันต้องการที่จะสามารถเขียนสิ่งที่ชอบ: PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ ' แต่วิธีนี้ใช้ไม่ได้ - รหัสสีจะแสดงขึ้นมาในพรอมต์ราวกับว่ามันกำลังหลบหนี สีที่ทำงานอย่างถูกต้องถ้าผมใช้คำพูดสองแทนแต่แล้วก็พรอมต์เพียงการเปลี่ยนแปลงเมื่อฉันทำPS1source ~/.bashrc ฉันได้พยายามสิ่งอื่น ๆ ที่ผมเคยเห็นคนทำ - การใช้printfและไม่ใช้คำพูดเดียวสำหรับสีวาง\[และ\]ในPS1แทนของตัวแปรสี แต่ไม่มีอะไรน่าจะทำงาน ฉันจะใช้ตัวแปรสำหรับรหัสสีได้อย่างไร

2
นามแฝงเทียบกับการส่งออกสำหรับคำสั่งง่ายๆ
สำหรับคำสั่งง่ายๆเช่นlessจะดีกว่าไหมถ้าจะสร้าง alias หรือส่งออกตัวเลือก? มีประโยชน์อย่างใดอย่างหนึ่งมากกว่าอีก? ตัวอย่างเช่นหากฉันต้องการlessใช้-Rตัวเลือกเพื่อแสดงอักขระดิบเสมอโซลูชันทั้งสองนี้ทำงาน: export LESS='-R' alias less='less -R' สำหรับกรณีง่าย ๆ แบบนี้มีประโยชน์อย่างใดอย่างหนึ่งต่ออีกหรือไม่ สถานการณ์ใดที่หนึ่งจะทำให้เกิดปัญหาและอื่น ๆ จะไม่? ผมเคยอ่านผ่านหลายinfoและmanหน้าเช่นเดียวกับ Googling มัน แต่ฉันยังคงติดอยู่กับเรื่องนี้
33 bash  zsh  alias 


1
จะค้นหาพอร์ตอนุกรมที่ใช้งานอยู่ได้อย่างไร?
คำถาม: ฉันเสียบอุปกรณ์ (เช่นโมเด็ม GSM) ผ่านพอร์ตอนุกรม (aka RS-232) และฉันต้องดูว่าไฟล์ใดใน/dev/ระบบไฟล์ที่อุปกรณ์นี้เชื่อมโยงอยู่เพื่อให้สามารถสื่อสารกับมันได้ น่าเสียดายที่ไม่มีไฟล์ที่สร้างขึ้นใหม่ใน/dev/และไม่สามารถเห็นสิ่งใดในdmesgผลลัพธ์ ดังนั้นนี่เป็นคำถามที่ยากมาก พื้นหลัง: ฉันไม่เคยทำงานกับอุปกรณ์อนุกรมดังนั้นเมื่อวานนี้เมื่อมีความต้องการฉันพยายาม Google แต่ไม่พบว่ามีประโยชน์ ฉันใช้เวลาค้นหาสองสามชั่วโมงและฉันต้องการแบ่งปันคำตอบที่พบเนื่องจากอาจเป็นประโยชน์กับใครบางคน

3
ทำไมพาร์ติชั่น 100 MiB ของฉันที่ขนาดบล็อกไม่เกิน 1 KiB จึงไม่มีบล็อก / พื้นที่ว่างที่สอดคล้องกัน?
ฉันมีสภาพแวดล้อมแบบเสมือนจริงที่มีความหนาแน่นสูงมากพร้อมกับคอนเทนเนอร์ดังนั้นฉันจึงพยายามทำให้แต่ละคอนเทนเนอร์เล็กมาก "ขนาดเล็กจริง ๆ " หมายถึง 87 MB บนฐานUbuntu 14.04 (Trusty Tahr) โดยไม่แยกความเข้ากันได้ของตัวจัดการแพ็กเกจ ดังนั้นฉันจึงใช้LVMเป็นที่เก็บข้อมูลสำรองสำหรับตู้คอนเทนเนอร์ของฉันและเมื่อเร็ว ๆ นี้ฉันพบตัวเลขที่แปลกมาก พวกเขาอยู่ที่นี่ ลองสร้างปริมาณตรรกะ 100 MiB (ใช่กำลัง 2) sudo lvcreate -L100M -n test1 /dev/purgatory ฉันต้องการตรวจสอบขนาดดังนั้นฉันจึงออก sudo lvs --units k test1 purgatory -wi-a---- 102400.00k หวานนี่จริง ๆ 100 MiB ตอนนี้ให้สร้างระบบไฟล์ext4 และแน่นอนเราจำ-m 0พารามิเตอร์ซึ่งช่วยป้องกันการสูญเสียพื้นที่ sudo mkfs.ext4 -m 0 /dev/purgatory/test1 mke2fs 1.42.9 …
33 ext4 

2
การส่งข้อมูลไปยัง stdin ของกระบวนการโดยไม่ทำให้ EOF เกิดขึ้นภายหลัง
ฉันมีไฟล์ปฏิบัติการที่เริ่มต้นเชลล์แบบโต้ตอบกับผู้ใช้ เมื่อต้องการเปิดตัวเชลล์ให้ฉีดคำสั่งสองสามคำก่อนจากนั้นอนุญาตให้ผู้ใช้มีเซสชันแบบโต้ตอบ ฉันสามารถทำได้อย่างง่ายดายโดยใช้echo: echo "command 1\ncommand 2\ncommand3" | ./shell_executable นี้เกือบจะทำงาน ปัญหาคือคำสั่ง echo ที่ป้อน stdin ของกระบวนการจะกระทบ EOF เมื่อดำเนินการตามคำสั่งของฉันแล้ว EOF นี้ทำให้เชลล์ยกเลิกทันที (ราวกับว่าคุณกด Ctrl + D ในเชลล์) มีวิธีฉีดคำสั่งเหล่านี้ลงใน stdin โดยไม่ทำให้ EOF ภายหลังได้หรือไม่

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