我有一个简短的脚本,它应该启动一个应用程序,等待一个小时,然后杀死它并等待一分钟。它只启动应用程序。我尝试以普通用户和 root 用户身份运行脚本,但没有任何帮助。
while (true); do
./app
sleep 3600
pkill -f app
sleep 60
done
我有一个简短的脚本,它应该启动一个应用程序,等待一个小时,然后杀死它并等待一分钟。它只启动应用程序。我尝试以普通用户和 root 用户身份运行脚本,但没有任何帮助。
while (true); do
./app
sleep 3600
pkill -f app
sleep 60
done
问题是所有命令都是按顺序从第一行到最后一行执行的。因此,
@Scott Stensland
您必须通过&
(&) 将其置于后台以使计时器启动。此外,我认为通过搜索进程名称来获取应用程序的 PID 是一种危险的做法,因为您可能会不小心杀死
app
名称中包含字符串的程序。所以更安全的方法是使用变量!
来获取 PID 。因此,您修改后的脚本现在应该如下所示:当你把一个进程放到后台时,
&
它会进入父 bash 进程的作业列表,通过!
你可以得到最后一个作业的 PID。所以它是安全的。您可以考虑使用以下
timeout
命令:前任。