V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wjx0912
V2EX  ›  macOS

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

  •  
  •   wjx0912 · 2022-10-09 21:57:35 +08:00 · 924 次点击
    这是一个创建于 810 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有几个服务程序,希望在 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  
       2022-10-09 23:42:50 +08:00 via iPhone
    launchctl
    seanzxx
        2
    seanzxx  
       2022-10-10 07:23:44 +08:00 via iPhone
    服务当然 launchctl 是最好选择
    wjx0912
        3
    wjx0912  
    OP
       2022-10-10 08:36:47 +08:00
    @ooops @seanzxx
    可能我没说清楚吧,是用的 launchctl ,对应的 plist 启动了一个脚本,然后脚本里面用 screen&tmux 启动程序。
    但是这个脚本的父进程不是 terminal ,所以 screen&tmux 不能正常启动。

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

    感谢各位
    wjx0912
        4
    wjx0912  
    OP
       2022-10-10 08:51:16 +08:00
    希望用 screen&tmux ,不考虑 nohup 了
    julyclyde
        5
    julyclyde  
       2022-10-10 10:49:08 +08:00
    @wjx0912 screen 和 tmux 需要 tty 吧。你试试 detached 模式启动?

    后台程序的正路还是直接被 launchd 管理啊。建议你还是改改那个脚本
    wjx0912
        6
    wjx0912  
    OP
       2022-10-10 10:49:42 +08:00
    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 不久~~~)
    wjx0912
        7
    wjx0912  
    OP
       2022-10-10 10:52:13 +08:00
    @julyclyde 不是很清楚 launchd 流程。反正现在 ok 了,先凑合用吧
    谢谢了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2746 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:47 · PVG 17:47 · LAX 01:47 · JFK 04:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.