私はscreen -dmS mysession command
画面を起動し、コマンドを実行して分離する方法を知っています。これは、標準出力をファイルにリダイレクトする必要がある場合に機能します。画面上でプログラムを実行し、すべての出力をファイルにリダイレクトして分離する方法)
screen -dmS mysession bash -c 'ls > test.txt' # simple example
ただし、最終的にスクリーンセッションは維持されず、そうすることはできず、もはやscreen -r mysession
存在しませんscreen -ls
。
質問:一文でどのようにscreenセッションの開始、コマンドの開始、分離、標準出力をファイルにリダイレクトします(例:)> test.txt
が、自動的にscreenセッションを終了しません。待ち終わったの?
リンク質問:program.shが完了した後に「screen -dmS sessionName program.sh」が消えるのを防ぐ方法は?
答え1
「bash -c」を使用すると、非対話型シェルが生成されます。次のプロセスツリーを作成します。
screen───bash───ls
完了すると、ls
これbash
以上の処理や入力はなく、完了します。
それはscreen
すべてです。
必要なタスクを実行するには、まず対話型シェルを起動する必要があります。
screen -dmS session bash
次に、screenコマンドを使用してscreenセッションにコマンドを入力しますstuff
。
screen -S session -p 0 -X stuff "ls > test.txt^M"
^M
改行文字のように動作します。
exit^M
その後、または同様のコマンドを使用してシェルを終了する必要があります。
後ですべてを1行のIEにまとめることができます。
screen -dmS session bash && screen -S session -p 0 -X stuff "ls > test.txt^M"
正直に言うと、あなたがやろうとしていることをscreen
完全に避け、あなたがやろうとしているプロセスを拒否する方が良いと思います。
ls > test.txt & disown %1
これは、追加の機器なしで同じことを行います。