複数のシェルスクリプトを開始するサービスとして有効になっているシェルスクリプトがあります。
service started script -> script1, script2 ,script3
script1はtmuxウィンドウでプログラムを開く必要があり、./script1.sh
を使用して手動でスクリプトを開始しても問題なく機能しますが、サービス開始スクリプトを介して起動時に開始すると、上記のエラーは発生しません。
open terminal failed: not a terminal
なんでこんなことが起こっているの?
問題は、サービスにttyが関連付けられていないことです。私が見つけた回避策は、スクリプトのtmux呼び出しを次のように変更することです
tmux new-session -s username -d
(サービスを開始したユーザーのユーザー名)
すでに回答があります ここ ですが このリンク 要約したほうがいいと思います。簡単に言えば、-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).