美文网首页我爱编程
守护进程转换

守护进程转换

作者: 城边编程_认真写技术 | 来源:发表于2018-01-18 00:16 被阅读86次

在Linux下大部分软件都不会以守护进程运行,比如基于Python的Superset、Sentry,再比如基于Node的Phantomjs。这都是比较出名的开源软件,虽然与Nginx和php-fpm比有差距,但绝对算的上流行。

这样讲可能不直观,我们和Nginx的启动方式做个对比。Nginx的启动方式有如下两种:

# 第一种
$ service nginx start

#第二种
$ ./sbin/nginx

关闭与重启也很方便:

# 第一种
$ service nginx stop
$ service nginx restart

#第二种
$ ./sbin/nginx -s stop
$ ./sbin/nginx -s restart/reload

Nginx就是以守护进程在运行,我们登录服务器后运行命令,登出服务器后Nginx程序并不会退出。

而非守护进程运行的Superset、Sentry、Phantomjs,当我们的帐号登出后,程序也会马上退出。这肯定不是我们想看到的,于是出现了很多办法来让Superset、Sentry、Phantomjs一直保持运行不退出。

  1. & 让程序在后台运行

    $ phantomjs test.js &
    

    & 用在一个命令的最后,可以把这个命令放到后台执行,程序输出的信息会实时打印出来,非常影响操作。帐号登出后程序也会退出。关闭程序需要使用 kill 命令。

  2. nohup 让程序一直在后台运行

    nohup phantomjs test.js >/dev/null 2>t.log &
    

    nohup用在一个命令的最开始,可以把这个命令放到后台执行,帐号登出后程序不会退出。
    关闭程序需要使用 kill 命令。

  3. systemctl

    使用&和nohup每次重启都很废操作,这时候就引入了 systemctl ,我们先看基本操作:

    $ systemctl start phantomjs //开始
    $ systemctl stop phantomjs  //结束
    $ systemctl restart phantomjs //重启
    $ systemctl status phantomjs //状态信息
    

    使用systemctl命令能很方便的将非守护进程运行的程序以守护进程的方式在后台运行,无论是开启、关闭、重启、查看状态都非常的方便。

下面我们说说如何转换:

  1. 新建service文件

    $ vim /usr/lib/systemd/system/phantomjs.service
    ## 内容如下
    [Unit]
    Description=Phantomjs by AriyaHidayat
    
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/phantomjs index.js -p 8088 -t 300
    
  2. 运行

    $ systemctl start phantomjs //开始
    

systemctl service文件的编写非常简单,也很灵活,有大量的参考文档。更丰富的功能,这里不做深入介绍。通过systemctl我们能将非守护进程的服务转换成守护进程,通过命令统一管理,提高生产力。

喜欢编程的朋友可以关注我的个人公众号,保证每周三篇原创。 程序员编程日志

相关文章

  • 守护进程转换

    在Linux下大部分软件都不会以守护进程运行,比如基于Python的Superset、Sentry,再比如基于No...

  • rsync服务企业应用

    守护进程服务企业应用: 守护进程多模块功能配置 守护进程的排除功能实践 守护进程来创建备份目录 守护进程的访问控制...

  • Python多进程

    守护进程 守护进程其实就是“子进程“是否伴随主进程一起结束:守护==>伴随,即守护进程会伴随主进程的代码运行完毕后...

  • 守护进程和守护线程详解

    守护进程 什么是守护进程? 守护进程会在主进程代码运行结束的情况下,立即挂掉。 守护进程本身就是一个子进程。 主进...

  • 4.5、守护进程及信号处理实战

    1、守护进程功能的实现守护进程融入项目,解放终端。相关配置:Daemon = 1;按照守护进程的方式运行守护进程如...

  • PHP创建守护进程

    PHP 创建守护进程 执行守护进程

  • forever

    start:启动守护进程stop:停止守护进程stopall:停止所有的forever进程restart:重启守护...

  • 进程守护进程

    什么是守护进程?Linux 的大多数服务器就是用守护进程实现的,使用ps -axj可以查看守护进程: 守护进程基本...

  • redis.conf详解之daemonize

    用法 作为非守护进程运行 作为守护进程运行 注意事项: 默认情况下,Redis不作为守护进程运行。如果以守护进程运...

  • 守护进程,互斥锁,队列,生产者消费者模型

    守护进程 关于守护进程需要强调两点: 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进...

网友评论

    本文标题:守护进程转换

    本文链接:https://www.haomeiwen.com/subject/mwppoxtx.html