将tmux放置在rc.local中时不会触发


0

我想在树莓派-2上启动时启动tmux。我已经写了一个session.sh文件,并将其放在~/bin/主目录中的文件中。这~/bin/也包含在中$PATH,因此可以触发。

Bash文件如下所示:

#!/bin/sh

mySession(){
     tmux new-session -d -s SessionName
     tmux new-window -d -n 'windowName' "~/bin/myPythonScript.py"
}
mySession

exit 0

我也使用以下方式授予了所有脚本的执行权,包括上述bash脚本chmod +x session.sh

rc.local中,我指的是触发该文件,如下所示:

#!/bin/sh
scriptSession(){
        echo "starting the tmux session"
        ~/bin/session.sh &
}

scriptSession
exit 0

我已经尝试过多次重启Pi,但是会话从未触发过。

当我执行时sudo tmux ls,它只显示error Connecting to Server

但是,当我这样做sudo /etc/rc.localsudo ~/bin/session.sh会话开始时!我不希望发生这种情况,因为我希望启动时自动启动而不是用户触发的会话

任何想法可能是什么问题?

编辑

我还尝试使用rc.local文件中的以下内容在bash子外壳中收集失败日志:

(scriptSession)&>>/var/log/myLog.txt

但是cat /var/log/myLog.txt什么都没有出现,脚本仍然失败


我刚刚注意到:在您rc.localscriptSession函数中已定义但从未运行过。但是您写了“当我sudo /etc/rc.local开始(...)会话开始时”。真的吗
卡米尔Maciorowski

嗨,我实际上确实调用了该函数!有错别字!将修复它。但它仍然不起作用
Shan-Desai

Answers:


1

使用tmux对所有分离的脚本进行故障排除的最佳解决方案将要求您在触发脚本中使用以下选项:

#!/bin/bash
# this script is called "sess"

tmux new-session -d -s sess1

# this statement is a life-saver for tmux detached sessions
tmux set-option -t sess1 set-remain-on-exit on

# In my case running the script in a new window worked
tmux new-window -d -n 'nameofWindow' -t sess1:1 'sudo /home/pi/bin/script.py'

exit 0

现在,从中调用了以下脚本,rc.local然后重新启动了Pi。最终在重新启动时,您使用sudo tmux a一次附加会话时将获得带有2个窗口的tmux会话

  1. 最初的只是一个空会话,由于 tmux new-session -d -s sess1

  2. 和另一个tmux new-window可以使用CTRL+ B+ 打开的命令中的另一个,1因为它被提到为sess1:1注意:热键可能因用户而异,默认的tmux热键(bindkeys)为CTRL+ B

推理

如果脚本以错误结尾,则在我的Python脚本中,窗口将向您显示错误所在的位置,在底部,它将显示Pane is Dead。因此,由于脚本中的错误,tmux会话在没有给出任何相关日志(反馈)的情况下退出,因此在上述内容中未记录任何输出/tmp/tmux.log

因此,始终建议set-remain-on-exit on在运行脚本时使用带有tmux的脚本,以防在分离模式下脚本中出现错误


0

我认为rc.local启动期间的环境并不丰富。如果知道,$PATH并且$HOME(shell扩展~$HOME),则它们不是您(常规用户)的变量;我认为它们可能没有设置。此外,脚本将继承此受限环境。

然而,当你这样做sudo /etc/rc.localsudo ~/bin/session.sh命令继承你的环境,所有的作品。

要解决此问题,请使用完整路径而不是~/。使用完整路径tmux也。


好吧,你的意思是/usr/bin/tmux
Shan-Desai

@ Shan-Desai如果这是您的tmux可执行文件所在的位置,那么可以。
卡米尔Maciorowski

好吧,我们将尝试与您联系,谢谢@Kamil
Shan-Desai

这仍然行不通吗?还有更多提示吗?
Shan-Desai

终于解决了问题@Kamil
Shan-Desai
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.