如何在一段时间后终止从脚本运行的命令?

如何在一段时间后终止从脚本运行的命令?

我想运行一个永无止境的命令(例如循环播放 mp3 文件)一段长度为 T 的时间。

我将命令放入 shell 脚本 my.sh 中:

#! /bin/bash
vlc /path/to/my.mp3 # will play the file in loop till I terminate it.

然后我尝试运行它

my.sh & 
pid="$!" # need to get the pid of the vlc process.
sleep 2.5h
kill $pid 

看起来它只杀死运行shell脚本的进程,而不杀死运行脚本中命令的进程。如何终止脚本中运行命令的进程?

谢谢。

答案1

命令timeout这样做。例如:

timeout 10m vlc /path/to/my.mp3

10分钟后就会杀死它。请参阅手册页了解更多选项(例如-k发送终止信号以确保程序不再运行)。

答案2

timeout

接近原始帖子的替代解决方案:

我的.sh:

#!/bin/bash
vlc /path/to/my.mp3 & # ADDED & <- will play the file in loop till I terminate it.
pid=$!
sleep 10
kill $pid

chmod:

chmod +x my.sh

运行:

./my.sh &

相关内容