如果我在cron中使用sleep命令,会不会影响其他进程?
If I use the sleep command in cron, will it affect other processes?
我需要每分钟设置一次 cron 作业。
所以我写了下面的crontab
*/1 * * * * /path/to/script/myscript.sh
#! /bin/sh
echo "start `date '+%Y-%m-%d %H:%M:%S'`" >> /path/to/project/log/runtime.log
curl -s https://www.example.com/data.txt > /path/to/project/data/data.txt;
echo "end `date '+%Y-%m-%d %H:%M:%S'`" >> /path/to/project/log/runtime.log
这一次,我的业务伙伴说他希望这个过程 运行 每分钟 50 秒。
Cron 不允许以秒为单位指定时间。
所以我要使用睡眠命令。
#! /bin/sh
echo "start `date '+%Y-%m-%d %H:%M:%S'`" >> /path/to/project/log/runtime.log
sleep 50
curl -s https://www.example.com/data.txt > /path/to/project/data/data.txt;
echo "end `date '+%Y-%m-%d %H:%M:%S'`" >> /path/to/project/log/runtime.log
我最害怕的,
此休眠进程是否会影响其他服务器进程?
还有许多其他的 cron 作业 运行ning,
我的 cron 进程将是最后一个被执行的进程。
*/1 * * * * /path/to/script/another-script-a.sh
*/30 * * * /usr/bin/php /path/to/html/another-script-b.php 1> /dev/null
0 8 10 12 * /path/to/script/another-script-c.
*/1 * * * * /path/to/script/myscript.sh
如果我使用 sleep 命令将进程延迟 50 秒,
它不会也延迟其他进程 50 秒吗?
我测试了两个简单的 cronjob,它们同时 运行。
所以我认为睡眠命令不会影响其他进程。
cd ~
mkdir test
sudo chmod -R 777 test
cd test
touch test1.sh
touch test2.sh
vi test.txt
*/1 * * * * /home/ec2-user/environment/test/test1.sh
*/1 * * * * /home/ec2-user/environment/test/test2.sh
vi test1.sh
echo "start1 `date '+%Y-%m-%d %H:%M:%S'`" >> /home/ec2-user/environment/test/test.log
sleep 50
echo "end1 `date '+%Y-%m-%d %H:%M:%S'`" >> /home/ec2-user/environment/test/test.log
vi test2.sh
echo "start2 `date '+%Y-%m-%d %H:%M:%S'`" >> /home/ec2-user/environment/test/test.log
sleep 50
echo "end2 `date '+%Y-%m-%d %H:%M:%S'`" >> /home/ec2-user/environment/test/test.log
tail -f test.log
end2 2020-12-25 14:29:51
end1 2020-12-25 14:29:51
start2 2020-12-25 14:30:02
start1 2020-12-25 14:30:02
end2 2020-12-25 14:30:52
end1 2020-12-25 14:30:52
start1 2020-12-25 14:31:01
start2 2020-12-25 14:31:01
end2 2020-12-25 14:31:51
end1 2020-12-25 14:31:51
我需要每分钟设置一次 cron 作业。
所以我写了下面的crontab
*/1 * * * * /path/to/script/myscript.sh
#! /bin/sh
echo "start `date '+%Y-%m-%d %H:%M:%S'`" >> /path/to/project/log/runtime.log
curl -s https://www.example.com/data.txt > /path/to/project/data/data.txt;
echo "end `date '+%Y-%m-%d %H:%M:%S'`" >> /path/to/project/log/runtime.log
这一次,我的业务伙伴说他希望这个过程 运行 每分钟 50 秒。
Cron 不允许以秒为单位指定时间。 所以我要使用睡眠命令。
#! /bin/sh
echo "start `date '+%Y-%m-%d %H:%M:%S'`" >> /path/to/project/log/runtime.log
sleep 50
curl -s https://www.example.com/data.txt > /path/to/project/data/data.txt;
echo "end `date '+%Y-%m-%d %H:%M:%S'`" >> /path/to/project/log/runtime.log
我最害怕的, 此休眠进程是否会影响其他服务器进程?
还有许多其他的 cron 作业 运行ning, 我的 cron 进程将是最后一个被执行的进程。
*/1 * * * * /path/to/script/another-script-a.sh
*/30 * * * /usr/bin/php /path/to/html/another-script-b.php 1> /dev/null
0 8 10 12 * /path/to/script/another-script-c.
*/1 * * * * /path/to/script/myscript.sh
如果我使用 sleep 命令将进程延迟 50 秒, 它不会也延迟其他进程 50 秒吗?
我测试了两个简单的 cronjob,它们同时 运行。
所以我认为睡眠命令不会影响其他进程。
cd ~
mkdir test
sudo chmod -R 777 test
cd test
touch test1.sh
touch test2.sh
vi test.txt
*/1 * * * * /home/ec2-user/environment/test/test1.sh
*/1 * * * * /home/ec2-user/environment/test/test2.sh
vi test1.sh
echo "start1 `date '+%Y-%m-%d %H:%M:%S'`" >> /home/ec2-user/environment/test/test.log
sleep 50
echo "end1 `date '+%Y-%m-%d %H:%M:%S'`" >> /home/ec2-user/environment/test/test.log
vi test2.sh
echo "start2 `date '+%Y-%m-%d %H:%M:%S'`" >> /home/ec2-user/environment/test/test.log
sleep 50
echo "end2 `date '+%Y-%m-%d %H:%M:%S'`" >> /home/ec2-user/environment/test/test.log
tail -f test.log
end2 2020-12-25 14:29:51
end1 2020-12-25 14:29:51
start2 2020-12-25 14:30:02
start1 2020-12-25 14:30:02
end2 2020-12-25 14:30:52
end1 2020-12-25 14:30:52
start1 2020-12-25 14:31:01
start2 2020-12-25 14:31:01
end2 2020-12-25 14:31:51
end1 2020-12-25 14:31:51