เริ่มต้นสองสคริปต์ที่รันไปเรื่อย ๆ ในเชลล์สคริปต์


0

ฉันเป็น webdev และฉันใช้ JSX คอมไพเลอร์และ SASS preprocessor เพื่อรวบรวม.jsxและ.scssไฟล์ของฉัน เมื่อฉันเริ่มทำงานฉันจะเปิดคำสั่งทั้งสองแยกจากกัน:

jsx -x jsx jsx js --watch --no-cache-dir
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch

อย่างที่คุณเห็นทั้งคู่มีการ--watchตั้งค่าสถานะหมายความว่าพวกเขาจะทำการติดตามไฟล์ของพวกเขาจนกว่าพวกเขาจะถูกฆ่า ฉันต้องการที่จะสามารถใช้เชลล์สคริปต์ที่เปิดตัวทั้งสองสคริปต์ในครั้งเดียว จนถึงตอนนี้ฉันมี:

#!/bin/sh

echo "Starting JSX Compiler..."
jsx -x jsx jsx js --watch --no-cache-dir
echo "Starting SASS Preprocessor"
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch

แต่นี่จะเรียกใช้งานโปรแกรมแรกเท่านั้นjsxไม่ใช่sassเพราะ jsx กำลังทำงาน ฉันจะเปิดโปรแกรมประเภท "watch" ทั้งสองนี้ผ่าน shellscript ได้อย่างไร

คำตอบ:


1

มีสองสมบัติที่นี่ทำให้บรรลุเป้าหมายของคุณ

ก่อนอื่นคุณสามารถเริ่มคำสั่งแรกในพื้นหลังได้โดยเพิ่มเครื่องหมาย "&" ที่ท้ายบรรทัดคำสั่ง:

#!/bin/sh 
echo "Starting JSX Compiler..."
jsx -x jsx jsx js --watch --no-cache-dir &
echo "Starting SASS Preprocessor" 
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch &

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

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

#!/bin/sh 
echo "Starting JSX Compiler..."
nohup jsx -x jsx jsx js --watch --no-cache-dir &
echo "Starting SASS Preprocessor" 
nohup sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch &

สิ่งนี้จะเริ่มต้นกระบวนการของคุณในพื้นหลังเช่นกันคุณยังคงใช้เครื่องหมายแอมเปอร์แซนด์ในตอนท้ายของคำสั่ง แต่มันจะบอกกระบวนการของคุณเพิ่มเติมเพื่อละเว้นสัญญาณ HUP ด้วยวิธีนี้กระบวนการจะทำงานจนกว่าโปรแกรมจะสิ้นสุดลงกระบวนการจะหยุดทำงานหรือระบบหยุดทำงาน

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