スクリーンデーモンモードでコマンドを実行する

スクリーンデーモンモードでコマンドを実行する

コマンドを使用してスクリーンモードでコマンドを実行しようとしています

screen -dmS screen_name sed -i 's/a/b/'g some-file.txt

何も起こりません。同じコマンドをスクリプトに入れてコマンドを実行すると:

screen -dmS screen_name bash -c /path/to/script

うまくいきました。私の質問は、スクリプトに最初に入れなくてもデーモン モードでコマンドを実行できるかどうかです。基本的に、このデーモン機能が必要なのは、各コマンドを別のスクリーン デーモンに投入して、大きなファイルに対して複数の sed コマンドを並行して実行し、プログラムが終了すると自動的に終了するからです。ありがとうございます。

答え1

問題は-Sにあると思います。-Sオプションを省略しようとすると、bash -cがなくても動作するはずですので、これを試してください。

screen -dm sed -i 's/a/b/'g some-file.txt

それは動作するはずです。ちなみに、画面は更新されていないので、tmux への切り替えを検討する必要があります。tmux は、より多くの機能を提供できます。

次のように入力して tmux をインストールできます。

sudo apt-get install tmux

したがって、コードは次のようになります。

tmux new-session -d -s foo 'sed -i 's/a/b/'g some-file.txt'

私はそれをテストすることができます

tmux new-session -d -s hello 'top'

と入力すると

tmux attach -t hello

トップのセッションに移動します。これが役立つことを願っています。チェック

man tmux

すべての機能をチェックしてここ包括的なチートシート

答え2

これで大丈夫ですか?

screen -dmS screen_name bash -c "sed -i 's/a/b/'g some-file.txt"

関連情報