Linux 如何设置两个curl命令在不同的时间永远执行?

Linux 如何设置两个curl命令在不同的时间永远执行?,linux,bash,Linux,Bash,例如,我希望每10秒运行一个命令,每5分钟运行另一个命令。我只能让第一个正确登录到文本文件。下面是我正在编写的shell脚本: echo "script Running. Press CTRL-C to stop the process..." while sleep 10; do curl -s -I --http2 https://www.ubuntu.com/ >> new.txt echo "------------1st command----

例如,我希望每10秒运行一个命令,每5分钟运行另一个命令。我只能让第一个正确登录到文本文件。下面是我正在编写的shell脚本:

echo "script Running. Press CTRL-C to stop the process..."
while sleep 10;
do
curl -s -I --http2 https://www.ubuntu.com/ >> new.txt
echo "------------1st command--------------------"  >> logs.txt;
done
||
while sleep 300;
do
curl -s -I --http2 https://www.google.com/
echo "-----------------------2nd command---------------------------" >> logs.txt;
done

我认为现在发生的是你开始第一个循环。第一个循环需要在第二个循环开始之前完成。但是,第一个循环被设计为无限循环。 我建议您将每个curl循环放在一个单独的批处理文件中。 然后,您可以在后台单独运行每个批处理文件。 我提供两个建议供您调查您的解决方案。 首先,研究crontab的使用,并设置一个cron作业来运行批处理文件。 第二,研究使用nohup作为运行批处理文件的方法。
我强烈建议您也研究监控工作的方法,并知道如果出现任何问题,如何终止工作。您正在设置无限循环。简单控件C不会终止后台运行的作业。你所处的区域可能会失控。你需要知道自己在做什么。

我建议你接受@Marvin Crone的答案,但研究cronjobs和后台流程似乎不像我为这个小脚本所经历的那样麻烦。相反,尝试将两个循环放入单独的脚本中;像这样:

脚本1.sh

echo "job 1 Running. Type fg 1 and press CTRL-C to stop the process..."
while sleep 10;
do
echo $(curl -s -I --http2 https://www.ubuntu.com/)  >> logs.txt;
done
脚本2.sh

echo "job 2 Running. Type fg 2 and press CTRL-C to stop the process..."
while sleep 300;
do
echo $(curl -s -I --http2 https://www.google.com/) >> logs.txt;
done
添加可执行权限

chmod +x script1.sh
chmod +x script2.sh
最后但并非最不重要的是运行它们:

./script1.sh & ./script2.sh &
这将在后台创建两个单独的作业,您可以通过键入来调用它们:

fg (1 or 2)

然后用CTRL-C停止它们,或者通过键入CTRL-Z再次将它们发送到后台。是否有一个单独的循环,它下载第一个URL 30次(使用内部循环),然后下载第二个URL一次,然后再重复整个过程?