nodejs服务后台持续运行三种方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs服务后台持续运行三种方法相关的知识,希望对你有一定的参考价值。

参考技术A forever是一个nodejs守护进程,完全由命令行操控。forever会监控nodejs服务,并在服务挂掉后进行重启。

1、安装 forever

npm install forever -g

2、启动服务

service forever start

3、使用 forever 启动 js 文件

forever start index.js

4、停止 js 文件

forever stop index.js

5、启动js文件并输出日志文件

forever start -l forever.log -o out.log -e err.log index.js

6、重启js文件

forever restart index.js

7、查看正在运行的进程

forever list

pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能

npm install -g pm2

pm2 start app.js    // 启动

pm2 start app.js-i max   //启动 使用所有CPU核心的集群

pm2 stop app.js       // 停止

pm2 stop all             // 停止所有

pm2 restart app.js    // 重启

pm2 restart all          // 重启所有

pm2 delete  app.js     // 关闭

运行 pm2 startup ,即在/etc/init.d/目录下生成pm2-root的启动脚本,且自动将pm2-root设为服务。

运行 pm2 save ,会将当前pm2所运行的应用保存在/root/.pm2/dump.pm2下,当开机重启时,运行pm2-root服务脚本,并且到/root/.pm2/dump.pm2下读取应用并启动。

nodejs 自带node.js自带服务nohub,不需要安装别的包。

缺点:存在无法查询日志等问题,关闭终端后服务也就关闭了, 经测试是这样的。

nohup node ***.js &

ios后台程序持续运行方法

    iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。但是有很多社交类的软件,如果因为它在后台就不能刷新到新的数据的话,那么这回影响到用户的体验,下面是将程序退到后台后可以继续运行儿不被系统清除的方法。

    在appdelegate中    

- (void)applicationDidEnterBackground:(UIApplication *)application{

 UIBackgroundTaskIdentifier  ID=[application beginBackgroundTaskWithExpirationHandler:^{

        

              //当后台任务结束时调用

              [application   endBackgroundTask:ID];

}  这个函数是在程序进入后台的时候调用,我们在这个函数中先开启一个后台任务 只不过它的时间不确定, 优先级比较低 , 如果系统内存不够的话,就要被关闭了

当这一步失效后,就要使出杀手锏了,苹果系统关于后台程序的优先级有着明确的划分,如果你在播放音乐的话,那么你的优先级很高,系统一般不会清除;

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

// 在真机上后台播放音乐,需要设置音频会话

    AVAudioSession  *session=[AVAudioSession sharedInstance]; //这是个单例模式,全局都可以使用

    //设置会话类型(后台播放)

    [session setCategory:AVAudioSessionCategoryPlayback error:nil];

    //激活

    [session setActive:YES error:nil];

// 即将失去焦点的时候

- (void)applicationWillResignActive:(UIApplication *)application {

   

    NSURL *url=[[NSBundle mainBundle]URLForResource:@"aaa.mp3" withExtension:nil];   //aaa.mp3是一首无声的音乐

    AVAudioPlayer *player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];

    [player prepareToPlay];

    

    //一直循环播放

    player.numberOfLoops=-1;

    [player play];

    _player=player;

}

 使用以上两步就可以成功的欺骗苹果系统,咱们的程序就可以一直在后台运行。

  

以上是关于nodejs服务后台持续运行三种方法的主要内容,如果未能解决你的问题,请参考以下文章

windows下怎么后台运行nodejs程序

forever让node.js持久运行

nodejs进程后台运行 不中断

nodejs进程后台运行 不中断

Node.js部署到服务器之后台守护进程管理器Forever

服务无法在持续的后台位置跟踪上运行