Unix & Linux

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

2
ใช้. sh หรือ. bash extension สำหรับสคริปต์ทุบตี?
(ดูการใช้ #! / bin / sh หรือ #! / bin / bash สำหรับความเข้ากันได้ของ Ubuntu-OSX และใช้งานง่าย & POSIX ) ถ้าฉันต้องการให้สคริปต์ของฉันใช้ bash shell ให้ใช้ส่วนขยาย. bash จริง ๆ แล้วเรียกใช้ bash หรือขึ้นอยู่กับ system config / 1st shebang line หากทั้งคู่มีผล แต่แตกต่างกันซึ่งจะมีความสำคัญกว่ากัน ฉันไม่แน่ใจว่าจะจบสคริปต์ด้วย. sh เพียงแค่ระบุ "shell script" จากนั้นให้บรรทัดแรกเลือก bash shell (เช่น#!/usr/bin/env bash) หรือว่าจะจบด้วยbash (เช่นเดียวกับการตั้งค่าบรรทัด 1) ) …
36 bash  shell  shebang 

2
ฉันจะใช้อาร์กิวเมนต์คำสั่งกับ Cmnd_Alias ​​ใน sudoers ได้อย่างไร
ฉันจะระบุอาร์กิวเมนต์คำสั่งใน sudoers ได้อย่างไร ในฐานะพื้นหลังawsคำสั่งนั้นเป็นประตูสู่กลุ่มย่อยของระบบย่อยทั้งหมดและฉันต้องการ จำกัด ผู้ใช้ให้ทำงานเท่านั้นaws s3 cp ...any other args... เมื่อฉันลองทำสิ่งต่อไปนี้ /etc/sudoers Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws s3 cp, /usr/local/aws/bin/aws s3 cp gbt1 ALL=(gbt-ops) NOPASSWD: AWSS3_CMD เชลล์โชคไม่ดีที่แจ้งให้ใส่รหัสผ่าน $ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1 gbt-ops's password: ถ้าฉันลบคำสั่งเกิดขึ้นใน Cmnd_Alias ​​มันจะไหลตามที่ต้องการ (โดยไม่ต้องใส่รหัสผ่าน) แต่การอนุญาตนั้นกว้างเกินไป ดังนั้นอะไรคือวิธีที่เหมาะสมในการ จำกัด การเรียกใช้คำสั่งบางประเภทเท่านั้น Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws, …
36 sudo 

3
Tail log file ในหลายเครื่องผ่าน ssh
ฉันกำลังพยายามtailล็อกไฟล์บนเครื่องระยะไกลหลายเครื่องและส่งต่อผลลัพธ์ไปยังเวิร์กสเตชันท้องถิ่นของฉัน ฉันต้องการการเชื่อมต่อกับใกล้ชิดเมื่อมีการกด-CtrlC ตอนนี้ฉันมีฟังก์ชั่นต่อไปนี้ซึ่งเกือบจะทำงานได้ตามที่ตั้งใจไว้ function dogfight_tail() { logfile=/var/log/server.log pids="" for box in 02 03; do ssh server-$box tail -f $logfile | grep $1 & pids="$pids $!" done trap 'kill -9 $pids' SIGINT trap wait } tailการเชื่อมต่อปิดและฉันได้รับผลลัพธ์จาก แต่มีการบัฟเฟอร์บางชนิดเกิดขึ้นเนื่องจากเอาต์พุตมีแบตช์ และนี่คือส่วนที่สนุก ... ฉันสามารถเห็นพฤติกรรมการบัฟเฟอร์เดียวกันเมื่อดำเนินการต่อไปนี้และผนวก "ทดสอบ" ไปยังไฟล์/var/log/server.logบนเครื่องระยะไกล 4-5 ครั้ง ... ssh server-01 "tail -f /var/log/server.log | …
36 linux  ssh  tail 

6
ฉันจะได้แมตช์แรกจากการขยายไวด์การ์ดได้อย่างไร
เชลล์เช่น Bash และ Zsh ขยาย wildcard เป็นอาร์กิวเมนต์โดยมีอาร์กิวเมนต์มากที่สุดเท่าที่ตรงกับรูปแบบ: $ echo *.txt 1.txt 2.txt 3.txt แต่ถ้าฉันต้องการให้การแข่งขันนัดแรกกลับมาไม่ใช่การแข่งขันทั้งหมด? $ echo *.txt 1.txt ฉันไม่สนใจวิธีแก้ปัญหาเฉพาะเชลล์ แต่ฉันต้องการโซลูชันที่ทำงานร่วมกับช่องว่างในชื่อไฟล์
36 shell  wildcards 


6
เทียบเท่าอัพเดตด้วงสำหรับระบบ RHEL / Fedora / CentOS หรือไม่
ใน Ubuntu (และฉันเดาว่าเป็น Debian ด้วย) มีสคริปต์ระบบชื่อupdate-grubซึ่งดำเนินการโดยอัตโนมัติgrub-mkconfig -oด้วยพา ธ ที่ถูกต้องสำหรับไฟล์กำหนดค่าด้วง มีคำสั่งใดที่คล้ายกันสำหรับการแจกแจงแบบ Red Hat มิฉะนั้นระบบจะรู้ได้อย่างไรว่าไฟล์การตั้งค่า grub จะอัพเดตเมื่อใดที่มีการติดตั้งเคอร์เนลเวอร์ชั่นใหม่?
36 centos  fedora  rhel  grub 

4
วิธีปิดการใช้งานการเปลี่ยน Alt-Arrow ของ Virtual Consoles
สิ่งต่อไปนี้เกิดขึ้นใน Linuces ต่าง ๆ : เมื่อฉันอยู่ในคอนโซลเสมือนAltกดและกด←หรือ→วงจร ttys เสมือน มันน่ารำคาญจริง ๆ เพราะฉันใช้ fish-shell ซึ่งก็ใช้คีย์ผสมนี้ด้วย ฉันสามารถทำการแมปสั้น ๆ ของปลาได้ แต่ไม่ต้องการ ฉันต้องการปิดการใช้งานฟังก์ชั่น linux หรือทำการแมปใหม่ ฉันจะปิดใช้งานหรือเปลี่ยน tty-cycling-key-combo ได้อย่างไร

2
0s ที่ขาดหายไปจะถูกเพิ่มในที่อยู่ IP โดยอัตโนมัติอย่างไร (`ping 10.5 'เทียบเท่ากับ` ping 10.0.0.5`)
ฉันพิมพ์โดยไม่ตั้งใจ ssh 10.0.05 แทน ssh 10.0.0.5 และรู้สึกประหลาดใจมากที่ใช้งานได้ ฉันยังพยายาม10.005และและผู้ที่ยังขยายตัวโดยอัตโนมัติ10.5 10.0.0.5ฉันยังพยายามและขยายไปสู่192.168.1 192.168.0.1ทั้งหมดนี้ยังทำงานได้pingดีกว่าsshดังนั้นฉันจึงสงสัยว่ามันจะใช้ได้กับคำสั่งอื่น ๆ ที่เชื่อมต่อกับโฮสต์ที่ผู้ใช้จัดหาเอง ทำไมจึงใช้งานได้ พฤติกรรมนี้มีการบันทึกไว้ที่อื่นหรือไม่? พฤติกรรมนี้เป็นส่วนหนึ่งของ POSIX หรืออะไรบางอย่าง? หรือมันเป็นเพียงการใช้งานแปลก ๆ ? (ใช้ Ubuntu 13.10 สำหรับสิ่งที่คุ้มค่า)
36 ip  hostname 

5
ระบบไฟล์การ์ด SD ที่ป้องกันการเสียหายสำหรับ Linux ในตัว?
เมื่อเร็ว ๆ นี้เรามีสถานการณ์ที่ค่อนข้างไม่พึงประสงค์กับลูกค้าของเรา - "คีออส" แบบคีออสก์ที่ใช้ในการแสดงข้อมูลการสำรวจระยะไกล (ไม่มีอะไรแปลกไปกว่าเบราว์เซอร์โหมดคีออสก์ที่แสดงเว็บเพจปรับปรุงตนเองจากเซิร์ฟเวอร์เก็บข้อมูล) ความเสียหายของระบบไฟล์ Ext4, ต้องใช้ Manual fsck, ระบบจะเป็นส่วนหนึ่งของงานนำเสนอที่สำคัญของวันพรุ่งนี้, ต้องการการบริการทันที แน่นอนว่าเราไม่สามารถกำหนดให้ลูกค้าต้องปิดระบบได้อย่างดีเมื่อปิดเครื่องในตอนกลางคืน ระบบจะต้องทนต่อการกระทำผิดดังกล่าว ฉันต้องการหลีกเลี่ยงสถานการณ์เช่นนี้ในอนาคตและฉันต้องการย้ายระบบปฏิบัติการไปยังระบบไฟล์ที่จะป้องกันสิ่งนี้ มีระบบไฟล์มากมายสำหรับอุปกรณ์ MTD ที่ให้พวกเขาทำงานบนการ์ด SD (อุปกรณ์บล็อกมาตรฐาน) ต้องมีการกระโดดห่วงอย่างจริงจัง นอกจากนี้ยังมีระบบไฟล์อื่น ๆ (journalling ฯลฯ ) ที่มีการต่อต้านการทุจริตที่ดี ฉันยังคงต้องเห็นการเปรียบเทียบข้อดีและข้อเสียของพวกเขาอย่างสมเหตุสมผล ระบบไฟล์ใดที่มีอยู่ใน Linux จะให้ความต้านทานต่อความเสียหายที่ดีที่สุดจากความล้มเหลวของพลังงานที่ไม่คาดคิดและไม่จำเป็นต้องกระโดดผ่านห่วงที่เป็นไปไม่ได้เช่นyaffs2เพื่อติดตั้งไปยัง SD การสวมใส่สมดุลเป็นข้อดี แต่ไม่ใช่ข้อกำหนด - การ์ด SD มักจะมีกลไกของตัวเองหากน้อยกว่าที่สมบูรณ์แบบแม้ว่าระบบควรจะ "อ่อนโยนต่อแฟลช" (ระบบเช่น NTFS สามารถฆ่าการ์ด SD ได้ภายในหนึ่งเดือน)

2
คำอธิบายของคนธรรมดาสำหรับ“ ทุกอย่างเป็นไฟล์” - อะไรคือสิ่งที่แตกต่างจาก Windows
ฉันรู้ว่า "ทุกอย่างเป็นไฟล์" หมายความว่าแม้กระทั่งอุปกรณ์ที่มีชื่อไฟล์และพา ธ ในระบบ Unix และ Unix-like และสิ่งนี้ทำให้เครื่องมือทั่วไปสามารถใช้กับทรัพยากรที่หลากหลายโดยไม่คำนึงถึงลักษณะของพวกเขา แต่ฉันไม่สามารถเปรียบเทียบได้กับ Windows ซึ่งเป็นระบบปฏิบัติการอื่นที่ฉันทำงานด้วย ฉันได้อ่านบทความบางอย่างเกี่ยวกับแนวคิด แต่ฉันคิดว่าพวกเขาค่อนข้างลำบากที่จะเข้าใจผู้ที่ไม่ใช่นักพัฒนา คำอธิบายของคนธรรมดาคือสิ่งที่ผู้คนต้องการ! ตัวอย่างเช่นเมื่อฉันต้องการคัดลอกไฟล์ไปยังการ์ด CF ที่ติดกับเครื่องอ่านการ์ดฉันจะใช้สิ่งที่ชอบ zcat name_of_file > /dev/sdb ใน Windows ฉันคิดว่าเครื่องอ่านการ์ดจะปรากฏเป็นไดรเวอร์และเราจะทำสิ่งที่คล้ายกันฉันคิดว่า ดังนั้นปรัชญา "ทุกอย่างเป็นไฟล์" สร้างความแตกต่างได้อย่างไรที่นี่

3
วิธีเปลี่ยนเชลล์เริ่มต้นเป็น ZSH - chsh บอกว่า“ เชลล์ไม่ถูกต้อง”
ฉันติดตั้ง ZSH บน VM ของฉันซึ่งฉันรวบรวมจากแหล่งที่มา สถานที่ตั้งของ ZSH คือ/usr/local/bin/zshเมื่อฉันเรียกมันเอาท์พุทchsh -s /usr/local/bin/zsh chsh: /usr/local/bin/zsh is an invalid shellฉันยังลองกับ sudo เช่นกัน ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไร
36 shell  zsh  users  login 

3
ซึ่งเป็นสำนวนในสคริปต์ทุบตีมากขึ้น: `|| true` หรือ `|| `?
ฉันไม่ได้ทำสคริปต์เชลล์มากนักดังนั้นฉันแปลกใจเล็กน้อยเมื่อฉันอ่านเอกสารสำหรับgit submoduleและฉันเห็นไวยากรณ์ที่ใช้ในเอกสารนี้: การส่งคืนที่ไม่เป็นศูนย์จากคำสั่งใน submodule ใด ๆ ทำให้การประมวลผลสิ้นสุดลง สิ่งนี้สามารถแทนที่ได้โดยการเพิ่ม|| :ไปยังจุดสิ้นสุดของคำสั่ง ฉันต้องค้นหาว่า|| :เป็นการจดชวเลขเพื่อบังคับให้ออกคำสั่งให้สำเร็จ || trueเมื่อใดก็ตามที่ฉันเคยที่จะทำให้ประสบความสำเร็จในการออกจากคำสั่งผมใช้ จะ|| :ถือว่าเป็นสำนวนมากขึ้น?
36 bash  shell 

3
หนึ่งจะรันหลายโปรแกรมในพื้นหลังด้วยคำสั่งเดียวได้อย่างไร
หนึ่งจะรันหลายโปรแกรมในพื้นหลังด้วยคำสั่งเดียวได้อย่างไร ฉันลองคำสั่งด้านล่างแล้ว แต่มันไม่ทำงาน nohup ./script1.sh & && nohup ./script2.sh & -bash: syntax error near unexpected token '&&' nohup ./script1.sh & ; nohup ./script2.sh & -bash: syntax error near unexpected token ';'

4
ทำไม“ sudo su” ในเชลล์สคริปต์ไม่ทำงานส่วนที่เหลือของสคริปต์เป็นรูท
สคริปต์ตัวอย่างสามารถเป็นด้านล่าง: #!/bin/bash sudo su ls /root เมื่อใช้./test.shในฐานะผู้ใช้ปกติแทนที่จะเรียกใช้lsในฐานะผู้ใช้ขั้นสูงและออกจากระบบจะเปลี่ยนเป็นรูท และเมื่อฉันออกจากระบบจะดำเนินการls /rootในฐานะผู้ใช้ปกติ ใครสามารถบอกฉันเกี่ยวกับกลไกเกี่ยวกับเรื่องนี้ได้บ้าง
36 shell  shell-script  sudo  root  su 

4
วิธีการกู้คืนจาก chmod -R 000 / bin?
และตอนนี้ฉันไม่สามารถย้อนกลับไป .. หรือใช้โปรแกรมระบบอื่น ๆ ของฉัน โชคดีที่มันอยู่บน VM ที่ฉันเล่นด้วย แต่มีวิธีแก้ไขปัญหานี้หรือไม่? ระบบนี้เป็น Ubuntu Server 12.10 ฉันพยายามที่จะรีสตาร์ทในโหมดการกู้คืนโชคไม่ดีที่ตอนนี้ฉันไม่สามารถบูตเข้าสู่ระบบได้เลยเนื่องจากการอนุญาตไม่อนุญาตบางโปรแกรมหลังจากความพร้อมใช้งานของ init-bottom เพื่อเรียกใช้ - ระบบเพิ่งแฮงค์ นี่คือสิ่งที่ฉันเห็น: Begin: Running /scripts/init-bottom ... done [ 37.062059] init: Failed to spawn friendly-recovery pre-start process: unable to execute: Permission denied [ 37.084744] init: Failed to spawn friendly-recovery post-stop process: unable to execute: …

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