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)
我认为问题在于该服务没有关联的tty。我发现了一种解决方法是将脚本中的tmux调用更改为
tmux new-session -s username -d
Run Code Online (Sandbox Code Playgroud)
(用户名是为其启动服务的用户)
归档时间: |
|
查看次数: |
14661 次 |
最近记录: |