惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
A
About on SuperTechFans
博客园 - Franky
Engineering at Meta
Engineering at Meta
Recent Announcements
Recent Announcements
云风的 BLOG
云风的 BLOG
B
Blog
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
Martin Fowler
Martin Fowler
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 叶小钗
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
Last Week in AI
Last Week in AI
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
V
V2EX
G
Google Developers Blog

轶哥博客

blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog
blog
2022-05-02 · via 轶哥博客

在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以后再执行。