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

2022-10-09 21:57:35 +08:00
 wjx0912
有几个服务程序,希望在 mac 开机的时候使用 screen 或者 tmux 启动这个进程,比如:
screen -S kcp1 -dm /Users/xxx/server1.sh
tmux new -d -s kcp1 /Users/xxx/server2.sh
这两个指令在 terminal 下运行挺好的,因为父进程是 terminal 。

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

谢谢了
807 次点击
所在节点    macOS
7 条回复
ooops
2022-10-09 23:42:50 +08:00
launchctl
seanzxx
2022-10-10 07:23:44 +08:00
服务当然 launchctl 是最好选择
wjx0912
2022-10-10 08:36:47 +08:00
@ooops @seanzxx
可能我没说清楚吧,是用的 launchctl ,对应的 plist 启动了一个脚本,然后脚本里面用 screen&tmux 启动程序。
但是这个脚本的父进程不是 terminal ,所以 screen&tmux 不能正常启动。

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

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

后台程序的正路还是直接被 launchd 管理啊。建议你还是改改那个脚本
wjx0912
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
2022-10-10 10:52:13 +08:00
@julyclyde 不是很清楚 launchd 流程。反正现在 ok 了,先凑合用吧
谢谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/885630

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX