加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从shellscript开始后台进程,然后再回到前台

发布时间:2020-12-15 16:59:30 所属栏目:安全 来源:网络整理
导读:我正在尝试制作一个执行以下操作的 shell脚本: 启动程序x 当x正在运行时执行一些命令,例如: echo "blabla" ~/blabla.txt 执行这些命令后,程序x应该在前台运行,以便它可以接受用户输入. 到目前为止,我有: ~/x echo "blabla" ~/blabla.txt 但是,我不知道如
我正在尝试制作一个执行以下操作的 shell脚本:

>启动程序x
>当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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读