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

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

1
Ctrl-C ในสคริปต์ทุบตี
ฉันจะใช้การจัดการctrl+ cในสคริปต์ทุบตีได้อย่างไรเพื่อให้สคริปต์ถูกขัดจังหวะรวมถึงคำสั่งที่รันอยู่ในปัจจุบันซึ่งเปิดตัวโดยสคริปต์ (ลองนึกภาพว่ามีสคริปต์ที่รันคำสั่งที่ใช้เวลานานผู้ใช้กดctrl+ cและขัดจังหวะคำสั่ง แต่สคริปต์ดำเนินไป) ฉันต้องการให้มันทำงานในลักษณะที่ทั้งคู่ถูกฆ่า

6
จากเชลล์สคริปต์ฉันจะตรวจสอบว่ามีฐานข้อมูล MySQL อยู่ได้อย่างไร
mysqladmin -uroot create fooส่งคืนสถานะการออก 1 หากfooมีอยู่และ 0 เป็นอย่างอื่น แต่แน่นอนว่ามันจะสร้างฐานข้อมูลด้วยหากยังไม่มีอยู่ มีวิธีง่ายๆในการตรวจสอบว่ามีฐานข้อมูลอยู่หรือไม่?
22 mysql  database  bash  shell 

8
SSH ลงในกล่องที่มี IP ที่เปลี่ยนแปลงบ่อย
ฉันมีกล่องคลาวด์ที่เปลี่ยน IP บ่อยครั้ง ฉันใช้ชื่อโฮสต์ แต่ต้องแก้ไขไฟล์ known_hosts ทุกครั้งที่เซิร์ฟเวอร์เริ่มทำงานเนื่องจากข้อความแสดงข้อผิดพลาดนี้: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The …

6
วิธีใช้ไฟล์. bashrc ที่กำหนดเองในการเข้าสู่ระบบ SSH
ฉันพบว่ากับ บริษัท ใหม่ที่ฉันทำงานด้วยบ่อยครั้งที่ฉันต้องเข้าถึงเซิร์ฟเวอร์ linux ด้วยอายุการใช้งานที่ค่อนข้างสั้น ในแต่ละเซิร์ฟเวอร์ฉันมีบัญชี แต่เมื่อใดก็ตามที่มีการสร้างใหม่ฉันต้องผ่านการถ่ายโอนผ่าน. bashrc ที่ยุ่งยาก เป็นไปได้ว่าในเวลาประมาณหนึ่งเดือนเซิร์ฟเวอร์นั้นจะไม่อยู่อีกต่อไป ฉันยังต้องเข้าถึงเซิร์ฟเวอร์อื่น ๆ ในช่วงเวลาสั้น ๆ (นาที) ซึ่งไม่คุ้มค่าที่จะถ่ายโอนผ่าน. bashrc ของฉัน แต่เนื่องจากฉันทำงานบนเซิร์ฟเวอร์จำนวนมากสิ่งนี้จึงเพิ่มเวลาที่สูญเปล่าไปมาก ฉันไม่ต้องการเปลี่ยนแปลงอะไรบนเซิร์ฟเวอร์ แต่ฉันสงสัยว่ามีวิธีการ "ต่อการเชื่อมต่อ" .bashrc ดังนั้นเมื่อใดก็ตามที่ฉันต้องการ SSH ไปยังเซิร์ฟเวอร์การตั้งค่าของฉันจะถูกใช้สำหรับเซสชันนั้น ถ้าเป็นไปได้มันจะดีถ้าฉันสามารถทำสิ่งเดียวกันกับไฟล์การกำหนดค่าอื่น ๆ เช่นไฟล์ gitconfig

1
มีไฟล์อุปกรณ์ที่เพิ่งบล็อกหรือไม่?
... สิ่งที่คล้ายกับ / dev / null แต่บล็อกแค่ไบต์ทั้งหมดที่เขียนไปหรือไม่ สิ่งที่ฉันต้องการก็คือกลอุบายในการจัดการความจำไว้ในหน่วยความจำโดยการบล็อกเอาต์พุต ดูเหมือนว่าท่อจะไม่สามารถใช้งานได้เนื่องจากเอาต์พุตจะถูกเขียนไปยังบัฟเฟอร์ก่อน
21 linux  bash  cygwin 

3
จะสร้างนามแฝงของระบบสำหรับ“ ls -l” ได้อย่างไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับข้อบกพร่องของเซิร์ฟเวอร์ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันต้องการที่จะมี alias ll="ls -l" ที่จะเป็นระบบกว้าง มันทำบน Ubuntu ได้อย่างไร?
21 linux  ubuntu  bash 

4
กระบวนการพื้นหลังได้รับ SIGHUP เมื่อออกจากระบบหรือไม่
นี่คือการติดตามคำถามนี้ ฉันได้ทำการทดสอบเพิ่มเติม ดูเหมือนว่ามันจะไม่สำคัญว่าสิ่งนี้จะทำที่คอนโซลทางกายภาพหรือผ่านทาง SSH สิ่งนี้จะไม่เกิดขึ้นกับ SCP เท่านั้น cat /dev/zero > /dev/nullฉันยังทดสอบกับ พฤติกรรมเหมือนกันทุกประการ: เริ่มต้นกระบวนการในพื้นหลังโดยใช้&(หรือวางไว้ในพื้นหลังหลังจากที่เริ่มใช้CTRL-Zและbg); นี้จะทำโดยไม่ต้องใช้nohup ออกจากระบบ. เข้าสู่ระบบอีกครั้ง initกระบวนการนี้ยังคงมีการทำงานอย่างมีความสุขและตอนนี้เด็กโดยตรงของ ฉันสามารถยืนยันได้ว่าทั้ง SCP และ CAT หยุดทำงานทันทีหากส่งSIGHUP; kill -HUPผมทดสอบนี้โดยใช้ ดังนั้นดูเหมือนว่า SIGHUP จะไม่ถูกส่งเมื่อออกจากระบบอย่างน้อยไปยังกระบวนการพื้นหลัง (ไม่สามารถทดสอบด้วยเบื้องหน้าด้วยเหตุผลที่ชัดเจน) สิ่งนี้เกิดขึ้นกับฉันในตอนแรกด้วยคอนโซลบริการของ VMware ESX 3.5 (ซึ่งใช้ RedHat) แต่ฉันสามารถทำซ้ำได้บน CentOS 5.4 คำถามคืออีกครั้ง: ไม่ควรส่ง SIGHUP ไปยังกระบวนการแม้ว่าพวกเขาจะทำงานในพื้นหลังเมื่อออกจากระบบ? ทำไมสิ่งนี้ไม่เกิดขึ้น? แก้ไข ฉันตรวจสอบด้วยstraceตามคำตอบของ Kyle ตามที่ฉันคาดไว้กระบวนการจะไม่ได้รับสัญญาณใด ๆเมื่อออกจากเชลล์ที่เปิดตัว สิ่งนี้เกิดขึ้นเมื่อใช้คอนโซลของเซิร์ฟเวอร์และผ่าน SSH
21 linux  bash  process  signals 

2
แบ็กสแลชที่จุดเริ่มต้นของคำสั่ง
ในการติดตั้งคู่มือRVMฉันเห็นหลายบรรทัดขึ้นต้นด้วย '\': ติดตั้ง RVM ด้วยทับทิม: $ \curl -L https://get.rvm.io | bash -s stable --ruby ฉันคิดว่ามันเป็นเพียงพิมพ์ผิด แต่พวกเขาทำซ้ำหลายครั้ง ดังนั้นเหตุผลคืออะไร

4
ทำไม $ PATH ของคำสั่งรีโมต ssh แตกต่างจากเชลล์เชิงโต้ตอบ?
ฉันมีผู้ใช้ที่ไม่ได้ทำการแก้ไข $ PATH ในไฟล์ dot ใด ๆ : มันเป็นการตั้งค่าเริ่มต้นของระบบ จากเชลล์ล็อกอิน: $ ssh example.com user@example.com:~$ cat /tmp/hello.hs #!/bin/bash echo "$SHELL" echo "$PATH" user@example.com:~$ /tmp/hello.hs /bin/bash /usr/local/bin:/usr/bin:/bin /etc/profileตรงตามที่ระบุไว้ใน ฉันพบสิ่งนี้ค่อนข้างคาดไม่ถึง: $ ssh example.com '/tmp/hello.sh' /bin/bash /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games เช่นฉันกล่าวว่ามีการปรับเปลี่ยนของ $ PATH ไม่มีหรือใน~/.bashrc /etc/bash.bashrcไม่~/.ssh/environmentเหมือนกัน ssh(1)บอกว่าตัวแปรสภาพแวดล้อมPATHเป็น ตั้งค่าเป็นเส้นทางเริ่มต้นตามที่ระบุไว้เมื่อรวบรวม ssh แต่กระทู้นี้จาก StackOverflow และบทความรายชื่อผู้รับจดหมายนี้แนะนำว่าฉันควรจะสามารถมีอิทธิพลต่อ $ PATH สำหรับคำสั่งที่กำหนดเพียงแค่แก้ไข / etc / …
20 ssh  debian  bash 

5
สิ่งใดที่ทำให้ `> 'ล้มเหลวในระบบ Linux ได้
ฉันรันคำสั่งนี้: python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json เพื่อดัมพ์ข้อมูลลงในpartyapp_dump.jsonไฟล์ แต่ข้อมูลทั้งหมดเพิ่งพิมพ์บนหน้าจอและสร้างpartyapp_dump.jsonไฟล์เปล่า ทำไมสิ่งนี้ถึงเกิดขึ้นได้? ฉันทดสอบls > partyapp_dump.jsonและทำงานได้อย่างสมบูรณ์
20 linux  bash 

7
การตั้งค่าเขตเวลาด้วยสคริปต์อัตโนมัติ
ฉันกำลังเขียนสคริปต์เพื่อตั้งค่าการติดตั้ง slicehost ใหม่โดยอัตโนมัติ ในโลกที่สมบูรณ์แบบหลังจากที่ฉันเริ่มสคริปต์มันก็จะทำงานโดยไม่ได้รับความสนใจจากฉัน ฉันประสบความสำเร็จโดยมีข้อยกเว้นหนึ่งข้อ ฉันจะตั้งค่าเขตเวลาในการรีบูตแบบถาวร (เอาตัวรอดใหม่ได้) และมีสติ (ปรับให้เหมาะกับเวลามาตรฐานและการปรับเวลาตามฤดูกาลดังนั้นไม่มีการบังคับวันที่) ... ลักษณะที่ไม่ต้องการข้อมูลจากฉัน ขณะนี้ฉันกำลังใช้ dpkg-reconfigure tzdata ดูเหมือนจะไม่มีวิธีใดที่จะบังคับพารามิเตอร์ให้อยู่ในนั้น มันต้องการให้ผู้ใช้ป้อนข้อมูล แก้ไข: ฉันกำลังแก้ไขที่นี่แทนที่จะแสดงความคิดเห็นเนื่องจากความคิดเห็นดูเหมือนจะไม่อนุญาตการบล็อกโค้ด นี่คือรหัสจริงที่ฉันได้รับตามความคิดเห็นของ Rudedog ด้านล่าง ฉันยังสังเกตเห็นว่านี่ไม่ได้อัปเดต / etc / timezone ฉันไม่แน่ใจว่าใครใช้สิ่งนั้น แต่ในกรณีที่ใครทำฉันก็ตั้งค่าเช่นกัน TIMEZONE="America/Los_Angeles" echo $TIMEZONE > /etc/timezone cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime # This sets the time

3
ค้นหาพาร์ติชั่นที่มีไดเร็กทอรีอยู่ใน Linux?
มีวิธีการค้นหาพาร์ทิชันที่ตั้งอยู่ในไดเรกทอรี? ฉันรู้ว่าฉันสามารถใช้dfเพื่อแสดงรายการพาร์ทิชันและจุดเชื่อมต่อ แต่ฉันต้องสามารถหาพาร์ทิชันที่ไดเรกทอรีใด ๆ อยู่ด้วยคำสั่งง่ายๆ
20 linux  bash 

7
การรัน ssh-agent จากเชลล์สคริปต์
ฉันพยายามที่จะสร้างเชลล์สคริปต์ที่เหนือสิ่งอื่นใดเริ่มต้นขึ้น ssh-agent และเพิ่มคีย์ส่วนตัวให้กับตัวแทน ตัวอย่าง: #!/bin/bash # ... ssh-agent $SHELL ssh-add /path/to/key # ... ปัญหาของเรื่องนี้คือ ssh-agent เริ่มต้นใหม่จาก $ SHELL (ในกรณีของฉัน, ทุบตี) และจากมุมมองของสคริปต์มันถูกดำเนินการทุกอย่างและ ssh-add และสิ่งใด ๆ ข้างล่างนี้จะไม่ทำงาน ฉันจะเรียกใช้ ssh-agent จากเชลล์สคริปต์ของฉันและทำให้มันย้ายลงในรายการคำสั่งได้อย่างไร

2
มียูทิลิตี้เช่น cron ที่จัดตารางเวลาการทำงานในภายหลัง (แต่เพียงครั้งเดียว)?
ฉันกำลังพยายามออกแบบโปรแกรมที่ส่งข้อความเมื่อมีเหตุการณ์บางอย่าง (ไม่ใช่ระยะ) เกิดขึ้น ตอนนี้ฉันต้องการสคริปต์ที่พบเมื่อเหตุการณ์นี้เกิดขึ้นจากนั้นกำหนดเวลางาน (cron-like) ที่จะส่งข้อความก่อนที่จะเกิดขึ้น ตัวอย่างที่เป็นรูปธรรมมากขึ้นจะมีลักษณะเช่นนี้: สคริปต์ A ทำงานและตรวจจับในครั้งต่อไปของเหตุการณ์ สคริปต์ A ใช้ ??? เพื่อกำหนดตารางเวลาสคริปต์ B ให้ทำงานที่เวลา $ เวลา $ ??? เรียกสคริปต์ B ซึ่งส่งข้อความ ปัญหาคือเหตุการณ์อาจเกิดขึ้นแบบสุ่มภายใน 11 วันและจะเกิดขึ้นเพียงครั้งเดียว Cron ดูเหมือนจะไม่เหมาะสมสำหรับเรื่องนี้ - ฉันไม่ต้องการให้งานนี้ทำงานมากกว่าหนึ่งครั้ง ดังนั้นฉันเดา (สั้น ๆ ) มียูทิลิตี้ที่ให้การเรียกใช้สคริปต์ที่ล่าช้าเป็นระยะหรือไม่?
19 linux  bash  cron 

1
คำสั่งเชลล์ทำงานช้าลงเมื่อใช้ไพพ์รวดเร็วด้วยไฟล์ระดับกลาง
ไม่มีใครเข้าใจความแตกต่างอย่างมากในเวลาประมวลผลเมื่อใช้ไฟล์ระดับกลางหรือเมื่อใช้ไพพ์? ฉันกำลังแปลง tiff เป็น pdf โดยใช้เครื่องมือมาตรฐานบนเดเบียนเซิร์ฟเวอร์บีบสด วิธีมาตรฐานในการทำเช่นนี้คือการแปลงเป็น ps ก่อน ไม่มีท่อ: root@web5:~# time tiff2ps test.tif > test.ps real 0m0.860s user 0m0.744s sys 0m0.112s root@web5:~# time ps2pdf13 -sPAPERSIZE=a4 test.ps > test.pdf real 0m0.667s user 0m0.612s sys 0m0.060s ด้วยท่อ: root@web5:~# time tiff2ps test.tif | ps2pdf13 -sPAPERSIZE=a4 - > test.pdf real 1m6.098s user 0m15.861s …

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