AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 873185
Accepted
user4838962
user4838962
Asked: 2017-09-12 21:24:38 +0800 CST2017-09-12 21:24:38 +0800 CST 2017-09-12 21:24:38 +0800 CST

FreeBSD rc.d 脚本不作为守护进程启动

  • 772

我在位置开发了以下脚本/usr/local/etc/rc.d/bluesky

#!/bin/sh

# PROVIDE: bluesky
# REQUIRE: mysql sshd
# BEFORE:  
# KEYWORD: 

. /etc/rc.subr

name="bluesky"
rcvar=bluesky_enable

start_cmd="${name}_start"
stop_cmd=":"

load_rc_config $name
: ${bluesky_enable:=no}
: ${bluesky_msg="HTTP server starts ..."}

bluesky_start(){
    echo $PATH
    export PATH=$PATH:/usr/local/bin/
    echo $PATH

    ### Run Node server ###
    /usr/local/bin/node /usr/home/ict/Documents/bluesky/server.js
    echo "$bluesky_msg"
}

run_rc_command "$1"

我还在我的/etc/rc.conf文件中启用了它:

bluesky_enable="YES"

当我重新启动服务器时,脚本工作正常并在端口 80 启动 HTTP 服务器。唯一的问题是脚本不会被发送到后台或不会作为守护进程启动。我想知道如何在启动时在后台运行脚本或作为守护进程运行脚本。

freebsd
  • 2 2 个回答
  • 3113 Views

2 个回答

  • Voted
  1. Best Answer
    Richard Smith
    2017-09-13T05:35:34+08:002017-09-13T05:35:34+08:00

    RC 脚本本身并不打算用于守护进程,而是希望启动和停止守护进程。

    如果您的服务没有作为守护程序启动的选项,您可以使用daemon(8)来管理该部分。

    一个例子:

    #!/bin/sh
    
    # PROVIDE: ...
    # REQUIRE: ...
    
    . /etc/rc.subr
    
    name="..."
    
    rcvar=${name}_enable
    pidfile="/var/run/${name}.pid"
    command="/usr/sbin/daemon"
    command_args="-c -f -P ${pidfile} -r /usr/local/libexec/${name}"
    load_rc_config $name
    run_rc_command "$1"
    
    • 8
  2. user4838962
    2017-09-13T06:12:59+08:002017-09-13T06:12:59+08:00

    在 FreeBSD 终端上,我安装了PM2:

    $ sudo npm install pm2 -g
    

    然后rc.d根据以下修改脚本pm2:

    #!/bin/sh
    
    # PROVIDE: bluesky
    # REQUIRE: mysql sshd
    # BEFORE:  
    # KEYWORD: 
    
    . /etc/rc.subr
    
    name="bluesky"
    rcvar=bluesky_enable
    
    start_cmd="${name}_start"
    stop_cmd=":"
    
    load_rc_config $name
    : ${bluesky_enable:=no}
    : ${bluesky_msg="HTTP server starts ..."}
    
    bluesky_start(){
        echo $PATH
        export PATH=$PATH:/usr/local/bin/
        echo $PATH
    
        ### Start server with PM2 ###
        /usr/local/bin/pm2 start /usr/home/ict/Documents/bluesky/server.js
        echo "$bluesky_msg"
    }
    
    run_rc_command "$1"
    

    现在,HTTP 服务器在引导时作为守护进程启动。不过,我真的很喜欢@RichardSmith 建议的 FreeBSD守护进程 (8)的想法,我将继续努力。

    • 0

相关问题

  • Mono 2.4 Ahead-Of-Time (AOT) 可以在 FreeBSD x86(或 x64)上编译吗?

  • FreeBSD 和 Linux 有什么区别?[关闭]

  • 在 FreeBSD 上安装和运行 MySql

  • 在 freeBSD 上安装 netbeans 的问题

  • 用于 Web 应用服务器的 FreeBSD 磁盘分区(Apache/MySQL/PHP)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve