datadump
V2EX  ›  macOS

怎样添加 screen 或者 tmux 的开机启动程序呢?

  •  
  •   datadump · Oct 9, 2022 · 1409 views
    This topic created in 1311 days ago, the information mentioned may be changed or developed.
    有几个服务程序,希望在 mac 开机的时候使用 screen 或者 tmux 启动这个进程,比如:
    screen -S kcp1 -dm /Users/xxx/server1.sh
    tmux new -d -s kcp1 /Users/xxx/server2.sh
    这两个指令在 terminal 下运行挺好的,因为父进程是 terminal 。

    但是开机的时候没有 terminal ,如果执行 screen 的话就失败了。
    有木有解决方法呢?

    谢谢了
    ooops
        1
    ooops  
       Oct 9, 2022 via iPhone
    launchctl
    seanzxx
        2
    seanzxx  
       Oct 10, 2022 via iPhone
    服务当然 launchctl 是最好选择
    datadump
        3
    datadump  
    OP
       Oct 10, 2022
    @ooops @seanzxx
    可能我没说清楚吧,是用的 launchctl ,对应的 plist 启动了一个脚本,然后脚本里面用 screen&tmux 启动程序。
    但是这个脚本的父进程不是 terminal ,所以 screen&tmux 不能正常启动。

    所以。我想问的是怎么在开机的时候启动 screen&tmux (这时候还没有 terminal )

    感谢各位
    datadump
        4
    datadump  
    OP
       Oct 10, 2022
    希望用 screen&tmux ,不考虑 nohup 了
    julyclyde
        5
    julyclyde  
       Oct 10, 2022
    @wjx0912 screen 和 tmux 需要 tty 吧。你试试 detached 模式启动?

    后台程序的正路还是直接被 launchd 管理啊。建议你还是改改那个脚本
    datadump
        6
    datadump  
    OP
       Oct 10, 2022
    mac 启动理解的不对,这样无法启动:
    tmux new -d -s ${cmd_name} ${cmd_path}
    改成这样就行了:
    /usr/local/bin/tmux new -d -s ${cmd_name} ${cmd_path}

    看到有人相同的问题,path 环境变量引起的,这个时候 path 是:/usr/bin:/bin:/usr/sbin:/sbin
    好像和父进程是否为 terminal 无关

    不知道是否正确(刚用 mac 不久~~~)
    datadump
        7
    datadump  
    OP
       Oct 10, 2022
    @julyclyde 不是很清楚 launchd 流程。反正现在 ok 了,先凑合用吧
    谢谢了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5734 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 01:44 · PVG 09:44 · LAX 18:44 · JFK 21:44
    ♥ Do have faith in what you're doing.