バックグラウンドで(ターミナルウィンドウやTTYなしで)実行され、ときどき何かを実行するスクリプトがあります。
何かをしたときに別のことをしたいのですが、Gnomeターミナルウィンドウを開いて2つのコマンドを実行します。実際には、1つのコマンドを実行するだけで済みますが、コマンドの出力を確認できるように、ターミナルウィンドウを開いたままにしておきたいと思います。コマンドはstdoutとstderrの両方に出力され、その出力は時間の経過とともに変化するため、ファイルに書き込んで何らかの通知を送信するだけではうまくいきません。
GnomeTerminalをウィンドウを開いて1つのコマンドを実行します。
gnome-terminal -e "sleep 10"
簡単にするために、長時間実行するコマンドとしてsleep
を選択しました。ただし、別のコマンドを追加しても、ターミナルウィンドウは開きません。
gnome-terminal -e "echo test; sleep 10"
これに対する解決策は何ですか?
コメント
- 関連: askubuntu.com/questions/315408/ … および askubuntu.com/questions/20330/ …
Answer
gnome-terminal
は、引用符で囲まれたすべてを1つのコマンドとして扱うため、それらの多くを連続して実行するには、次のことを行う必要があります。インタープリター(通常はシェル)を起動し、その中で次のような処理を行います。
gnome-terminal -e "sh -c "echo test; sleep 10""
BTW、コマンドがジョブを終了した後もウィンドウを開いたままにしておきたい場合があります。その場合は、新しいシェルを開始するか、現在のシェルを新しいシェルに置き換えます。
gnome-terminal -e "sh -c "echo test; sleep 10; exec bash""
コメント
- #オプション「-e」は非推奨であり、以降のバージョンで削除される可能性があります。 gnome-terminal。##「-」を使用してオプションを終了し、コマンドラインを実行してから実行します。#このエラーは現在発生しています。ただし、-eを-に置き換えると、表示される新しい端末でエラーが発生します。正しく使用する方法-?
- @ eric.frederich スタックオーバーフローの質問に対するこの回答に基づいて、構文は次のようになります。
gnome-terminal -- /bin/sh -c 'echo test; sleep 10'
回答
2020年1月現在、< gnome-terminal
のdivid = “18c4afeaab”>
オプションは引き続き機能しますが、警告をスローします
#オプション「-e」は非推奨であり、gnome-terminalの新しいバージョンで削除される可能性があります。
#「-」を使用してオプションを終了し、コマンドラインを実行します。
2つのコマンドは警告なしで実行できます
gnome-terminal -- /bin/sh -c "echo test; sleep 10"
そして、この回答で述べたように、後でウィンドウを開いたままにしておきたい場合は、次のことができます。
gnome-terminal -- /bin/sh -c "echo test; sleep 10; exec bash"