สร้างเซสชันของหน้าจอด้วยสคริปต์ทุบตีโดยใช้ contab


8

ฉันต้องการไฟล์ขวดที่จะทำงานทุกครั้งที่รองเท้าเซิร์ฟเวอร์ขึ้น (เรากำลังใช้ VPS) และดังนั้นผมจึงได้แก้ไข crontab ใช้แล้วเพิ่มcrontab -e @reboot bash /home/bash/startserver.shแต่ฉันไม่ได้ไปถึงจุดที่สคริปต์ทำงานเลย

นี่คือสคริปต์ของฉัน:

#!/bin/bash
screen -S bukkit
cd $HOME/server
java -jar bukkit.jar

เหตุผลที่ฉันต้องใช้screenคือเมื่อฉันเริ่ม bukkit.jar มันจะเข้าสู่คอนโซลที่ฉันสามารถป้อนคำสั่งเพิ่มเติมสำหรับโปรแกรมนั้นได้ (ฉันแน่ใจว่าคุณคุ้นเคยกับ Minecraft และเซิร์ฟเวอร์ในไซต์นี้แล้วก็ตาม ฮ่าฮ่า) แต่ฉันต้องสามารถทำคำสั่งอื่น ๆ ในฐานะรูทและสำหรับโปรแกรมอื่น ๆ ในขณะที่มันกำลังทำงานอยู่และปิดเซสชัน PuTTY ของฉันด้วย

ปัญหาเดียวก็คือว่าเมื่อสคริปต์นี้จะดำเนินการจะสร้างเซสชั่นหน้าจอ แต่มัน ID ไม่ได้ระบุไว้ในscreen -lsขณะที่ประชาชนจะว่างเปล่า แต่ฉันต้องไป/run/screen/S-rootหารหัสแล้วใช้รหัสทั่วไปscreen -X -S $name quitกับมัน

บางทีนี่อาจเป็นไปไม่ได้หรืออาจมีวิธีที่ง่ายกว่าในการทำเช่นนี้ (ฉันจะรักง่ายกว่า) แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงไม่ทำงาน และถ้าเป็นไปได้มันเป็นไปได้ที่จะเข้าร่วมเซสชันด้วยscreen -S bukkitเมื่อรันสคริปต์ทุบตี? (คำถามหลายข้อฉันเดา แต่ขอบคุณมากสำหรับความช่วยเหลือของคุณ! (วงเล็บ))

คำตอบ:


15

เริ่มหน้าจอในโหมดเดี่ยวและทำให้มันรันคำสั่งของคุณภายใน:

screen -d -m -S bukkit bash -c 'cd $HOME/server && java -jar bukkit.jar'

คุณอาจต้องการสร้างสคริปต์เฉพาะbukkit.sh:

#!/bin/bash -e
cd ~/server
java -jar bukkit.jar

ดังนั้นหากสคริปต์ซับซ้อนยิ่งขึ้นคุณไม่จำเป็นต้องเขียนบรรทัดยาวscreenๆ และscreenคำสั่งก็ยังเหมือนเดิมเพียง:

screen -d -m -S bukkit path/to/bukkit.sh

1
ฉันลองทำทั้งสองทางเลือกหนึ่งไฟล์ที่มีอีกต่อไปแล้วหนึ่งไฟล์ที่มีสองไฟล์แยกกัน แต่ตอนนี้หน้าจอจะไม่ถูกสร้างขึ้นเลย ฉันพยายามเรียกใช้คำสั่งโดยตรงจากบรรทัดคำสั่ง แต่นั่นก็ไม่ได้ผล .. : /
Jacob Larson

คุณได้รับข้อความแสดงข้อผิดพลาดหรือบางอย่าง ก่อนอื่นให้bukkit.shสคริปต์ทำงานบนบรรทัดคำสั่ง ถัดไปตรวจสอบว่าใช้screen -S bukkit path/to/bukkit.shงานได้ ถัดไปตรวจสอบว่าใช้screen -d -m -S bukkit path/to/bukkit.shงานได้ ในที่สุดการติดตั้ง cron ลองทำสิ่งที่ง่ายที่สุดก่อนและทำตามขั้นตอนเล็ก ๆ น้อย ๆ เพื่อให้คุณเข้าใจว่าการแบ่งขั้นตอนใด บอกฉันว่าและข้อความผิดพลาดที่คุณได้รับหากคุณต้องการความช่วยเหลือ
janos

1

คุณควรupdate-rc.dดังต่อไปนี้เพื่อเปิดบริการเมื่อบู๊ตเครื่อง:

# update-rc.d cron defaults

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