如何在脚本本身中终止由脚本启动的进程?

如何在脚本本身中终止由脚本启动的进程?

我对 shell 脚本完全是菜鸟。我正在创建一个.sh包含多个命令的文件,但我的问题是最后一个命令是一个可执行文件,执行后保持打开状态,进程在终端中继续运行,直到我关闭终端或按Ctrl+C\。我想终止这些进程或退出终端,这也会在运行文件时自动终止进程.sh。这是到目前为止的脚本:

#!/usr/bin/env bash
cd ./var/www/testGraduationProject1/public/Hume2Compiler/bin/
export PATH=$PATH:`pwd`
humec -lotsaspace tails.hume;
./tails > hello.txt

我尝试过这两个命令,但它们只是停止终端中进程的加载,而不会关闭终端或进程本身。

killall tails
stty -a | grep inter

答案1

您的问题很模糊,但我想您问的是,如何让tails命令运行秒然后杀死它?

如果是,请使用timeout命令(12.04 中默认安装)。

这是您使用的脚本timeout(我删除了一些冗余代码)。它运行tails10 分钟(600 秒),然后使用 TERM 信号将其终止。

#!/usr/bin/env bash
PATH=$PATH:$PWD/var/www/testGraduationProject1/public/Hume2Compiler/bin
humec -lotsaspace tails.hume
timeout 600 tails > hello.txt

http://mywiki.wooledge.org/BashFAQ/068了解更多信息。

答案2

尝试这个:

将此行明确地放在背景中:

./tails > hello.txt&

然后加

pkill tails

相关内容