我正在尝试使用命令在屏幕模式下运行命令
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
它将带您进入 top 会话。希望这会有所帮助。检查
man tmux
针对所有功能并检查这里获得一份全面的备忘单
答案2
这对你有用吗?
screen -dmS screen_name bash -c "sed -i 's/a/b/'g some-file.txt"