我有一个shell脚本,它作为服务启用,以启动多个shell脚本,例如。
service started script -> script1, script2 ,script3
script1应该在tmux窗口中打开一个程序,如果我通过./script1.sh
手动启动脚本,它确实可以正常工作,但是当通过服务启动脚本启动时它没有出现上述错误:
open terminal failed: not a terminal
为什么会这样?
答案 0 :(得分:14)
已经有一个答案here,但我认为this link总结得更好。简而言之,使用-t
标志:
ssh -t host tmux attach
如果您想将其设置为.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).
答案 1 :(得分:3)
我认为问题是该服务没有关联的tty。我找到的解决方法是将脚本中的tmux调用更改为
tmux new-session -s username -d
(用户名为启动该服务的用户)