gpt4 book ai didi

cron - 启动/重启后在 FreeBSD 中运行脚本

转载 作者:行者123 更新时间:2023-12-04 22:59:31 37 4
gpt4 key购买 nike

我有一个简单的脚本:

#!/bin/sh

PROVIDE: test
REQUIRE: LOGIN NETWORKING

. /etc/rc.subr

name="test"
load_rc_config $name

rcvar=test_enable

cd /home/deploy/projects/test
/usr/sbin/daemon -u deploy /usr/local/bin/node /home/deploy/projects/test/server.js

run_rc_command "$1"

/usr/local/etc/rc.d .它是可执行的。它被注册到/etc/rc.conf

我需要它在启动/重启后启动。我设法使用 Cron 做到了
@reboot

但它看起来不合法。在启动/重新启动后自动运行该脚本的正确方法是什么?

最佳答案

首先,官方文档中有一篇文章解释了如何编写rc脚本:Practical rc.d scripting in BSD .

它可能会回答你的大部分问题。

当涉及到您的脚本时:

  • 关键字如 PROVIDE , REQUIRE等必须是注释。见 rc(8) manual pagercorder(8) manual page更多细节。
    #!/bin/sh
    #
    # PROVIDE: test
    # REQUIRE: LOGIN NETWORKING
  • 我想你也想念设置 test_enable到默认值。
    : "${test_enable:="NO"}"
  • 您真的不想将启动守护程序的指令放在脚本的全局范围内。这部分代码很糟糕:
    cd /home/deploy/projects/test
    /usr/sbin/daemon -u deploy /usr/local/bin/node /home/deploy/projects/test/server.js

    您应该尝试定义一个 start_cmd函数(在 rc.subr(8) manual page 中查找 argument_cmd 以获取更多信息)或定义 command多变的。


  • 总而言之,最好的办法是查看 /etc/rc.d中的其他脚本和 /usr/local/etc/rc.d看看人们如何编写这些以及标准是什么。这是我最近在为 Keybase 文件系统 (KBFS) 开发守护进程时学到的。你可以看一下代码 here .

    联机帮助页也很有帮助。从 rc(8) 开始然后查看“另请参阅”部分中列出的其他手册。

    关于cron - 启动/重启后在 FreeBSD 中运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52035609/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com