正如标题所示,我该如何编写一个bash脚本来执行3个不同的Python程序作为单独的进程? 然后,我能够访问这些进程中的每一个,看看login到terminal上的是什么?
编辑:再次感谢。 我忘了提及,我知道附加&但我不知道如何访问什么是输出到每个过程的terminal。 例如,我可以在不同的选项卡上分别运行这三个程序,并能够看到输出内容。
将文件夹复制到具有不同%userprofile%的多个服务器%
VBScript当前目录+子目录?
Linux Bash。 2线有什么区别?
command &
这使您可以连续启动多个作业,而无需等待上一个作业完成。
如果你像这样启动多个后台作业,它们将共享相同的stdout (和stderr ),这意味着它们的输出可能会被交织。 例如,采取以下脚本:
#!/bin/bash # countup.sh for i in `seq 3`; do echo $i sleep 1 done
在后台启动两次:
./countup.sh & ./countup.sh &
而你在终端上看到的是这样的:
1 1 2 2 3 3
但也可以看起来像这样:
1 2 1 3 2 3
你可能不想要这个,因为要弄清哪个输出属于哪个工作是很难的。 解决方案? 将每个作业的stdout (和可选的stderr )重定向到一个单独的文件。 例如
command > file &
将只重定向stdout和
command > file 2>&1 &
会在后台运行command时将stdout和stderr重定向到command file 。 这个页面很好的介绍了在Bash中的重定向。 您可以通过tail查看命令的输出“live”:
tail -f file
我会推荐使用nohup或screen作为user2676075运行后台作业,让你的工作在关闭终端会话后继续运行,例如
nohup command1 > file1 2>&1 & nohup command2 > file2 2>&1 & nohup command3 > file3 2>&1 &
尝试像这样:
command1 2>&1 | tee commandlogs/command1.log ; command2 2>&1 | tee commandlogs/command2.log ; command3 2>&1 | tee commandlogs/command3.log ...
然后您可以在命令运行时尾随文件。 请记住,你可以通过在目录中并做一个“tail * .log”
screen -S CMD1 -d -m command1 ; screen -S CMD2 -d -m command2 ; screen -S CMD3 -d -m command3 ...
然后用screen –list和screen -r [screen name]重新连接它们。
请享用
另一个选择是使用终端仿真器来运行这三个进程。 如果您使用X,您可以使用xterm(或rxvt等)。
xterm -e <program1> [arg] ... & xterm -e <program2> [arg] ... & xterm -e <program3> [arg] ... &
取决于你想要的。 这种方法可以让你弹出终端窗口,所以你可以实时看到输出。 您也可以将其与重定向组合以保存输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。