微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有bash脚本执行多个程序作为单独的进程

正如标题所示,我该如何编写一个bash脚本来执行3个不同的Python程序作为单独的进程? 然后,我能够访问这些进程中的每一个,看看login到terminal上的是什么?

编辑:再次感谢。 我忘了提及,我知道附加&但我不知道如何访问什么是输出到每个过程的terminal。 例如,我可以在不同的选项卡上分别运行这三个程序,并能够看到输出内容

文件夹复制到具有不同%userprofile%的多个服务器%

bash:获取名称与特定模式匹配的variables列表

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] 举报,一经查实,本站将立刻删除。

相关推荐