2016-07-29 100 views
0

我有一個運行在我的服務器(Ubuntu 14.04)上的節點js腳本。我希望它每天都會自動重新啓動。可能嗎?我應該使用bash,還是可以從節點js腳本中執行?如何真正做到這一點?節點js每隔一段時間間隔重新啓動服務器

+1

你或許應該考慮使用[任務調度(http://askubuntu.com/questions/650387/how-do-i-create-a-task-scheduler-in-ubuntu)爲Ubuntu 。 – peteb

+0

我實際上沒有對該服務器的GUI訪問權限。我只有遠程終端。 – duri

+0

你應該仔細閱讀後,你會看到它有一個CLI。 – peteb

回答

3

您應該爲您的node.js應用使用Cron作業。

這是一個例子:一個作業在每天上午11:30

var CronJob = require('cron').CronJob; 
var job = new CronJob({ 
    cronTime: '00 30 11 * * *', 
    onTick: function() { 
    /* 
    * Runs every day at 11:30:00 AM. 
    */ 
    }, 
    start: false, 
    timeZone: 'America/Los_Angeles' 
}); 
job.start(); 

你可以找到更多的文檔在這裏:https://github.com/ncb000gt/node-cron

+0

我寧願一些bash解決方案 – duri

+1

@duri你問是否有辦法使用bash或節點來做到這一點,如果你不想要一個節點的方法,你不應該提供它作爲一個可以接受的問題的解決方案。 – peteb

+0

我想知道是否可以從它內部重新啓動節點進程。不,如果有一個onTick函數每天運行...我可以做setInterval函數來做同樣的事情! – duri

0

另一種解決方案(更復雜)是使bash的文件查殺節點進程,而不是從shell運行節點服務器。

$ ps aux | grep node 
you PID 1.5 0.2 44172 8260 pts/2 S 15:25 0:00 node app.js 
$ kill -2 $! 
#!/usr/bin/bash 
node 'YOUR_NODE_SERVER.JS file path' 

要自動執行bash文件,請在使用Mac的情況下使用cron或Crontab。 將此行添加到cron文件。

00 01 * * * /Users/admin/myShellFile.sh 
相關問題