使用用户输入运行脚本,然后断开作业并在后台运行

火器

因此,我有一个bash脚本,该脚本首先要求用户提供一系列三个变量。然后,我希望脚本在与会话断开的后台运行,以便当我断开笔记本电脑与超级计算机之间的连接时,脚本仍将运行。

要求变量将echo与看起来像这样的代码一起使用:

echo "What is limit for low level optimization?" #ask for low limit
read low
echo "What is limit for high level optimization?" #ask for high limit
read high
echo "What method?" #ask for method
read input 

然后继续执行一系列命令。

但是,我无法弄清楚如何从会话中成功断开此作业。上一次“ disown”命令无效,因为未创建我注销后应该在步骤中生成的文件。

据我了解,nohup在这里不起作用,因为这会阻止它读取脚本一开始要求我输入的任何内容。

那么有没有办法设置呢?

文件火

您可以通过模拟nohup脚本第二部分中的内容来实现。

nohup命令的作用不仅仅在于:

  • 重定向标准文件描述符,以便脚本不会尝试读取或写入终端。

  • 捕获SIGHUP信号并忽略它。SIGHUP是进程在其控制终端关闭时得到的结果。如果忽略它,则进程在关闭其终端后将继续运行。

您可以使用以下脚本完成此操作:

echo "What is limit for low level optimization?" #ask for low limit
read low
echo "What is limit for high level optimization?" #ask for high limit
read high
echo "What method?" #ask for method
read input 
(
    trap '' 1  # Ignore SIGHUP
    # Series of long running commands
    # using $low, $high and $input
) </dev/null >myscript.log 2>&1 &

最后一行会将stdin从/ dev / null重定向,并将stdout和stderr都重定向到一个myscript.log(您可以选择一个更好的文件名,并可以使用时间戳或类似的时间戳来使其唯一)。

最后,您将整个过程放在背景中并带有final &

另一种可能性是一分为二的剧本,有第二个起飞lowhighinput作为命令行参数,或者可能因为出口环境变量,然后运行使用第二部分实际的 nohup命令。这应该更简单,更灵活一些,因为您可以编写第二部分的脚本,而不必处理交互式提示。

另一种可能性是使用诸如tmux或的终端多路复用器screen,以便在断开连接时可以重新连接到会话(或者可以自己分离会话),还可以在脚本继续运行的同时打开新窗口以运行新的shell。初始窗口。无论您是实施上述解决方案之一,采用tmux还是screen都会是一个好主意,因此,如果可以的话,请尝试一下。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在后台使用HERE_DOC方法运行脚本

来自分类Dev

Bash:如何使用“&”在后台运行脚本并使用“ ||” 在失败上运行其他东西?

来自分类Dev

如何使控制台在后台运行脚本?

来自分类Dev

如何在后台运行脚本(Linux openwrt)?

来自分类Dev

ssh 在后台运行脚本并获取其 pid

来自分类Dev

使用系统命令并在后台运行的php脚本-它将仍然按顺序运行吗?

来自分类Dev

后台作业运行脚本,无需对其进行硬编码

来自分类Dev

在后台运行PHPExcel作业

来自分类Dev

在后台运行PHPExcel作业

来自分类Dev

调用脚本并在PHP中继续在后台运行它?

来自分类Dev

自动启动Python脚本并在Ubuntu中在后台运行

来自分类Dev

调用脚本并在PHP中继续在后台运行它?

来自分类Dev

在后台运行PHP脚本

来自分类Dev

在后台运行Shell脚本

来自分类Dev

在后台运行鱼脚本?

来自分类Dev

在后台运行php脚本

来自分类Dev

在后台运行 Python 脚本

来自分类Dev

接受输入后在后台运行Python脚本

来自分类Dev

睡觉,然后运行脚本

来自分类Dev

Kubuntu:如何避免“用户会话 N 的停止作业正在运行”和缓慢关闭 - 可能在 KDE 注销时运行脚本以断开 VPN

来自分类Dev

在后台运行sh脚本,并将作业添加到作业列表中

来自分类Dev

Udev 规则未在 USB 插入时执行,应在后台运行脚本

来自分类Dev

抛弃错误并在后台静默运行

来自分类Dev

使用raw_input命令在后台运行python脚本

来自分类Dev

使用输入/输出重定向在后台运行进程

来自分类Dev

后台进程崩溃时运行脚本

来自分类Dev

如何创建以root身份运行yum但以调用用户身份运行脚本的其余部分的脚本

来自分类Dev

在后台运行Heredoc格式的脚本?

来自分类Dev

在后台运行特定的Django脚本

Related 相关文章

  1. 1

    在后台使用HERE_DOC方法运行脚本

  2. 2

    Bash:如何使用“&”在后台运行脚本并使用“ ||” 在失败上运行其他东西?

  3. 3

    如何使控制台在后台运行脚本?

  4. 4

    如何在后台运行脚本(Linux openwrt)?

  5. 5

    ssh 在后台运行脚本并获取其 pid

  6. 6

    使用系统命令并在后台运行的php脚本-它将仍然按顺序运行吗?

  7. 7

    后台作业运行脚本,无需对其进行硬编码

  8. 8

    在后台运行PHPExcel作业

  9. 9

    在后台运行PHPExcel作业

  10. 10

    调用脚本并在PHP中继续在后台运行它?

  11. 11

    自动启动Python脚本并在Ubuntu中在后台运行

  12. 12

    调用脚本并在PHP中继续在后台运行它?

  13. 13

    在后台运行PHP脚本

  14. 14

    在后台运行Shell脚本

  15. 15

    在后台运行鱼脚本?

  16. 16

    在后台运行php脚本

  17. 17

    在后台运行 Python 脚本

  18. 18

    接受输入后在后台运行Python脚本

  19. 19

    睡觉,然后运行脚本

  20. 20

    Kubuntu:如何避免“用户会话 N 的停止作业正在运行”和缓慢关闭 - 可能在 KDE 注销时运行脚本以断开 VPN

  21. 21

    在后台运行sh脚本,并将作业添加到作业列表中

  22. 22

    Udev 规则未在 USB 插入时执行,应在后台运行脚本

  23. 23

    抛弃错误并在后台静默运行

  24. 24

    使用raw_input命令在后台运行python脚本

  25. 25

    使用输入/输出重定向在后台运行进程

  26. 26

    后台进程崩溃时运行脚本

  27. 27

    如何创建以root身份运行yum但以调用用户身份运行脚本的其余部分的脚本

  28. 28

    在后台运行Heredoc格式的脚本?

  29. 29

    在后台运行特定的Django脚本

热门标签

归档