我有一个任务:每十秒钟通过curl调用一个脚本。
为此,我这样做:
创建bash脚本:admin_cron.sh
#!/bin/bash
while :; do
sleep 10
flock -n /var/www/admin/data/cron_lock -c \
'curl -m 3 "http://url.com/?mod=kasdim_robot_cron&server=true"' &
done
在crontab中添加规则:
*/1 * * * * flock -n /var/www/admin/data/admin_lock -c /var/www/admin/data/admin_cron.sh
因此,如果文件admin_cron.sh
空闲,则cron将每分钟启动admin_lock
。然后,如果admin_cron.sh
被终止或死亡,则admin_cron.sh
重新开始。没关系。
admin_cron.sh
尝试每10秒通过curl调用我的URL。最长卷曲时间为三秒钟。
问题:当我开始时,大约两到三天一切正常。之后,我在htop
实用程序中看到admin_cron.sh
是悬停过程:
在开始时间:
CPU[ 0.0%] Tasks: 61, 53 thr; 1 running
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||461M/996M] Load average: 0.44 0.83 0.94
Swp[ 0K/0K] Uptime: 86 days, 18:43:58
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
707 root 20 0 29600 2828 2512 S 0.0 0.3 1:27.18 ├─ /usr/sbin/cron -f
22150 root 20 0 48868 2864 2416 S 0.0 0.3 0:00.00 │ └─ /usr/sbin/CRON -f
22151 admin 20 0 4288 720 648 S 0.0 0.1 0:00.00 │ └─ /bin/sh -c flock -n /var/www/admin/data/admin_lock -c /var/www/admin/data/admin_cron.sh
22156 admin 20 0 10044 816 728 S 0.0 0.1 0:00.00 │ └─ flock -n /var/www/admin/data/admin_lock -c /var/www/admin/data/admin_cron.sh
22161 admin 20 0 4288 764 692 S 0.0 0.1 0:00.00 │ └─ /bin/sh -c /var/www/admin/data/admin_cron.sh
22167 admin 20 0 11132 2896 2648 S 0.0 0.3 0:00.00 │ └+ /bin/bash /var/www/admin/data/admin_cron.sh
一段时间后:
CPU[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||100.0%] Tasks: 64, 53 thr; 2 running
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||466M/996M] Load average: 1.00 1.00 1.00
Swp[ 0K/0K] Uptime: 86 days, 18:42:30
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
707 root 20 0 29600 2828 2512 S 0.0 0.3 1:27.18 ├─ /usr/sbin/cron -f
25818 root 20 0 48868 2864 2416 S 0.0 0.3 0:00.00 │ └─ /usr/sbin/CRON -f
25819 admin 20 0 4288 752 676 S 0.0 0.1 0:00.00 │ └─ /bin/sh -c flock -n /var/www/admin/data/admin_lock -c /var/www/admin/data/admin_cron.sh
25821 admin 20 0 10044 800 712 S 0.0 0.1 0:00.00 │ └─ flock -n /var/www/admin/data/admin_lock -c /var/www/admin/data/admin_cron.sh
25824 admin 20 0 4288 788 716 S 0.0 0.1 0:00.00 │ └─ /bin/sh -c /var/www/admin/data/admin_cron.sh
25825 admin 20 0 12636 4260 2552 R 98.7 0.4 60h56:25 │ └─ /bin/bash /var/www/admin/data/admin_cron.sh
我的问题在哪里?