現在のセッション内の新しいtmuxセッションでコードを実行するには?

現在のセッション内の新しいtmuxセッションでコードを実行するには?

私はUbuntu 16.04を使用しており、特定のケースでは満足できずエラーが発生するtmuxため、タイムアウトのあるプロセスを実行したいので、次の解決策が必要です(結合時に)。現在としては独自の機能があるので最善の選択のようです。sleepatnohupnohup-sleeptmuxちょっと待ってメカニズムであり、実際に手動で使用するとかなりうまく機能します。 (私はすでに手動で実行できるプロセス自動化についてのみ尋ねています。)

私は必要です:

次の3つのタスクをすべて一度に実行する方法が必要です。

  1. 新しいtmuxセッションを接続します。
  2. そのセッションに準備されたコマンドセットを挿入します(sleep 30m ; rm -rf dir_name ; exit)。たとえば、私は特に1つの長い行ではなく複数の行セットが好きです。
  3. tmux上記のコマンドを実行すると、新しいセッションの標準入力に書き込まれます。

つまり、tmuxこの目的のために特別に作成された別のセッションでコードセットを実行したいのですが、これらすべてを1回の操作で実行します。


メモ:

  • 私の目標は、最初の作業セッション(ほとんどの時間を作業に費やすセッション)からすべての作業を完了することです。一般的に言えば、新しく作成されたセッションにアクセスする意図はなく、自動化されたコードを使用してセッションを作成したいだけです。

  • 可能であればheredocソリューションを好みます。私はこれが最も効果的だと思います。

ベストアンサー1

実行したいコードを次のように配置すると、/opt/my_script.sh必要な操作を簡単に実行できます。

tmux new-session -d -s "myTempSession" /opt/my_script.sh

これにより、「myTempSession」という新しい分離セッションが開始され、スクリプトが実行されます。後で追加して、実行中の作業を確認できますtmux attach-session -t myTempSession

それ私の考えでは、これは最もシンプルでエレガントなソリューションです。 tmuxを使用してstdin(「ここから」を読む)からコマンドを実行する簡単な方法がわかりません。ハッキングを使用すると、そうすることもできますが、それでもハッキングです(そしてハッキングのように見えます)。

例えば、上記で提案したコマンドを使用して所望の動作をシミュレートするハッキングがある。 (= heredocの新しいtmuxセッションでコードを実行します。一時ファイルの作成中にサーバーのハードドライブへの書き込みは行われません。/dev/shmつまり、tmpfs):

(
  cat >/dev/shm/my_script.sh &&
  chmod +x /dev/shm/my_script.sh &&
  tmux new-session -d '/dev/shm/my_script.sh; rm /dev/shm/my_script.sh'
) <<'EOF'
    echo "hacky, but works"
EOF

おすすめ記事