Score:0

วิธีสร้างสคริปต์ sh เพื่อเรียกใช้สคริปต์ sh อื่นด้วยเซสชันหน้าจอหรือเซสชัน Tmux

ธง co

สิ่งที่ฉันต้องการคือสร้างสคริปต์ทุบตีที่เรียกใช้สคริปต์ทุบตีอื่นในโฟลเดอร์อื่น แต่มีเซสชันหน้าจอแยก นอกจากนี้ควรดำเนินการในฐานะผู้ใช้ที่ไม่ใช่รูท นี่คือสิ่งที่ฉันได้ทำไปแล้ว:

#!/bin/sh
cd /bot/ && หน้าจอ -S Bot -d -m ./bot.sh
chmod +x script.sh

หลังจากรันด้วย ./script.shมันไม่ได้ทำให้ฉันมีข้อผิดพลาด แต่ไม่มีการตอบสนอง

ฉันยังลองด้วย:

#!/bin/sh
หน้าจอ -S Bot -d -m -c "cd bot" && ./bot.sh

และเกิดข้อผิดพลาดนี้: ./script.sh: บรรทัดที่ 1: bot.sh: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว

ฉันมีคำถามเล็กน้อยเช่นกัน ฉันจะสร้างสคริปต์เพื่อติดตามเซสชันนี้เพื่อเรียกใช้กลับได้อย่างไร หากเซสชันหรือบอตหยุดทำงาน ขอบคุณล่วงหน้า.

vanadium avatar
cn flag
ทำไมคุณถึงต้องการ / ต้องการสิ่งนี้ บอกเราว่าคุณต้องการอะไรจริงๆ แล้วเราอาจสามารถหาทางออกที่ดีกว่าสิ่งที่คุณคิดว่าเป็นวิธีแก้ปัญหาของคุณในปัจจุบัน
Alobar avatar
co flag
สวัสดี ฉันคิดว่าปัญหาได้รับการแก้ไขด้วยสคริปต์ Tmux และคุณพูดถูก ฉันควรจะบอกอย่างชัดเจนว่าฉันต้องการอะไร ฉันต้องการให้สคริปต์นี้ทำงานเมื่อเริ่มต้นกับผู้ใช้ที่ไม่ใช่รูท แต่ยังมีความสามารถในการรีสตาร์ทในเซสชันหรือบอทจะยุติเอง
Score:1
ธง vn

สคริปต์นี้ขึ้นอยู่กับข้อสันนิษฐานหลายประการ:

  1. ฉันใช้ tmux แทนหน้าจอ

  2. สคริปต์ที่คุณต้องการเรียกใช้ภายใน tmux คือ /bot/bot.sh

ดังนั้น ./script.sh ฉันอยากจะแนะนำดังต่อไปนี้:

#!/bin/sh
sessname="บอท"

# สร้างเซสชันใหม่ชื่อ "$sessname"
tmux เซสชันใหม่ -d -s "$ sessname"

# เรียกใช้คำสั่งในเซสชัน "$sessname"
tmux send-keys -t "$sessname" "/bot/bot.sh" Enter

# แนบกับเซสชัน "$sessname"
#tmux แนบ -t "$sessname"

ข้อสังเกตสองสามข้อ:

  1. คุณควรใช้เส้นทางที่แน่นอนเสมอในสคริปต์ (/bot/bot.sh, ไม่ ./bot.sh)
  2. หากคุณต้องการแนบไปกับเซสชันด้วย ให้ยกเลิกการใส่ความคิดเห็นในบรรทัดสุดท้าย
Alobar avatar
co flag
ขอบคุณมากสำหรับความสนใจของคุณ คุณช่วยทำให้สคริปต์นี้ทำงานเมื่อเริ่มต้นด้วยผู้ใช้ที่ไม่ใช่รูทและหาวิธีที่จะคอยดูสคริปต์เพื่อเริ่มต้นใหม่เมื่อสิ้นสุดได้หรือไม่
Score:0
ธง in

ฉันเดาว่าตัวเลือกแรกของคุณใช้ได้ดี แต่ หน้าจอ จะทำงานในโหมดเดี่ยว ดังนั้นคุณจะไม่เห็นเอาต์พุตภายนอก หน้าจอ.

ตรวจสอบ หน้าจอ -ls เพื่อดูการวิ่ง หน้าจอ เซสชั่นและ หน้าจอ -r ID เพื่อแนบไปกับพวกเขา

อย่างไรก็ตาม คุณสามารถใช้เส้นทางสัมบูรณ์ได้ดีกว่า: /bot/bot.sh แทน ซีดี /bot/ && ./bot.sh:

#!/bin/sh
หน้าจอ -S Bot -d -m /bot/bot.sh

คุณควรจะสามารถแนบไปกับ หน้าจอ กับ หน้าจอ -r บอท.


สคริปต์ที่สองของคุณค่อนข้างผิด:

หน้าจอ -S Bot -d -m -c "cd bot" && ./bot.sh
  • -ค คาดว่าจะมีไฟล์:

    -c ไฟล์ ลบล้างไฟล์การกำหนดค่าเริ่มต้นจาก "$HOME/.screenrc" เป็นไฟล์

  • มันวิ่ง ./bot.sh นอกเซสชั่นเพราะ && จะแยกคำสั่งของคุณ ดังนั้น คุณยังอยู่ในไดเร็กทอรีเริ่มต้นของคุณโดยที่ บอท ไม่ได้อยู่. ดังนั้นข้อผิดพลาด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา