[linux]bash -x run.sh 这个命令 如果有交互行为,如何设置 ubuntu 为后台执行
如果脚本需要用户交互,那么将其放在后台运行时,可以通过以下方法解决交互问题:
方法一:使用 tmux
或 screen
这些工具可以让你在后台运行脚本并保留交互功能。
- 启动一个
tmux
或screen
会话tmux new -s myscript
或者
screen -S myscript
运行脚本
在会话中运行你的脚本:bash -x run.sh
分离会话
按下Ctrl + B
,然后按D
(对于tmux
)。
或者按下Ctrl + A
,然后按D
(对于screen
)。重新连接会话
随时通过以下命令重新连接:tmux attach -t myscript
或者
screen -r myscript
方法二:使用 nohup
+ tail -f
实时查看日志
如果你希望后台运行并观察日志:
后台运行脚本
nohup bash -x run.sh > script.log 2>&1 &
实时查看日志
打开一个新的终端窗口,使用以下命令实时查看日志输出:tail -f script.log
输入交互
这种方式适用于输入有限交互的脚本,但如果需要频繁交互,建议使用tmux
或screen
。
方法三:通过管道输入数据
如果你知道交互时需要输入的内容,可以将它提前写入文件,并使用重定向提供输入。
创建输入文件
假设交互需要输入以下内容:1 2 3
保存到
input.txt
:echo -e "1\n2\n3" > input.txt
运行脚本并提供输入
bash -x run.sh < input.txt
后台运行
使用nohup
后台运行:nohup bash -x run.sh < input.txt > script.log 2>&1 &
方法四:设置默认值(适合需要很少输入的情况)
在脚本中为交互输入设置默认值,这样在没有用户输入时,脚本可以继续执行:
修改你的脚本中
演示
这就打开了 交互窗口
可以执行交互,执行命令。
然后也可以发现服务启动了,这边cpu都满了
后台先关闭窗口
ctrl B
再按D
本作品采用《CC 协议》,转载必须注明作者和本文链接