轶哥

📚 Having fun with AI Agent. Always learning.

    Shell异步延迟执行命令

    在Shell脚本中,特别是Linux操作系统内置的各项启动脚本,经常会遇到需要延迟异步去执行的命令。例如在/etc/rc.local文件或配置网卡相关的脚本文件里面,希望对应脚本能够先返回exit 0以免阻塞任务,然后再异步的去执行不关注执行结果的一些命令,甚至延迟执行异步命令。

    在*nux命令中,命令 &为后台进程命令(放在命令参数最后面的&表示设置此命令后台执行)。

    因此,在Shell中,命令之后跟上&即异步去执行该命令。

    sleep是延时命令,sleep 1代表将命令延迟1秒后执行。

    因此,在Shell中异步延迟执行命令,只需要同时使用&sleep。例如异步延迟30秒执行命令:

    (
    sleep 30
    希望被延迟执行的命令
    ) &
    

    例如,在/etc/rc.local中设置默认网关(这个方法在《Linux网卡优先级配置及同时访问内外网设置》中就有实际应用):

    #!/bin/sh
    
    (
    sleep 30
    /usr/sbin/route add default gw 10.10.11.250 eth0
    ) &
    
    exit 0
    

    这样一来,exit 0将会被马上执行,而设置网关的任务将会被延迟到30s以后再执行。

    打赏
    交流区

    暂无内容

    尚未登陆
    发布
      上一篇 (Linux网卡优先级配置及同时访问内外网设置)
    下一篇 (OpenWRT根据网址段分配不同网关/旁路由)  

    评论回复提醒