从shellscript开始后台进程,然后再回到前台
发布时间:2020-12-15 16:59:30 所属栏目:安全 来源:网络整理
导读:我正在尝试制作一个执行以下操作的 shell脚本: 启动程序x 当x正在运行时执行一些命令,例如: echo "blabla" ~/blabla.txt 执行这些命令后,程序x应该在前台运行,以便它可以接受用户输入. 到目前为止,我有: ~/x echo "blabla" ~/blabla.txt 但是,我不知道如
我正在尝试制作一个执行以下操作的
shell脚本:
>启动程序x echo "blabla" >> ~/blabla.txt >执行这些命令后,程序x应该在前台运行,以便它可以接受用户输入. 到目前为止,我有: ~/x & echo "blabla" >> ~/blabla.txt 但是,我不知道如何将x移回前台.这是从shell脚本调用的,因此我不知道x的作业号移动到前台. 注意:一切都必须自动化,不需要用户与shell脚本的交互. 欢迎任何建议:)
虽然绝对不明白为什么有人可能需要这样的脚本,而且我确信存在更优雅,更好/更正确的解决方案 – 但是好 – 下一个演示如何:
什么去背景的脚本(命名为bgg) #!/bin/bash for i in $(seq 10) do echo "bg: $i" sleep 1 done read -p 'BGG enter something:' -r data echo "$0 got: $data" 主脚本(main.sh) set -m #this is important echo "Sending script bgg to background - will cycle 10 secs" ./bgg & 2>/dev/null echo "Some commands" date read -r -p 'main.sh - enter something:' fgdata echo "Main.sh got: ==$fgdata==" jnum=$(jobs -l | grep " $! " | sed 's/[(.*)].*/1/') echo "Backgroung job number: $jnum" echo "Now sleeping 3 sec" sleep 3 echo "Bringing $jnum to foreground - wait until the BG job will read" fg $jnum 运行./main.sh – 结果将是这样的 Sending bgg to background - will cycle 10 secs Some commands Mon Mar 3 00:04:57 CET 2014 main.sh - enter something:bg: 1 bg: 2 bg: 3 bg: 4 bg: 5 qqbg: 6 qqqqq Main.sh got: ==qqqqqqq== Backgroung job number: 1 Now sleeping 3 sec bg: 7 bg: 8 bg: 9 Bringing 1 to foreground - wait until the BG job will read ./bgg bg: 10 BGG enter something:wwwwwww ./bgg got: wwwwwww (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |