Linux 如何一次触发多个nohup脚本?

Linux 如何一次触发多个nohup脚本?,linux,bash,shell,terminal,nohup,Linux,Bash,Shell,Terminal,Nohup,我正在优化我的一些工作流程,想知道是否有人遇到过与我类似的问题。我一直在努力找出如何同时启动多个“nohup”shell脚本。例如,我有几个脚本如下所示: start.sh rm nohup.out nohup python -u script.py args process_directory_1/start.sh & process_directory_2/start.sh ... (3-5 more of these) process_directory_1/start.sh

我正在优化我的一些工作流程,想知道是否有人遇到过与我类似的问题。我一直在努力找出如何同时启动多个“nohup”shell脚本。例如,我有几个脚本如下所示:

start.sh

rm nohup.out
nohup python -u script.py args
process_directory_1/start.sh & process_directory_2/start.sh ... (3-5 more of these)
process_directory_1/start.sh && process_directory_2/start.sh ... (3-5 more of these)
我试着用这样的脚本运行它们:

启动选项1.sh

rm nohup.out
nohup python -u script.py args
process_directory_1/start.sh & process_directory_2/start.sh ... (3-5 more of these)
process_directory_1/start.sh && process_directory_2/start.sh ... (3-5 more of these)
就像这样:

启动选项2.sh

rm nohup.out
nohup python -u script.py args
process_directory_1/start.sh & process_directory_2/start.sh ... (3-5 more of these)
process_directory_1/start.sh && process_directory_2/start.sh ... (3-5 more of these)

但是没有骰子。。。脚本甚至不会启动。任何想法/帮助都将不胜感激!!如果使用python3.6也很重要的话(但这似乎更像是一个nohup问题)。

使用“&”和使用“&&”之间有很大的区别。第一个将在后台运行每个脚本。第二个脚本将按顺序执行它们,只要每个脚本返回success('exit 0'或等效值)

从“start.sh”的上下文来看,似乎您需要第一个选项(一起启动所有脚本)。每个脚本都在执行一个python程序“script.py”。文章没有指定初始工作目录中是否有一个脚本,或者每个文件夹中是否有多个“script.py”。可能是第二种选择

如果是这种情况,您希望从process_directory_*文件夹启动脚本。考虑改变:

( cd process_directory_1 && exec ./start.sh) &
( cd process_directory_2 && exec ./start.sh) &
...
注:

  • 所有脚本同时启动
  • 每个脚本都在不同的文件夹中执行,以访问该文件夹中的script.py
  • 每个作业都会将日志保留在运行文件夹“nohup.log”中

  • 使用“&”和使用“&&”之间有很大的区别。第一个将在后台运行每个脚本。第二个脚本将按顺序执行它们,只要每个脚本返回success('exit 0'或等效值)

    从“start.sh”的上下文来看,似乎您需要第一个选项(一起启动所有脚本)。每个脚本都在执行一个python程序“script.py”。文章没有指定初始工作目录中是否有一个脚本,或者每个文件夹中是否有多个“script.py”。可能是第二种选择

    如果是这种情况,您希望从process_directory_*文件夹启动脚本。考虑改变:

    ( cd process_directory_1 && exec ./start.sh) &
    ( cd process_directory_2 && exec ./start.sh) &
    ...
    
    注:

  • 所有脚本同时启动
  • 每个脚本都在不同的文件夹中执行,以访问该文件夹中的script.py
  • 每个作业都会将日志保留在运行文件夹“nohup.log”中

  • 最好使用
    cd…&&
    (而不是用分号分隔这些命令),以便在
    cd
    失败时,右侧的命令不会出现在错误的目录中。并考虑使用<代码> Exc> <代码>,通过在最后一个命令中抑制叉子来消耗子shell。非常感谢这两个shell,这很好地工作,使我的脚本更容易执行。我接受了@CharlesDuffy的建议,最后得到了:
    (cd-process\u-directory\u-1&&&./start.sh)和(cd-process\u-directory\u-2&&&./start.sh)&…
    ,供其他任何可能遇到nohup问题的人使用@Charlesduff将建议集成到解决方案中更好地使用
    cd…&&
    (而不是用分号分隔这些命令),以便在
    cd
    失败时,右侧的命令不会出现在错误的目录中。并考虑使用<代码> Exc> <代码>,通过在最后一个命令中抑制叉子来消耗子shell。非常感谢这两个shell,这很好地工作,使我的脚本更容易执行。我接受了@CharlesDuffy的建议,最后得到了:
    (cd-process\u-directory\u-1&&&./start.sh)和(cd-process\u-directory\u-2&&&./start.sh)&…
    ,供其他任何可能遇到nohup问题的人使用@CharlesDuffy将提案集成到解决方案中
    nohup
    实际上没有什么用处;只要您真正使用bash并使用
    disown
    命令,就没有理由使用它<代码>python-u script.py args scriptOne.log 2>&1&scriptOne_pid=$!&disown-h“$scriptOne_pid”执行nohup所做的一切,根本不需要任何外部命令。可以理解,我会在将来的项目中记住这一点。这个项目的客户出于某种原因需要nohup,这就是我遇到问题的原因。谢谢
    nohup
    根本没有什么用处;只要您真正使用bash并使用
    disown
    命令,就没有理由使用它<代码>python-u script.py args scriptOne.log 2>&1&scriptOne_pid=$!&disown-h“$scriptOne_pid”执行nohup所做的一切,根本不需要任何外部命令。可以理解,我会在将来的项目中记住这一点。这个项目的客户出于某种原因需要nohup,这就是我遇到问题的原因。谢谢