tmux开放终端失败:不是终端

STi*_*shh 16 shell tmux systemd

我有一个shell脚本作为服务启用,以启动多个shell脚本,例如

service started script -> script1, script2 ,script3 
Run Code Online (Sandbox Code Playgroud)

script1应该在tmux窗口中打开一个程序,如果我通过手动启动脚本,它确实可以正常工作./script1.sh,但是当通过服务启动脚本启动时,它没有上述错误:

open terminal failed: not a terminal
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

lor*_*zog 19

有一个答案已经在这里,但这个环节我觉得总结得更好.简而言之,使用-t标志:

ssh -t host tmux attach
Run Code Online (Sandbox Code Playgroud)

如果要将其设置到.ssh/config文件中,请在ssh_config联机帮助页中查找该RequestTTY选项:

 RequestTTY
         Specifies whether to request a pseudo-tty for the session.  The
         argument may be one of: ``no'' (never request a TTY), ``yes''
         (always request a TTY when standard input is a TTY), ``force''
         (always request a TTY) or ``auto'' (request a TTY when opening a
         login session).  This option mirrors the -t and -T flags for
         ssh(1).
Run Code Online (Sandbox Code Playgroud)

  • 虽然这个答案有我一直在寻找的答案,但这个问题实际上并不涉及SSH;这是关于启动脚本的。 (2认同)

7hi*_*ult 7

我认为问题在于该服务没有关联的tty。我发现了一种解决方法是将脚本中的tmux调用更改为

tmux new-session -s username -d
Run Code Online (Sandbox Code Playgroud)

(用户名是为其启动服务的用户)