使用flock的bash脚本失败
我有一个任务:每十秒钟通过curl调用一个脚本 为此,我愿意:使用flock的bash脚本失败,bash,ssh,cron,flock,Bash,Ssh,Cron,Flock,我有一个任务:每十秒钟通过curl调用一个脚本 为此,我愿意: 创建bash脚本:admin\u 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
#!/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
*/1 * * * * flock -n /var/www/admin/data/admin_lock -c /var/www/admin/data/admin_cron.sh
admin\u lock
是免费的,cron将每分钟启动admin\u cron.sh
。然后,如果admin\u cron.sh
终止或死亡,admin\u cron.sh
再次启动。没关系
admin\u cron.sh
尝试每隔10秒通过curl调用我的URL。卷曲的最长时间为3秒
问题:当我开始工作时,每件事都能正常工作大约两到三天;之后,我在htop
util中看到admin\u 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
我的问题在哪里?为什么脚本在后台运行
flock
?因为,我需要调用脚本并获取答案,然后再加上10秒再运行它。你不应该将curl
的输出重定向到某个地方吗?你遇到的问题似乎是由于某种原因而跳过了睡眠。不知道为什么。为什么进程以98.7%的速度运行?在我的脚本中,可能有三个命令:sleep、flock和curl。其中之一是全部失败。哪个和为什么?