
コマンドを使用してスクリーンモードでコマンドを実行しようとしています
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"