如何在bash for循环中将程序启动到后台
以下脚本片段为选项卡中的每个条目启动shell脚本sqoopToHdfs.sh一次,但顺序如下:如何在bash for循环中将程序启动到后台,bash,Bash,以下脚本片段为选项卡中的每个条目启动shell脚本sqoopToHdfs.sh一次,但顺序如下: tabs="contracts employees resources" for t in $tabs; do /shared/sqoopToHdfs.sh $t >$t.out 2>&1 ; done 但以下同时启动所有这些系统的尝试不起作用: 那么,在后台启动与for循环兼容的正确语法是什么(或者实现相同的效果)?丢失 for t in $tabs; do /shared/
tabs="contracts employees resources"
for t in $tabs; do /shared/sqoopToHdfs.sh $t >$t.out 2>&1 ; done
但以下同时启动所有这些系统的尝试不起作用:
那么,在后台启动与for循环兼容的正确语法是什么(或者实现相同的效果)?丢失
代码>
for t in $tabs; do /shared/sqoopToHdfs.sh $t >$t.out 2>&1 & done
丢失代码>
for t in $tabs; do /shared/sqoopToHdfs.sh $t >$t.out 2>&1 & done
如果您想将其写在一行上:(符号后面不带分号):
顺便说一句,您应该使用更健壮的语法和数组:
tabs=( contracts employees resources)
for t in "${tabs[@]}"; do /shared/sqoopToHdfs.sh "$t" > "$t.out" 2>&1 & done
或者(完全一样):
(使用此表单,您从来没有遇到过问题!)如果您想将其写在一行上:(符号后面没有分号):
顺便说一句,您应该使用更健壮的语法和数组:
tabs=( contracts employees resources)
for t in "${tabs[@]}"; do /shared/sqoopToHdfs.sh "$t" > "$t.out" 2>&1 & done
或者(完全一样):
(使用此表单,您从未遇到过问题!)在末尾添加&
for t in $tabs; do /shared/sqoopToHdfs.sh $t >$t.out 2>&1 & done
我不知道你想让它们运行多长时间,但是它们都会被绑定到终端上,你可以在它像这样运行后断开连接,如果你关闭终端,就可以让它们存活
断开PID
在末尾添加一个&
for t in $tabs; do /shared/sqoopToHdfs.sh $t >$t.out 2>&1 & done
我不知道你想让它们运行多长时间,但是它们都会被绑定到终端上,你可以在它像这样运行后断开连接,如果你关闭终端,就可以让它们存活
断开PID
怎么样:
pins=""
for t in $tabs; do
nohup /shared/sqoopToHdfs.sh $t >$t.out 2>&1 &
pins="$!,$pins"
done
那么:
pins=""
for t in $tabs; do
nohup /shared/sqoopToHdfs.sh $t >$t.out 2>&1 &
pins="$!,$pins"
done
我如何将(捕获PID,否认PID)插入到一行中?有几个答案彼此相似。我将奖励这一个,因为“disown”有点重要,我以前没有考虑过。disown还可以作为命令的前缀,因此应该能够在do
之后插入(捕获PID,disown PID)到一个行文中?有几个答案彼此类似。我会奖励这个,因为“disown”有点重要,我以前没有考虑过。disown也可以作为命令的前缀,所以应该能够在do
之后插入“可能重复”的标题,即使根本问题是相同的,也无法找到我问题的答案。这没关系。这就是我们为您处理的原因。“可能重复”的标题在找到我问题的答案时不会有用——即使根本问题是相同的。这没关系。这就是我们为你处理这件事的原因。