
Я пытаюсь выполнить команду в экранном режиме с помощью команды
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, введя:
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"