代码之家  ›  专栏  ›  技术社区  ›  Kagemand Andersen

在Ubuntu 14.04上启动(而不是登录)时运行shell脚本

  •  0
  • Kagemand Andersen  · 技术社区  · 7 年前

    我有一个构建服务器。我正在使用Azure生成代理脚本。它是一个shell脚本,在服务器启动时将连续运行。问题是我似乎不能让它在启动时运行。我试过了 /etc/init.d /etc/rc.local 代理没有运行。启动日志中与生成代理无关。

    用于 /等/初始数据 我创造了剧本 agent.sh 其中包括:

    #!/bin/bash
    
    sh ~/agent/run.sh 
    

    给它适当的许可 chmod 755 agent.sh 把它移到 /等/初始数据 .

    以及 /ETC/RC.本地 ,我刚刚附加了以下内容

    sh ~/agent/run.sh &
    

    之前 exit 0 .

    我做错什么了?

    编辑:添加示例。

    edit 2:刚刚注意到init.d自述文件指出shell脚本需要以 #!/bin/sh 而不是 #!/bin/bash .也使用了绝对路径,但没有改变。

    最后的编辑:正如@ewrammer所建议的,我使用cron,它起作用了。 crontab -e 然后 @reboot /home/user/agent/run.sh .

    2 回复  |  直到 7 年前
        1
  •  2
  •   ewramner    7 年前

    如果你没有发布你所做的事情,很难看出有什么问题,但是为什么不将它作为cron作业添加,并使用@reboot作为模式?然后cron将在每次计算机启动时运行脚本。

        2
  •  0
  •   nbari    7 年前

    以防万一,在Ubuntu 14中,使用一个主管可能是个好主意 systemd 但是你可以从其他人中选择 https://en.wikipedia.org/wiki/Process_supervision .

    如果使用 immortal ,安装后,只需创建一个 run.yml 文件 /etc/immortal 比如:

    cmd: /path/to/command
    log:
        file: /var/log/command.log
    

    这将在每次启动时启动脚本/命令,并确保脚本/应用程序始终处于启动和运行状态。

    推荐文章