เริ่มต้นโดยอัตโนมัติตลอดไป (โหนด) ในการรีสตาร์ทระบบ


190

ฉันใช้โมดูลตลอดไปของโหนดเพื่อให้เซิร์ฟเวอร์โหนดทำงานอยู่ อย่างไรก็ตามจะสิ้นสุดตลอดกาลเมื่อมีการรีสตาร์ทระบบ มีวิธีใดบ้างที่ฉันจะสามารถเริ่มเซิร์ฟเวอร์โหนดโดยอัตโนมัติ (ตลอดไป) เมื่อระบบรีสตาร์ท?


1
เซิร์ฟเวอร์นี้อยู่ในคลาวด์หรือไม่ คุณมีสคริปต์สำหรับบูตหรือไม่
Jorge Aranda

6
ชำระเงินPM2 ! นอกจากนี้ยังรองรับการสร้างสคริปต์เริ่มต้น (systemd, systemv ... ) pm2.keymetrics.io/docs/usage/startup
Unitech

คำตอบ:


344

ฉันอยากจะแนะนำให้ใช้ crontab มันใช้งานง่าย

ทำอย่างไร

  1. ในการเริ่มแก้ไขให้รันสิ่งต่อไปนี้แทน "testuser" ด้วยผู้ใช้รันไทม์ที่คุณต้องการสำหรับกระบวนการโหนด หากคุณเลือกผู้ใช้อื่นนอกเหนือจากตัวคุณเองคุณจะต้องเรียกใช้งานด้วย sudo

    $ crontab -u testuser -e
  2. หากคุณไม่เคยทำสิ่งนี้มาก่อนมันจะถามคุณว่าคุณต้องการแก้ไขด้วยตัวแก้ไขใด ฉันชอบเสียงเรียกเข้า แต่จะแนะนำนาโนให้ใช้งานง่าย

  3. เมื่ออยู่ในเครื่องมือแก้ไขให้เพิ่มบรรทัดต่อไปนี้:

    @reboot /usr/local/bin/forever start /your/path/to/your/app.js
  4. บันทึกไฟล์ คุณควรได้รับคำติชมว่ามีการติดตั้ง cron แล้ว

  5. สำหรับการยืนยันการติดตั้ง cron เพิ่มเติมให้ดำเนินการดังต่อไปนี้ (แทนที่ "testuser" ด้วยชื่อผู้ใช้เป้าหมายของคุณอีกครั้ง) เพื่อแสดงรายการ crons ที่ติดตั้งอยู่ในปัจจุบัน:

    $ crontab -u testuser -l 

โปรดทราบว่าในความคิดของฉันคุณควรใช้เส้นทางแบบเต็มทุกครั้งเมื่อรันไบนารีใน cron นอกจากนี้หากเส้นทางสู่สคริปต์ถาวรของคุณไม่ถูกต้องให้เรียกใช้which foreverเพื่อรับเส้นทางแบบเต็ม

เมื่อรับforeverสายnodeคุณอาจต้องระบุเส้นทางแบบเต็มเพื่อnode:

@reboot /usr/local/bin/forever start -c /usr/local/bin/node /your/path/to/your/app.js

อ่านเพิ่มเติม


2
วิธีนี้เป็นสิ่งที่ดี แต่สำหรับกรณีเหล่านั้นเมื่อระบบรีบูท หากเซิร์ฟเวอร์ปิดแล้วเปิดเครื่อง - งาน cron นี้จะไม่ทำงาน
พัฒนาซอฟต์แวร์

6
อะไรทำให้คุณคิดอย่างนั้น en.wikipedia.org/wiki/Cron#Predefined_scheduling_definitionsอธิบายว่า@rebootการเริ่มต้น cron บน cron deamon เริ่มต้นขึ้น เพื่อเพิ่มฉันไม่เคยเจอสถานการณ์ที่จะแนะนำให้ cron ของฉันที่ตั้งไว้ที่@rebootไม่ทำงานในการบูตระบบ วิธีที่คุณปิดระบบไม่เกี่ยวข้องกับสิ่งนี้
Julian Lannigan

16
แต่ดูเหมือนว่ามันจะไม่ได้ติดตั้งยังดังนั้นนี้จะไม่ทำงานถ้าชีวิตในรหัสของคุณ/home /home
chovy

6
ฉันพบว่าข้างต้นล้มเหลวสำหรับฉันเพราะโหนดไม่ได้อยู่ในเส้นทางเมื่อ cron พยายามที่จะทำงานตลอดไปแม้จะมีตัวเลือก -c อย่างไรก็ตามปรากฎว่าคุณสามารถเพิ่มคำสั่ง PATH = โดยตรงใน crontab ตราบใดที่มันอยู่เหนือคำสั่งกำหนดการ เมื่อตั้งค่า PATH แล้วคำสั่ง @reboot จะทำงานเหมือนฝัน
YorkshireKev

2
ขอบคุณสำหรับความคิดเห็นของคุณ @ chovy มันมีประโยชน์มาก สำหรับผู้ที่ใช้ตัวแปรสภาพแวดล้อมจาก bashrc ให้คำนึงถึงความคิดเห็นของเขา เนื่องจาก / home ไม่ถูกเมาท์มันจะไม่ทำงาน ตั้งค่าตัวแปรที่คำสั่ง crontab อย่างเช่น@reboot varname=value ...
lsborg

123

คุณสามารถใช้บริการตลอดไปสำหรับการทำสิ่งนี้

npm install -g forever-service
forever-service install test

สิ่งนี้จะจัดเตรียม app.js ในไดเรกทอรีปัจจุบันเป็นบริการผ่านตลอดไป บริการจะรีสตาร์ทโดยอัตโนมัติทุกครั้งที่มีการรีสตาร์ทระบบ นอกจากนี้เมื่อหยุดมันจะพยายามหยุดอย่างสง่างาม สคริปต์นี้ใช้สคริปต์ logrotate เช่นกัน

URL GitHub: https://github.com/zapty/forever-service

หมายเหตุ: ฉันเป็นผู้แต่งบริการตลอดกาล


2
ใช้ตัวเลือก -e "PORT = 80 ENV = prod FOO = bar"
arva

2
ฉันไม่เข้าใจวิธีการให้บริการตลอดไป อะไรคือ "การทดสอบ" ใน "การทดสอบการติดตั้งตลอดกาล" คำสั่งของฉันเพื่อเริ่มแอปของฉันตลอดไปคือ: "/ usr / local / bin / ตลอดไปเริ่มต้น -c / usr / local / bin / node / home / alex / สาธารณะ / node_modules / http-server / bin / http-server -s - d false " ฉันต้องเขียนอะไร
อเล็กซ์

3
ทดสอบที่นี่คือชื่อของบริการ เมื่อคุณรันการทดสอบการติดตั้งตลอดไปบริการจะสร้างบริการที่เรียกว่าการทดสอบเพื่อเรียกใช้ app.js ในไดเรกทอรีนั้นเพื่อให้เรียกใช้เป็นบริการ ฉันขอแนะนำให้อ่านเอกสารความช่วยเหลือในหน้า gihub และเพิ่มปัญหาหากคุณไม่เข้าใจ
arva

6
@ Alex - เพื่อชี้แจงความคิดเห็นของ Arva - ในตัวอย่างforever-service install test, testจะเป็นชื่อของบริการแต่ไม่ได้ชื่อของไฟล์ที่เกิดขึ้นจริงโปรแกรม / โหนด .js การวิ่ง โดยค่าเริ่มต้นจะอนุมานว่าชื่อของโปรแกรมที่เป็นapp.jsแต่คุณสามารถแทนที่ด้วยธงชาติดังต่อไปนี้:--script forever-service install test --script main.js(ยังไม่ได้ทดสอบดังนั้นโปรดแก้ไขให้ฉันถ้ามีรายละเอียดของไวยากรณ์ที่ไม่ถูกต้อง)
Dan Nissenbaum

3
@DanNissenbaum ขอบคุณที่ตอบคำถาม ตอนนี้ฉันใช้ PM2 ซึ่งทำงานได้อย่างสวยงาม คำแนะนำ: digitalocean.com/community/tutorials/…
อเล็กซ์

26
  1. ติดตั้ง PM2 ทั่วโลกโดยใช้ NPM

    npm install pm2 -g

  2. เริ่มต้นสคริปต์ของคุณด้วย pm2

    pm2 start app.js

  3. สร้างสคริปต์เริ่มต้นที่ใช้งานอยู่

    pm2 startup

    หมายเหตุ: การเริ่มต้น pm2 สำหรับการเริ่ม PM2 เมื่อระบบรีบูต PM2 เริ่มทำงานครั้งหนึ่งแล้วรีสตาร์ทกระบวนการทั้งหมดที่เคยจัดการก่อนที่ระบบจะหยุดทำงาน

ในกรณีที่คุณต้องการปิดการใช้งานการเริ่มต้นอัตโนมัติเพียงแค่ใช้ pm2 unstartup

หากคุณต้องการให้สคริปต์เริ่มต้นทำงานภายใต้ผู้ใช้รายอื่นเพียงใช้-u <username>ตัวเลือกและ--hp <user_home>:


กรุณาอย่าโพสต์คำตอบเดียวกันกับหลายคำถาม
FelixSFD

ฉันชอบวิธีการกลั่น PM2 และมาพร้อมกับเครื่องมือตรวจสอบที่ยอดเยี่ยม หวังว่านี่จะเป็นไฮไลต์เพิ่มเติมสำหรับคนอื่น ๆ @ rv7 ฉันแน่ใจว่าคุณเห็นนี้ แต่มีวิธีการแก้ปัญหาหน้าต่าง: npmjs.com/package/pm2-windows-service ยังไม่ได้ลองด้วยตัวเอง
John Lee

26

กรณีนี้ใช้ได้สำหรับ Debian

เพิ่มรายการต่อไปนี้เพื่อ /etc/rc.local

/usr/bin/sudo -u {{user}} /usr/local/bin/forever start {{app path}}

  • {{user}} แทนที่ชื่อผู้ใช้ของคุณ
  • {{app path}}แทนที่เส้นทางแอปของคุณ ตัวอย่างเช่น,/var/www/test/app.js

2
วิธีนี้ไม่ได้จัดการกับการปิดระบบที่สง่างาม แต่สำหรับคนจำนวนมากนี่อาจไม่ใช่ปัญหา
UpTheCreek

6
BTW - ฉันคิดว่าคุณควรแก้ไข/etc/rc.localไม่ใช่/etc/init.d/rc.local
UpTheCreek

เห็นด้วยกับ @UpTheCreek ว่า /etc/rc.local เป็นสถานที่ที่เหมาะสมกว่าในการเพิ่มสิ่งนี้ - ดู: unix.stackexchange.com/a/59945สำหรับคำอธิบายที่ดี
ดังนั้นเมื่อ

2
นอกจากนี้คุณอาจต้องการระบุ 'ไดเรกทอรีการทำงานปัจจุบัน' ในapp.jsเพื่อให้แน่ใจว่าไฟล์ที่เกี่ยวข้องจะถูกโหลดอย่างถูกต้อง - process.chdir('/your/path/to/your/app'); เอกสารอ้างอิง Node.js ที่นี่
ดังนั้นเหนือมัน

1
หากคุณจำเป็นต้องตัวแปรสภาพแวดล้อมที่กำหนดไว้สำหรับสคริปต์ Node.js ของคุณ (เช่น $ พอร์ตสำหรับด่วน) เพิ่มบรรทัดต่อไปนี้/etc/rc.localได้เคล็ดลับสำหรับฉัน:( cd /path/to/project && /usr/bin/sudo -u {{user}} env PORT={{port number}} PATH=$PATH:/usr/local/bin sh -c "forever start app.js" )
sffc

11

วิธี crontab ทางเลือกที่แรงบันดาลใจจากนี้คำตอบและนี้โพสต์บล็อก

1. สร้างไฟล์สคริปต์ทุบตี (เปลี่ยนบ๊อบเป็นผู้ใช้ที่ต้องการ)

vi /home/bob/node_server_init.sh

2. คัดลอกและวางสิ่งนี้ลงในไฟล์ที่คุณเพิ่งสร้างขึ้น

#!/bin/sh

export NODE_ENV=production
export PATH=/usr/local/bin:$PATH
forever start /node/server/path/server.js > /dev/null

ตรวจสอบให้แน่ใจว่าได้แก้ไขเส้นทางด้านบนตามค่ากำหนดของคุณ!

3. ตรวจสอบให้แน่ใจว่าสคริปต์ bash สามารถทำงานได้

chmod 700 /home/bob/node_server_init.sh

4. ทดสอบสคริปต์ทุบตี

sh /home/bob/node_server_init.sh

5. แทนที่ "bob" ด้วยผู้ใช้รันไทม์สำหรับโหนด

crontab -u bob -e

6. คัดลอกและวาง (เปลี่ยนบ๊อบเป็นผู้ใช้ที่ต้องการ)

@reboot /bin/sh /home/bob/node_server_init.sh

บันทึก crontab

คุณทำไปจนจบรางวัลของคุณคือรีบูต (เพื่อทดสอบ) :)


วิธีนี้ใช้ได้ผลดีที่สุดสำหรับฉัน จะเลิกตลอดไปเมื่อฉันใส่เส้นทางแบบเต็มไปยังไฟล์ server.js ถ้าฉันใช้มันในไดเรกทอรีเดียวกัน Foreveer จะทำงานได้ดี สาเหตุที่ล้มเหลวคือไฟล์ server.js รวมไฟล์อื่น ๆ แต่เส้นทางถูกทำให้ยุ่งเหยิง ใช้วิธีนี้ฉันสามารถซีดีในสคริปต์. sh ของฉันไปยังไดเรกทอรีจากนั้นเรียกใช้ทุกอย่างที่เกี่ยวข้องกับที่นั่น
BeardedGeek

9

คำตอบที่คัดลอกมาจากที่แนบมาคำถาม

คุณสามารถใช้PM2ซึ่งเป็นผู้จัดการกระบวนการผลิตสำหรับแอปพลิเคชัน Node.js ที่มี load balancer ในตัว

ติดตั้ง PM2

$ npm install pm2 -g

เริ่มแอปพลิเคชัน

$ pm2 start app.js

หากคุณใช้ express คุณสามารถเริ่มแอพได้

pm2 start ./bin/www --name="app"

การแสดงรายการกระบวนการทำงานทั้งหมด:

$ pm2 list

มันจะแสดงรายการกระบวนการทั้งหมด จากนั้นคุณสามารถหยุด / เริ่มบริการของคุณใหม่โดยใช้ ID หรือชื่อของแอพด้วยคำสั่งต่อไปนี้

$ pm2 stop all                  
$ pm2 stop 0                    
$ pm2 restart all               

เพื่อแสดงบันทึก

$ pm2 logs ['all'|app_name|app_id]

มันเริ่มโดยอัตโนมัติในการบูตระบบได้อย่างไร คุณเพียงแค่คัดลอก / วางการพิมพ์ด้วยตนเองของ CLI
Green

@Green, Run $pm2 startupหลังจากนั้นคุณจะเห็น pm2 ที่ขอให้เรียกใช้คำสั่งด้วยตนเองคัดลอกและเรียกใช้ จากนั้น$pm2 saveตอนนี้ app.js ของคุณจะอยู่รอดได้ในการรีบูตระบบ
yajnesh

7

คุณต้องสร้างเชลล์สคริปต์ในโฟลเดอร์ /etc/init.d มันซับซ้อนหากคุณไม่เคยทำมันมาก่อน แต่มีข้อมูลมากมายบนเว็บในสคริปต์ init.d

นี่เป็นตัวอย่างสคริปต์ที่ฉันสร้างขึ้นเพื่อเรียกใช้ไซต์ CoffeeScript อย่างถาวร:

#!/bin/bash
#
# initd-example      Node init.d 
#
# chkconfig: 345 
# description: Script to start a coffee script application through forever
# processname: forever/coffeescript/node
# pidfile: /var/run/forever-initd-hectorcorrea.pid 
# logfile: /var/run/forever-initd-hectorcorrea.log
#
# Based on a script posted by https://gist.github.com/jinze at https://gist.github.com/3748766
#


# Source function library.
. /lib/lsb/init-functions


pidFile=/var/run/forever-initd-hectorcorrea.pid 
logFile=/var/run/forever-initd-hectorcorrea.log 

sourceDir=/home/hectorlinux/website
coffeeFile=app.coffee
scriptId=$sourceDir/$coffeeFile


start() {
    echo "Starting $scriptId"

    # This is found in the library referenced at the top of the script
    start_daemon

    # Start our CoffeeScript app through forever
    # Notice that we change the PATH because on reboot
    # the PATH does not include the path to node.
    # Launching forever or coffee with a full path
    # does not work unless we set the PATH.
    cd $sourceDir
    PATH=/usr/local/bin:$PATH
    NODE_ENV=production PORT=80 forever start --pidFile $pidFile -l $logFile -a -d --sourceDir $sourceDir/ -c coffee $coffeeFile

    RETVAL=$?
}

restart() {
    echo -n "Restarting $scriptId"
    /usr/local/bin/forever restart $scriptId
    RETVAL=$?
}

stop() {
    echo -n "Shutting down $scriptId"
    /usr/local/bin/forever stop $scriptId
    RETVAL=$?
}

status() {
    echo -n "Status $scriptId"
    /usr/local/bin/forever list
    RETVAL=$?
}


case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    restart)
        restart
        ;;
    *)
        echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $RETVAL

ฉันต้องตรวจสอบให้แน่ใจว่าโฟลเดอร์และเส้นทางถูกตั้งค่าอย่างชัดเจนหรือพร้อมใช้งานสำหรับผู้ใช้รูทตั้งแต่สคริปต์ init.d รันเป็นรูท


2
หากคุณมีการขึ้นต่อกันใด ๆ ที่เริ่มต้นด้วย init.d คุณอาจมีปัญหาในการโหลดคำสั่ง
UpTheCreek

@ alexandru.topliceanu ฉันได้แก้ไขลิงก์แล้ว
Hector Correa

6

ใช้PM2

ซึ่งเป็นตัวเลือกที่ดีที่สุดในการรันเซิร์ฟเวอร์ที่ใช้งานจริง

ข้อดีของการใช้แอปพลิเคชันของคุณในลักษณะนี้คืออะไร?

  • PM2 จะรีสตาร์ทแอปพลิเคชันของคุณโดยอัตโนมัติหากเกิดข้อผิดพลาด

  • PM2 จะเก็บบันทึกข้อยกเว้นที่ไม่ได้จัดการของคุณ - ในกรณีนี้ในไฟล์ที่ /home/safeuser/.pm2/logs/app-err.log

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

Ref: https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps


5

Forever ไม่ได้ถูกสร้างขึ้นเพื่อให้แอปพลิเคชันโหนดทำงานเป็นบริการ แนวทางที่ถูกต้องคือสร้างรายการ / etc / inittab (ระบบ linux เก่า) หรือ upstart (ระบบ linux ที่ใหม่กว่า)

นี่คือเอกสารบางส่วนเกี่ยวกับวิธีตั้งค่านี้เป็นแบบพุ่งพรวด: https://github.com/cvee/node-upstart


การพุ่งพรวดทำให้ฉันล้มเหลวใน CentOS และฉันอ่านว่ามันจะหายไป การสร้างรายการ init.d ไม่ได้จริงๆใช้วิธีที่เป็นมิตรมากที่สุด แต่มันเป็นลินุกซ์ผมคิดว่า :)
Jorre

5

crontabใช้งานไม่ได้กับฉันบน CentOS x86 6.5 @reboot ดูเหมือนว่าจะไม่ทำงาน

ในที่สุดฉันก็ได้วิธีนี้มา:

แก้ไข: /etc/rc.local

sudo vi /etc/rc.local

เพิ่มบรรทัดนี้ในตอนท้ายของไฟล์ เปลี่ยนUSER_NAMEและPATH_TO_PROJECTเป็นของคุณเอง NODE_ENV=productionหมายถึงแอปทำงานในโหมดการผลิต คุณสามารถเพิ่มบรรทัดเพิ่มเติมได้หากคุณต้องการรันมากกว่าหนึ่งแอป node.js

su - USER_NAME -c "NODE_ENV=production /usr/local/bin/forever start /PATH_TO_PROJECT/app.js"

ไม่ได้ตั้งอยู่ในแนวเส้นที่แยกจากกันของแอปจะทำงานยังคงอยู่ในโหมดการพัฒนาเพราะตลอดไปไม่ได้NODE_ENVNODE_ENV

# WRONG!
su - USER_NAME -c "export NODE_ENV=production"

บันทึกและออกจาก vi (กดESC : w q return) คุณสามารถลองรีบูตเซิร์ฟเวอร์ของคุณ หลังจากเซิร์ฟเวอร์ของคุณรีบูตแอป node.js ของคุณควรรันโดยอัตโนมัติแม้ว่าคุณจะไม่ได้ลงชื่อเข้าใช้บัญชีใด ๆ จากระยะไกลผ่าน ssh

คุณควรตั้งค่าNODE_ENVสภาพแวดล้อมในเชลล์ของคุณ NODE_ENVจะถูกตั้งค่าโดยอัตโนมัติเมื่อบัญชีของคุณUSER_NAMEเข้าสู่ระบบ

echo export NODE_ENV=production >> ~/.bash_profile

ดังนั้นคุณสามารถเรียกใช้คำสั่งเช่นหยุด / เริ่มต้น/PATH_TO_PROJECT/app.jsผ่าน ssh โดยไม่ต้องตั้งค่าNODE_ENVอีกครั้ง


มีปัญหาเดียวกันบนเดเบียน 7.6 คงที่นี้สำหรับฉัน ขอบคุณมาก.
Daniele Vrut

ในกรณีที่คุณไม่ต้องการใช้ 'ถาวร' คุณสามารถเปลี่ยนบรรทัดเป็น 'su - USER_NAME -c "NODE_ENV = โหนดการผลิต / PATH_TO_PROJECT / bin / www"'
yaobin

3

ฉันเขียนสคริปต์ที่ทำสิ่งนี้:

https://github.com/chovy/node-startup

ฉันไม่ได้ลองตลอดไป แต่คุณสามารถปรับแต่งคำสั่งที่มันทำงานดังนั้นมันควรจะตรงไปข้างหน้า:

/etc/init.d/node-app start
/etc/init.d/node-app restart
/etc/init.d/node-app stop

2

ปัญหาของ rc.local คือการเข้าถึงคำสั่งในฐานะ root ซึ่งแตกต่างจากการเข้าสู่ระบบในฐานะผู้ใช้และการใช้ sudo

ฉันแก้ไขปัญหานี้ด้วยการเพิ่มสคริปต์. sh ด้วยคำสั่งเริ่มต้นที่ฉันต้องการ / etc / profile.d ไฟล์. sh ใด ๆ ใน profile.d จะโหลดโดยอัตโนมัติและคำสั่งใด ๆ จะถูกปฏิบัติเสมือนว่าคุณใช้ sudo ปกติ

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


1

ฉันลองคำตอบข้างต้นมากมาย ไม่มีใครทำงานให้ฉันได้ แอพของฉันได้รับการติดตั้งใน/homeฐานะผู้ใช้ไม่ใช่ในฐานะรูท นี่อาจหมายความว่าเมื่อสคริปต์เริ่มต้นที่กล่าวถึงทำงาน/homeยังไม่ได้เชื่อมต่อดังนั้นแอปจึงไม่เริ่มทำงาน

จากนั้นฉันก็พบคำแนะนำเหล่านี้โดย Digital Ocean:

https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps

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


PM2 มีดาวจำนวนมากขึ้น (2x) บน gitHub มากกว่าตลอดกาลและมันก็มีฟีเจอร์มากมายเช่นกัน ฉันคิดว่าคำตอบส่วนใหญ่ล้าสมัยที่นี่
inf3rno

0

crontab ตัวอย่างสมบูรณ์ (อยู่ที่ / etc / crontab)

#!/bin/bash

# edit this file with .. crontab -u root -e
# view this file with .. crontab -u root -l

# put your path here if it differs
PATH=/root/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

# * * * * * echo "executes once every minute" > /root/deleteme

@reboot cd /root/bible-api-dbt-server; npm run forever;
@reboot cd /root/database-api-server; npm run forever;
@reboot cd /root/mailer-api-server; npm run forever;

-2

คุณสามารถใช้คำสั่งต่อไปนี้ในเปลือกของคุณเพื่อเริ่มโหนดของคุณตลอดไป:

forever app.js //my node script

คุณต้องจำไว้ว่าควรใช้เซิร์ฟเวอร์ที่แอพของคุณทำงานอยู่เสมอ

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