精华内容
下载资源
问答
  • 让geth rpc以守护进程方式运行 一、daemonize 当我们ssh到服务器端, 运行geth --datadir yourdir --rpc --rpc.....命令时, 结束会话时, 该进程也会结束. 那想让它运行在后台, 并不会随着会话结束而结束, 就只能把它...
        

    让geth rpc以守护进程方式运行

    一、daemonize

    当我们ssh到服务器端, 运行geth --datadir yourdir --rpc --rpc.....命令时, 结束会话时, 该进程也会结束. 那想让它运行在后台, 并不会随着会话结束而结束, 就只能把它变成守护进程了.

    php 必须开启pcntl扩展.

    <?php
    
    //daemonize.php
    
    function daemonize()
    {
            $pid = pcntl_fork();
    
            if ($pid > 0) {
                    //main process
                    exit(0);
            } elseif ($pid < 0) {
                    //fork failed
                    echo "fork failed";
            }
    
            posix_setsid();
    
            $pid = pcntl_fork();
    
            if ($pid > 0) {
                    exit(0);
            } elseif ($pid < 0) {
                    echo "fork failed";
            }
    
            fclose(STDOUT);
    }
    
    
    daemonize();
    exec("geth --datadir /home/youraccount/yourdir --networkid 20 --rpc --rpcaddr 0.0.0.0 --rpccorsdomain \"*\" --rpcapi db,net,eth,web3,personal,miner,debug,admin --mine --verbosity 0 ");
    
    sudo php daemonize.php

    就可以以守护进程方式启动了

    展开全文
  • 一般启动方式 php think worker:server 支持的操作包括: 操作 描述 start 启动服务(默认操作) reload 平滑重启 stop 停止服务 restart 重启服务 status 查看服务运行信息 ...

    一般启动方式

    php think worker:server

    支持的操作包括:

    操作 描述
    start 启动服务(默认操作)
    reload 平滑重启
    stop 停止服务
    restart 重启服务
    status 查看服务运行信息
    connections 查看连接信息

    如停止服务 

    php think worker stop

     守护进程启动(Linux支持)

    php think worker:server -d

    展开全文
  • celery不能以守护进程方式运行自己,需要使用下面的工具: 通用的初始化脚本  脚本代码:extra/generic-init.d/  这个目录包含了celery worker程序通用的初始化脚本,这些脚本应该运行在Linux,FreeBSD,OpenBSD和...

    celery不能以守护进程方式运行自己,需要使用下面的工具:

    通用的初始化脚本 

    脚本代码:extra/generic-init.d/ 

    这个目录包含了celery worker程序通用的初始化脚本,这些脚本应该运行在Linux,FreeBSD,OpenBSD和其它类UNIX平台。


    初始化脚本:celeryd

    使用方法:/etc/init.d/celeryd {start|stop|restart|status}

    配置文件:/etc/default/celeryd

    要配置这个脚本能够正常运行你的worker,你至少需要配置worker启动后需要使用的目录(查找包含app的模块和你的配置模块)。

    worker守护化的配置脚本为/etc/default/celeryd,这是一个shell脚本。你可以为这个脚本添加环境变量和配置选项。添加了环境变量之后,你必须export它们(比如 export DISPLAY=":0")。


    需要管理员权限

    初始化脚本和配置脚本必须使用root用户。

    权限不足的用户不能够使用初始化脚本,他们可以使用celery multi工具(或者celery worker --detach)。

    $ celery multi start worker1 \
        -A proj \
        --pidfile="$HOME/run/celery/%n.pid" \
        --logfile="$HOME/log/celery/%n%I.log"
    
    $ celery multi restart worker1 \
        -A proj \
        --logfile="$HOME/log/celery/%n%I.log" \
        --pidfile="$HOME/run/celery/%n.pid
    
    $ celery multi stopwait worker1 --pidfile="$HOME/run/celery/%n.pid"

    配置举例

    这是一个python工程的配置举例

    /etc/default/celeryd

    # Names of nodes to start
    #   most people will only start one node:
    CELERYD_NODES="worker1"
    #   but you can also start multiple and configure settings
    #   for each in CELERYD_OPTS (see `celery multi --help` for examples):
    #CELERYD_NODES="worker1 worker2 worker3"
    #   alternatively, you can specify the number of nodes to start:
    #CELERYD_NODES=10
    
    # Absolute or relative path to the 'celery' command:
    CELERY_BIN="/usr/local/bin/celery"
    #CELERY_BIN="/virtualenvs/def/bin/celery"
    
    # App instance to use
    # comment out this line if you don't use an app
    CELERY_APP="proj"
    # or fully qualified:
    #CELERY_APP="proj.tasks:app"
    
    # Where to chdir at start.
    CELERYD_CHDIR="/opt/Myproject/"
    
    # Extra command-line arguments to the worker
    CELERYD_OPTS="--time-limit=300 --concurrency=8"
    
    # Set logging level to DEBUG
    #CELERYD_LOG_LEVEL="DEBUG"
    
    # %n will be replaced with the first part of the nodename.
    CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
    CELERYD_PID_FILE="/var/run/celery/%n.pid"
    
    # Workers should run as an unprivileged user.
    #   You need to create this user manually (or you can choose
    #   a user/group combination that already exists, e.g. nobody).
    CELERYD_USER="celery"
    CELERYD_GROUP="celery"
    
    # If enabled pid and log directories will be created if missing,
    # and owned by the userid/group configured.
    CELERY_CREATE_DIRS=1
    使用登陆shell

    你可以通过使用登陆shell来继承CELERYD_USER环境变量。

    CELERYD_SU_ARGS="-l"
    注意,并不建议这样使用,只有当必须这样做时再这样使用。


    Django配置举例

    Django用户现在可以使用上面示例的模版,但是要确保定义celery app实例的模块也为DJANGO_SETTINGS_MODULE设置了一个默认值,可以参考: First steps with Django.


    可用的选项

    CELERY_APP

    使用的app实例(app参数的值).如果你还在使用老的API或者django-celery,你可以省略这个配置。

    CELERY_BIN

    celery程序的绝对或者相对路径.比如:

    • celery
    • /usr/local/bin/celery
    • /virtualenvs/proj/bin/celery
    • /virtualenvs/proj/bin/python -m celery
    CELERY_NODES

    启动的节点列表(以空格分隔)

    CELERY_OPTS

    worker的其它命令行参数,通过celery -help查看参数列表。这个选项还支持multi的扩展语法用来配置私有节点的配置。通过celery multi --help来查看多节点的的配置举例。

    CELERY_CHDIR

    启动后改变到的目录,默认为当前目录。

    CELERYD_PID_FILE

    PID文件的全路径,默认为/var/run/celery/%n.pid

    CELERY_LOG_FILE

    worker日志文件的全路径。默认为/var/log/celery/%n%I.log.注意:使用%I是重要的,因为prefork池中的多个进程如果使用相同的日志文件将会产生竞争。

    CELERY_LOG_LEVEL

    worker的日志级别,默认为INFO

    CELERYD_USER

    运行worker的用户,默认为当前用户

    CELERYD_GROUP

    运行worker的组,默认为当前组

    CELERY_CREATE_DIRS

    总是创建目录(日志目录和pid文件目录)。默认只在指定了logfile/pidfile时创建目录。

    CELERY_CREATE_RUNDIR

    总是创建pidfile目录,默认只在指定了pidfile位置时创建。

    CELERY_CREATE_LOGDIR

    总是创建logfile目录,默认只在指定logfile位置时创建。


    初始化脚本:celerybeat

    使用方法: 

    /etc/init.d/celerybeat {start|stop|restart}

    配置文件:

    /etc/default/celerybeat or /etc/default/celeryd

    配置举例:

    这是一个python工程的配置举例

    /etc/default/celerybeat

    # Absolute or relative path to the 'celery' command:
    CELERY_BIN="/usr/local/bin/celery"
    #CELERY_BIN="/virtualenvs/def/bin/celery"
    
    # App instance to use
    # comment out this line if you don't use an app
    CELERY_APP="proj"
    # or fully qualified:
    #CELERY_APP="proj.tasks:app"
    
    # Where to chdir at start.
    CELERYBEAT_CHDIR="/opt/Myproject/"
    
    # Extra arguments to celerybeat
    CELERYBEAT_OPTS="--schedule=/var/run/celery/celerybeat-schedule"
    Django配置举例
    你需要使用上面的配置模版,但是要保证DJANGO_SETTINGS_MODULE变量已经设置(而且export),还有CELERYD_CHDIR在工程目录设置:

    export DJANGO_SETTINGS_MODULE="settings"
    
    CELERYD_CHDIR="/opt/MyProject"
    可用的选项

    CELERY_APP

    使用的app实例(app参数的值).

    CELERYBEAT_OPTS

    celery beat的附加参数,通过celery beat --help查看完整的选项列表.


    CELERYBEAT_PID_FILE

    PID文件的全路径,默认为/var/run/celeryd.pid

    CELERYBEAT_LOG_FILE

    日志文件的全路径。默认为/var/log/celeryd.log.

    CELERYBEAT_LOG_LEVEL

    日志级别,默认为INFO

    CELERYBEAT_USER

    运行beat的用户,默认为当前用户

    CELERYBEAT_GROUP

    运行beat的组,默认为当前组

    CELERY_CREATE_DIRS

    总是创建目录(日志目录和pid文件目录)。默认只在指定了logfile/pidfile时创建目录。

    CELERY_CREATE_RUNDIR

    总是创建pidfile目录,默认只在指定了pidfile位置时创建。

    CELERY_CREATE_LOGDIR

    总是创建logfile目录,默认只在指定logfile位置时创建。


    问题排查

    如果你不能让初始化脚本正常运行,你可以尝试以详细模式来运行:

    # sh -x /etc/init.d/celeryd start
    这会显示一些为什么不能运行的的提示信息

    如果worker启动时显示ok,但是很快就退出了,这样日志文件中不会有任何信息,可能启动过程中有错误。但是以守护进程方式运行时,标准输出被关闭了,你就看不到任何信息了。如果遇到这种情况,你可以使用C_FAKEFORK环境变量来跳过守护进程方式:

    # C_FAKEFORK=1 sh -x /etc/init.d/celeryd start
    这样你就可以看到错误了。

    通常情况下,错误是由于读或者写文件权限不足造成的,也有可能是配置模块,用户模块或者第三库中有语法错误,甚至是celery自身的错误(如果你发现了bug,请报告它)


    使用systemd

    使用方法:systemctl {start|stop|restart|status} celery.service

    配置文件:

    /etc/conf.d/celery


    服务文件:celery.service

    这是一个systemd文件的举例:

    /etc/systemd/system/celery.service:

    [Unit]
    Description=Celery Service
    After=network.target
    
    [Service]
    Type=forking
    User=celery
    Group=celery
    EnvironmentFile=-/etc/conf.d/celery
    WorkingDirectory=/opt/celery
    ExecStart=/bin/sh '${CELERY_BIN} multi start $CELERYD_NODES \
      -A $CELERY_APP --logfile=${CELERYD_LOG_FILE} \
      --pidfile=${CELERYD_PID_FILE} $CELERYD_OPTS'
    ExecStop=/bin/sh '${CELERY_BIN} multi stopwait $CELERYD_NODES \
      --pidfile=${CELERYD_PID_FILE}'
    ExecReload=/bin/sh '${CELERY_BIN} multi restart $CELERYD_NODES \
      -A $CELERY_APP --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} \
      --loglevel="${CELERYD_LOG_LEVEL}" $CELERYD_OPTS'
    
    [Install]
    WantedBy=multi-user.target
    当你将上面的文件放到/etc/systemd/system目录后,你需要运行systemctl daemon-reload来让systemd识别这个文件。在你修改了这个文件后,你也需要重新运行这个命令。

    要配置用户,组,chdir等配置,请修改配置文件中的User,Group,WorkingDirectory选项。

    你还可以使用systemd-tmpfiles来创建工作目录(用于日志和pid)

    文件:/etc/tmpfiles.d/celery.conf:

    d /var/run/celery 0755 celery celery -
    d /var/log/celery 0755 celery celery -

    配置举例

    下面是一个python工程的配置举例

    /etc/conf.d/celery:

    # Name of nodes to start
    # here we have a single node
    CELERYD_NODES="w1"
    # or we could have three nodes:
    #CELERYD_NODES="w1 w2 w3"
    
    # Absolute or relative path to the 'celery' command:
    CELERY_BIN="/usr/local/bin/celery"
    #CELERY_BIN="/virtualenvs/def/bin/celery"
    
    # How to call manage.py
    CELERYD_MULTI="multi"
    
    # Extra command-line arguments to the worker
    CELERYD_OPTS="--time-limit=300 --concurrency=8"
    
    # - %n will be replaced with the first part of the nodename.
    # - %I will be replaced with the current child process index
    #   and is important when using the prefork pool to avoid race conditions.
    CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
    CELERYD_PID_FILE="/var/run/celery/%n.pid"
    Django配置举例

    下面是一个使用django-celery的配置举例:

    # Name of nodes to start
    # here we have a single node
    CELERYD_NODES="w1"
    # or we could have three nodes:
    #CELERYD_NODES="w1 w2 w3"
    
    # Absolute path to "manage.py"
    CELERY_BIN="/opt/Myproject/manage.py"
    
    # How to call manage.py
    CELERYD_MULTI="celery multi"
    
    # Extra command-line arguments to the worker
    CELERYD_OPTS="--time-limit=300 --concurrency=8"
    
    # - %n will be replaced with the first part of the nodename.
    # - %I will be replaced with the current child process index
    CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
    CELERYD_PID_FILE="/var/run/celery/%n.pid"
    通过在celery.services里使用环境变量来添加类似DJANGO_SETTINGS_MODULE的环境变量。


    以超级用户(root)身份运行worker:

    以超级用户身份运行worker是一个非常危险的举动。总会有一种解决方案来避免使用root。Celery在用pickle作消息序列化时可能运行任意的代码----------这很危险,尤其是用root用户时。

    默认情况下,celery不会用root用户运行worker.相关的错误信息在日志可能不可见,除非你使用了C_FAKEFORK。

    使用C_FORCE_ROOT来强制celery使用root用户来运行worker。

    当使用C_FORCE_ROOT来运行worker时,可能会出现"OK"后直接退出且没有任何错误的情况。这可能是由于不经意间使用root用户运行工程在一个新的开发环境或者生产环境。

    下面有一个非常好的外部教程:


    http://www.calazan.com/windows-tip-run-applications-in-the-background-using-task-scheduler/


    展开全文
  • nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂断的意思( no hang up)。 该命令...
    nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂断的意思( no hang up)。
    该命令的一般形式为:nohup command &
    使用nohup命令提交作业
    如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
    nohup command > myout.file 2>&1 &
    在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
    2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。
    使用 jobs 查看任务。
    使用 fg %n 关闭。
    有两个常用的ftp工具ncftpget和ncftpput,可以实现ftp上传和下载,我们可以利用nohup命令在后台实现文件的上传和下载。
    展开全文
  • 操作系统:linux6.5 solr版本:4.1 ...两种方式: 第一种:# (java -Dsolr.solr.home=coreName -jar start.jar &) 第二种:# nohup java -Dsolr.solr.home=coreName -jar start.jar & 还可
  • 写了一个聊天室,需要手动执行php start.php start命令去启动workerman的握手程序,但是退出xshell后,...所以只能写守护进程运行 创建一个进程,setsid 命令 > /dev/null & ,比如 setsid php /www/wwwr...
  • 目前在做个发布项目,需要一直运行单个Python脚本,便于对需要发布的任务进行发布逻辑操作,并且是在Linux下运行的 目前能想到的方法有两个: Crontab定时 Systemctl守护进程 最后决定使用Systemctl守护进程来...
  • PHP实现守护进程方式,Linux后台运行

    万次阅读 2019-08-01 10:49:06
    1. 后台进程 命令后加&使程序后台运行,终端可以继续其他操作 ...2.守护进程 nohup命令 缺点:占用终端 用途:不挂断地运行命令,即使终端ssh关闭了也一直运行 语法:nohup command [arg...
  • Linux守护进程运行方式(组图)

    千次阅读 2013-10-31 20:49:33
    进程的运行有两种方式,即 独立运行和使用父进程运行 。  4.2.3 Linux守护进程的运行方式  1.独立运行(stand-alone)的守护进程  独立运行的守护进程由init脚本负责管理,所有独立运行的守护进程的脚本在/...
  • 1. 前台进程进程默认是前台运行的,会占据shell控制台,用户无法做其他操作。可以使用‘&’将前台进程转为后台进程 2. 后台进程:切为后台进程称为job,[4] 是job ID , 5094是PID,  1)jobs -l / ps 可以查看...
  • 使用nohup以守护进程方式启动程序

    千次阅读 2015-04-27 11:21:25
    则控制台logout后,进程仍然继续运行,起到守护进程的作用(虽然它不是严格意义上的守护进程)。 使用nohup命令后,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守
  • 守护进程判断进程是否运行正常

    千次阅读 2016-10-23 22:13:50
    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet...
  • 2. daemon函数,实现了上述守护进程的功能 #include int daemon(int nochdir, int noclose); nochdir参数用于指定是否改变工作目录,如果是0,则工作目录将设置为”/“, 否则继续使用当前工作目录。 ...
  • 写好php脚本。建议定期检测内存占用,核心逻辑就不写了。这个跟业务有关。if(memory_get_usage()&gt;100*1024*1024){ exit(0);//大于100M内存退出程序,防止内存泄漏被...gt; /dev/null &amp;编辑进程监...
  • docker是一个client-server结构的系统,docker守护进程运行在主机上,然后通过socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器是一个运行时环境,就是docker logo展示的集中箱。 ...
  • 通常我们开发好的程序需要打成war/jar包,在linux运行,war包好说直接丢在tomcat中即可,如果开发好的程序为jar包的话,着重介绍linux中jar包的启动方式
  • 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet...
  • Linux守护进程运行命令daemonize

    万次阅读 2016-04-19 08:12:06
    我们一般在编写服务器的时候都希望能让服务器在后台运行,而且能记录下这个服务器的pid,防止一个进程重复启动。之前我的方案是自己使用fork函数,将服务器运行成后台模式;并且在启动之前去检查配置文件中指定的pid...
  • seata配置守护进程运行

    千次阅读 2019-12-18 20:52:46
    我们使用systemctl 来配置守护进程 首先在/home/seata/目录下新增启动脚本startup.sh #!/bin/bash sh /home/seata/bin/seata-server.sh -p 8091 -h 192.168.0.100 -m db 并授权 chmod 777 /home/seata/startup.sh ...
  • linux守护进程及其特性 守护进程最重要的特性是后台执行。 在这一点上DOS下的常驻内存程序TSR与之类似。其次,守护进程必须与其执行前的环境隔离开来。这些环境包含未关闭的文件描写叙述符。控制终端。会话和进程...
  • 守护进程

    千次阅读 2019-09-02 14:49:40
    守护进程就是通常讲Daemon进程,是linux后台执行的一种服务进程,特点是独立于控制终端、周期性地执行某种任务或等待处理某些发生事件,不会随终端关闭而停止,直到接受停止信息才会结束,且一般采用d结尾的名字。...
  • linux守护进程

    千次阅读 2018-03-08 21:05:10
    1.守护进程最重要的特性是后台运行。 2.守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程...
  • 何为守护进程 、进程组 / 组长进程 / 会话 / 会话首进程 、守护进程的创建步骤 、创建守护进程程序示例
  • 守护进程和超级守护进程

    千次阅读 2015-01-02 11:09:00
    在Linux中,守护进程有两种方式,一种是svsy方式,一种是xinetd方式(超级守护进程)。  每个守护进程都会有一个脚本,可以理解成工作配置文件,守护进程的脚本需要放在指定位置,独立启动守护进程:放在/etc/init...
  • 守护进程及初始化守护进程

    千次阅读 2016-10-26 21:20:55
    Linux系统中的守护进程是一种运行在后台的进程。而守护进程,也就是通常说的Daemon进程。它通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程它从被执行开始运转,直到整个系统关闭时...
  • linux守护进程形式运行java程序

    千次阅读 2017-03-15 11:16:00
    nohup java -jar test.jar >output 2>&1 &
  • 守护进程最重要的特性是后台运行;它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 163,651
精华内容 65,460
关键字:

以守护进程的方式运行