คำถามติดแท็ก bash

Bash คือ Bourne Again SHell ผู้สืบทอดมาจาก Unix sh (shell) คลาสสิก

7
ไม่สามารถเข้าสู่ระบบผ่าน SSH ไปยังบัญชีใด ๆ ที่ใช้ / bin / bash shell บน Synology NAS
ฉันกำลังพยายามติดตั้ง bash เป็นเชลล์เริ่มต้นบน ARM Linux ที่ทำงานบนอุปกรณ์ฝังตัว (Synology DS212 + NAS) แต่มีบางอย่างผิดปกติจริงๆและฉันไม่สามารถเข้าใจได้ว่ามันคืออะไร อาการ: 1) รูทมี / bin / bash เป็นเชลล์เริ่มต้นและสามารถล็อกอินได้ตามปกติผ่าน SSH: $ grep root /etc/passwd root:x:0:0:root:/root:/bin/bash $ ssh root@NAS root@NAS's password: Last login: Sun Dec 16 14:06:56 2012 from desktop # 2) joeuser มี / bin / bash เป็นเชลล์เริ่มต้นและได้รับ "การอนุญาตถูกปฏิเสธ" เมื่อพยายามเข้าสู่ระบบผ่านทาง …
30 linux  ssh  bash  synology 


6
บังคับให้ SSH ใช้เปลือกเฉพาะ
มีวิธีใดที่จะบังคับให้ SSH ใช้เชลล์เฉพาะบนรีโมตปลายทางไม่ว่าเชลล์ดีฟอลต์ของผู้ใช้จะเป็นอะไร? ฉันได้ลองใช้โซลูชันคล้ายกับ: ssh host.domain.com /bin/bash -c 'complicated, multi-line command' แต่น่าเสียดายที่เชลล์เริ่มต้นบนรีโมตรับผิดชอบการแยกส่วน "คำสั่งที่ซับซ้อนหลายบรรทัด" และฉันมีปัญหาในการหลีกเลี่ยงมันเพียงพอที่จะทำงานได้ทั้งผู้ใช้ Bash และ C

7
ฉันจะใช้ฟังก์ชัน bash ด้วย sudo ได้อย่างไร
ฉันมีฟังก์ชั่นทุบตีที่กำหนดไว้ในระดับโลก bashrc ซึ่งต้องใช้สิทธิ์รูทในการทำงาน ฉันจะเรียกใช้ด้วย sudo sudo myfunctionได้อย่างไร โดยค่าเริ่มต้นจะให้ข้อผิดพลาด: sudo: myfunction: ไม่พบคำสั่ง
29 bash  sudo 

6
หากฉันเริ่มกระบวนการพื้นหลังแล้วออกจากระบบจะทำงานต่อไปได้หรือไม่
การถามสิ่งนี้หลังจากการสนทนากับเพื่อนร่วมงานเป็นเวลานานฉันต้องการคำอธิบายที่นี่จริงๆ ฉันเรียกใช้กระบวนการพื้นหลังโดยการต่อท้าย " &" ไปยังบรรทัดคำสั่งหรือโดยการหยุดCTRL-Zและกลับมาทำงานต่อในพื้นหลังด้วย " bg" จากนั้นฉันออกจากระบบ เกิดอะไรขึ้น? เราค่อนข้างแน่ใจว่ามันควรถูกสังหารโดย SIGHUP แต่สิ่งนี้ไม่ได้เกิดขึ้น เมื่อเข้าสู่ระบบอีกครั้งเป็นกระบวนการที่มีความสุขการทำงานและpstreeแสดงให้เห็นว่ามันเป็น "ลูกบุญธรรม" initโดย นี่เป็นพฤติกรรมที่คาดหวังหรือไม่? แต่ถ้าเป็นเช่นนั้นแล้วอะไรnohupคือวัตถุประสงค์ของคำสั่ง? ดูเหมือนว่ากระบวนการจะไม่ถูกฆ่าอย่างไรก็ตามมีหรือไม่มี ... แก้ไข 1 รายละเอียดเพิ่มเติมบางส่วน: คำสั่งถูกเรียกใช้จากเซสชัน SSH ไม่ใช่จากฟิสิคัลคอนโซล คำสั่งถูกเรียกใช้โดยไม่มี nohupและ / หรือ&; มันถูกระงับแล้วด้วยและกลับมาในพื้นหลังด้วยCTRL-Zbg เซสชัน ssh ไม่ได้ลดลง มีการออกจากระบบจริง ( exitคำสั่ง "") กระบวนการนี้เป็นการscpดำเนินการคัดลอกไฟล์ เมื่อเข้าสู่ระบบอีกครั้งแสดงให้เห็นกระบวนการทำงานและเป็นลูกของpstreeinit แก้ไข 2 หากต้องการระบุคำถามให้ชัดเจนยิ่งขึ้น: การวางกระบวนการในพื้นหลัง (โดยใช้&หรือbg) ทำให้ละเว้นSIGHUPเช่นเดียวกับnohupคำสั่งใช่หรือไม่ แก้ไข 3 ฉันลองส่งด้วยตนเองSIGHUPไปที่scp: มันออกแล้วดังนั้นจะไม่เพิกเฉยต่อสัญญาณแน่นอน จากนั้นฉันลองเปิดตัวอีกครั้งวางไว้ในพื้นหลังและออกจากระบบ: …

8
ลบพา ธ จากเอาต์พุตคำสั่ง find
ฉันมีสคริปต์ทุบตีสำหรับการปรับใช้รหัสจากสภาพแวดล้อมเบต้ากับสภาพแวดล้อมการผลิต แต่ปัจจุบันฉันต้องเพิ่มรายการของไฟล์ลงในไฟล์ txt manaully และบางครั้งฉันก็พลาดบางอย่าง โดยพื้นฐานแล้วสคริปต์การปรับใช้ของฉัน cat / ลูปคัดลอกไฟล์ทับ (ส่งออก / นำเข้า db เช่นกัน แต่ไม่เกี่ยวข้อง .. ฮ่า ๆ ) อย่างไรก็ตามฉันต้องการใช้findคำสั่งเพื่อสร้างรายการไฟล์ที่แก้ไขในช่วง 14 วันที่ผ่านมา ปัญหาคือฉันจำเป็นต้องตัดพา ธ ออก./เพื่อให้สคริปต์การปรับใช้ทำงานได้ นี่คือตัวอย่างของการใช้คำสั่ง find: หา -type f -mtime -14> deploy.txt นี่คือบรรทัดที่แมวdeploy.txtในสคริปต์การปรับใช้ของฉัน: for i in `cat deploy.txt`; do cp -i /home/user/beta/public_html/$i /home/user/public_html/$i; done มีความคิดว่าจะทำสิ่งนี้ให้สำเร็จได้อย่างไรโดยใช้ bash scripting? ขอบคุณ!
29 bash  find 

8
เมนูแบบเลือกได้หลายแบบในสคริปต์ทุบตี
ฉันเป็นมือใหม่ แต่ฉันต้องการสร้างสคริปต์ที่ฉันต้องการอนุญาตให้ผู้ใช้เลือกหลายตัวเลือกจากรายการตัวเลือก โดยพื้นฐานแล้วสิ่งที่ฉันต้องการคือสิ่งที่คล้ายกับตัวอย่างด้านล่าง: #!/bin/bash OPTIONS="Hello Quit" select opt in $OPTIONS; do if [ "$opt" = "Quit" ]; then echo done exit elif [ "$opt" = "Hello" ]; then echo Hello World else clear echo bad option fi done (ที่มาจากhttp://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss9.1 ) อย่างไรก็ตามสคริปต์ของฉันจะมีตัวเลือกเพิ่มเติมและฉันต้องการอนุญาตให้เลือกหลายรายการ ดังนั้นสิ่งนี้: 1) ตัวเลือก 1 2) ตัวเลือก 2 3) ตัวเลือก …
28 bash  scripting 


4
จะลบไฟล์และไดเรกทอรีที่ซ่อนอยู่ทั้งหมดโดยใช้ Bash ได้อย่างไร
ทางออกที่ชัดเจนสร้างรหัสทางออก 1: bash$ rm -rf .* rm: cannot remove directory `.' rm: cannot remove directory `..' bash$ echo $? 1 ทางออกหนึ่งที่เป็นไปได้จะข้าม "." และไดเรกทอรี ".. " แต่จะลบไฟล์ที่มีชื่อยาวเกิน 3 ตัวอักษรเท่านั้น: bash$ rm -f .??*
28 bash  files 

4
/ bin / dash คืออะไร
ฉันคิดว่า/bin/shเป็นการเชื่อมโยงไปยังเชลล์ที่ฉันเลือก ผมเคยใช้เสมอbashดังนั้นฉันคิดว่าจะชี้ไป/bin/sh แต่กลับกลายเป็นว่าที่จะชี้ไปที่/bin/bash/bin/dash มันสนุกขึ้น ฉันเริ่มdashและทำecho $SHELLและมันพิมพ์/bin/bash(ดังนั้นโดยพื้นฐานแล้วมันเหมือนกันหรือไม่) อย่างไรก็ตาม man page ของdashแตกต่างอย่างสิ้นเชิงจาก man page ของbash(ดังนั้นจึงไม่เหมือนกันหรือไม่)
27 linux  bash  shell 

12
ไม่สามารถเรียกใช้ AWS CLI จาก CRON (ข้อมูลรับรอง)
กำลังพยายามเรียกใช้สคริปต์สำรอง AWS CLI ง่าย ๆ มันวนลูปผ่านบรรทัดในไฟล์รวมสำรองพา ธ เหล่านั้นสูงถึง S3 และดัมพ์เอาต์พุตไปยังล็อกไฟล์ เมื่อฉันรันคำสั่งนี้โดยตรงคำสั่งจะรันโดยไม่มีข้อผิดพลาด เมื่อฉันเรียกใช้ผ่าน CRON ฉันได้รับข้อผิดพลาด "ไม่สามารถค้นหาข้อมูลประจำตัว" ในบันทึกผลลัพธ์ของฉัน เชลล์สคริปต์: AWS_CONFIG_FILE="~/.aws/config" while read p; do /usr/local/bin/aws s3 cp $p s3://PATH/TO/BUCKET --recursive >> /PATH/TO/LOG 2>&1 done </PATH/TO/INCLUDE/include.txt ฉันเพิ่งเพิ่มบรรทัดลงในไฟล์กำหนดค่าหลังจากที่ฉันเริ่มเห็นข้อผิดพลาดโดยคิดว่าอาจแก้ไขได้ เชลล์สคริปต์ทำงานเป็นรูท ฉันเห็นไฟล์กำหนดค่า AWS ที่ตำแหน่งที่ระบุ และมันก็ดูดีสำหรับฉัน (อย่างที่ฉันบอกว่ามันทำงานได้ดีนอก CRON)

3
วิธีการเรียก rsync ซ้ำ ๆ จนกระทั่งไฟล์ถูกถ่ายโอนสำเร็จ
ฉันพยายามซิงค์ไฟล์จากเซิร์ฟเวอร์ระยะไกลที่ไม่น่าเชื่อถือซึ่งหมายความว่าการเชื่อมต่อมีแนวโน้มที่จะล้มเหลว "แบบสุ่ม" ด้วย rsync: การเชื่อมต่อปิดโดยไม่คาดคิด Rsync ถูกเรียกด้วย - บางส่วนดังนั้นฉันจึงสามารถเรียก rsync แบบวนซ้ำจนกว่าไฟล์จะถูกถ่ายโอนอย่างสมบูรณ์ ดูเหมือนจะไม่มีธงที่จะบอก rsync ให้ลองใหม่ อะไรจะเป็นวิธีที่ดีที่สุดในการเขียนสคริปต์ ทุบตีสำหรับวง?
27 linux  bash  rsync 

6
ป้องกัน xargs จากการออกจากข้อผิดพลาด
ตามหน้า man, xargs จะออกหากหนึ่งในบรรทัดการดำเนินการออกจากกับข้อผิดพลาด 255: หากการเรียกใช้คำสั่งออกจากสถานะ 255, xargs จะหยุดทันทีโดยไม่ต้องอ่านอินพุตเพิ่มเติมใด ๆ ข้อความแสดงข้อผิดพลาดออกมาใน stderr เมื่อเกิดเหตุการณ์นี้ ฉันจะได้รับ xargs เพื่อไม่ทำเช่นนี้ได้อย่างไร ฉันมีงานแบ็ตช์แบบ 1500 หรือมากกว่านั้นที่ฉันต้องการรันครั้งละ 50 บรรทัด ฉันพบว่ามันกำลังจะตายในบางบรรทัดและไม่ได้ทำงานให้เสร็จ ไม่ดี! คำถามที่ดียิ่งขึ้นคำถามที่อธิบายสิ่งที่ฉันพยายามทำคือ: ฉันจะรันสคริปต์แบทช์ 1,500 บรรทัดได้ครั้งละ 50 บรรทัดเพื่อที่จะไม่ออกจากงานที่อยู่ตรงกลางและเพื่อให้ผลลัพธ์ถูกจับไปยังไฟล์บันทึกบางชนิด?

4
BASH Scripting, ไปที่ www-data สำหรับคำสั่งเดียว
ฉันทำงานในการสร้างการทำงานอัตโนมัติของที่เก็บโค่นล้มและเว็บไซต์ที่เกี่ยวข้องตามที่อธิบายไว้ในบล็อกโพสต์นี้ที่ผมเขียน ฉันพบปัญหาในส่วนที่ฉันไปยังผู้ใช้ www-data เพื่อเรียกใช้คำสั่งต่อไปนี้: svnadmin create /svn/repository มีการตรวจสอบที่จุดเริ่มต้นของสคริปต์ที่ทำให้แน่ใจว่ามันทำงานเป็น root หรือ sudo และทุกอย่างหลังจากนั้นคำสั่งเดียวจะต้องทำงานเป็น root มีวิธีที่ดีในการเรียกใช้คำสั่งหนึ่งคำว่าเป็น www-data จากนั้นสลับกลับไปที่รูทเพื่อจบการทำงานหรือไม่?
26 ubuntu  bash  svn  su 

7
Bash Scripting: ต้องการให้สคริปต์ทำงานเป็น root (หรือด้วย sudo)
ฉันพยายามเขียนสคริปต์ทุบตี (ใน Ubuntu) ที่จะสำรองข้อมูลไดเรกทอรีโดยใช้ tar ฉันจะตรวจสอบในสคริปต์เพื่อให้สามารถทำงานในฐานะ root (หรือด้วย sudo) ได้อย่างไร ตัวอย่างเช่นหากผู้ใช้เรียกใช้สคริปต์ควรบอกว่าสคริปต์นี้จะต้องทำงานด้วยสิทธิ์ sudo แล้วออกจาก หากสคริปต์ทำงานเป็นรูทสคริปต์จะดำเนินการผ่านการตรวจสอบต่อไป ฉันรู้ว่าต้องมีวิธีแก้ปัญหาที่ง่ายฉันไม่สามารถค้นพบได้โดย googling

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