เรียกใช้สคริปต์ในหน้าจอ


25

ฉันต้องการรันสคริปต์ทุบตีในหน้าจอเดี่ยว สคริปต์เรียกโปรแกรมสองสามครั้งแต่ละอันใช้เวลาในการรอนานเกินไป ความคิดแรกของฉันคือเพียงเปิดหน้าจอจากนั้นเรียกสคริปต์ แต่ดูเหมือนว่าฉันจะแยกออกไม่ได้ (โดยctrl-a d) ในขณะที่สคริปต์ทำงานอยู่ ดังนั้นฉันจึงทำการวิจัยและพบคำแนะนำนี้เพื่อแทนที่ shebang ด้วยต่อไปนี้:

#!/usr/bin/screen -d -m -S screenName /bin/bash

แต่นั่นไม่ได้ผลเช่นกัน (ตัวเลือกไม่ได้รับการยอมรับ) ข้อเสนอแนะใด ๆ

ป.ล. เกิดขึ้นกับฉันในตอนนี้ซึ่งscreen -dmS name ./script.shอาจเป็นไปได้สำหรับวัตถุประสงค์ของฉัน แต่ฉันก็ยังสงสัยว่าจะรวมสิ่งนี้เข้ากับสคริปต์อย่างไร ขอขอบคุณ.

คำตอบ:


28

shebangบรรทัดที่คุณเคยเห็นอาจทำงานในบางพันธุ์ Unix แต่ไม่ได้อยู่ในลินุกซ์ บรรทัด shebang ของ Linux มี จำกัด : คุณมีได้เพียงทางเลือกเดียวเท่านั้น สตริงทั้งหมด-d -m -S screenName /bin/bashจะถูกส่งเป็นตัวเลือกเดียวเพื่อscreenแทนที่จะส่งผ่านเป็นคำที่แตกต่างกัน

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

#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S screenName /bin/bash "$0"; fi
do_stuff
more_stuff

มันใช้งานได้ดีอะไร"$0"สำหรับที่นี่?
Fabich

4
@Lordofdark นั่นคือชื่อสคริปต์ สคริปต์จะเรียกscreenใช้/bin/bashว่าจะเรียกใช้สคริปต์ใดอีก
Gilles 'หยุดความชั่วร้าย'

16

ตามหน้าจอหน้าคน:

  • screen -d -m หน้าจอเริ่มต้นในโหมดเดี่ยว สิ่งนี้จะสร้างเซสชันใหม่ แต่ไม่ได้แนบ สิ่งนี้มีประโยชน์สำหรับสคริปต์เริ่มต้นระบบ
  • -S sessionname ตั้งชื่อเซสชันใหม่เป็นชื่อเซสชัน

ดังนั้นเมื่อฉันรันคำสั่งที่คุณให้ไว้: screen -dmS name ./script.sh

หน้าจอเริ่มต้นหน้าต่างชื่อชื่อและเรียกใช้ script.sh นั้นโดยอัตโนมัติ หากต้องการกลับไปที่นั่นเพื่อดูสถานะคุณเพียงพิมพ์:screen -r test

ขณะนี้มี Ubuntu 14.04 คำสั่งจะแตกต่างกันเล็กน้อย ลอง:

screen -d -m -S test

ตอนนี้สำหรับการเรียกใช้สคริปต์คุณจะต้องไปที่ไฟล์กำหนดค่าเพื่อทำเช่นนั้น:

sudo vim /etc/screenrc

เลื่อนไปที่ด้านล่างสุดแล้วคุณจะเห็น:

# Example of automatically running some programs in windows on screen startup.
#
#   The following will open top in the first window, an ssh session to monkey
#   in the next window, and then open mutt and tail in windows 8 and 9
#   respectively.
#
# screen top
# screen -t monkey ssh monkey
# screen -t mail 8 mutt
# screen -t daemon 9 tail -f /var/log/daemon.log

นี่คือส่วนที่คุณจะต้องเพิ่มชื่อสคริปต์เพื่อเรียกใช้และที่จะช่วยให้คุณทำทุกอย่างที่คุณต้องการจากหน้าจอ


อย่างใดคำสั่งนั้น ( screen -dmS ...) ไม่ทำงานสำหรับฉันแม้ว่ามันจะควรจริง ๆ ฉันเรียกใช้แล้วscreen -lsและไม่พบซ็อกเก็ต คิด?
bongbang

คุณใช้ distro อะไร
ryekayo

NAME = "Ubuntu" VERSION = "14.04.1 LTS, Trusty Tahr" ฉันคิดว่า มันเป็นเครื่องเสมือน
bongbang

Gimme เล็กน้อยเพราะฉันเพิ่งออกจากงานและลองใช้หน้าจอบนเครื่องของฉันซึ่งเป็น Ubuntu 14.04
ryekayo

@bongbang - หน้าจอคุณมีรุ่นอะไร?
slm

3

นี่เก่าไปหน่อย แต่ก็เป็นหนึ่งในไม่กี่กระทู้ที่ฉันสามารถทำได้ หลังจาก toying arount วิธีเดียวที่จะทำให้การทำงานนี้ในโหมดเดี่ยวด้วย Ubuntu 14 คือ

screen -d -m -t nameofwindow sh nameoflaunch.sh

การเปิดตัวจะเป็นส่วนที่สองด้านบนที่มีคำสั่ง java และเวอร์ชันเซิร์ฟเวอร์ปัจจุบัน ฉันวิ่งวานิลลา

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