Linux中的sleep和wait命令允许你以选定的速度运行命令或在等待任务完成后捕获并显示任务的退出状态。sleep只是在命令之间插入一个定时暂停。wait命令在完成后才通知它已完成。 Sleep命令 sleep命令会暂停指定的时间。它通常用于脚本中,但也适用于命令行。在下面的示例中,sleep在两个date命令之间暂停30秒。〔rootlocalhost〕sleep30;dateThuNov1105:06:44EST2021ThuNov1105:07:14EST2021 sleep命令将数字参数作为秒数。但也可以通过在参数中添加一个字符来让它休眠不同的时间:10s10seconds1m1minute2h2hours3d3days〔rootlocalhost〕sleep10s;dateThuNov1105:11:09EST2021ThuNov1105:11:19EST2021 睡眠时间也可以小于1秒钟,就是在数字前面加一个。。。1十分之一秒。01百分之一秒。001千分之一秒〔rootlocalhost〕sleep。1;dateThuNov1105:14:03EST2021ThuNov1105:14:03EST2021 sleep命令通常用于定期运行命令,例如每10秒或每分钟一次,当你想要监视某些活动时。例如,可能正在等待同事登录文件服务器。您可能会运行这样的命令:〔rootlocalhost〕sleep100;done 可以观察内存使用情况的变化。〔rootlocalhost〕sleep5;done Wait命令 wait命令在等待后台进程完成后捕获后台进程的退出状态。您也可以在脚本中使用它。将sleep命令替换为要等待的进程。此脚本还显示退出状态。!binbashsleep5processid!echoPID:processidwaitprocessidechoExitstatus:? 第一行在后台启动sleep命令。第二行获取最近执行的后台进程的进程ID!。然后脚本显示该信息,等待该进程完成并显示退出状态。 如果使用waitn(不需要额外的参数),wait将等待任何后台任务完成。在下面的示例中,sleep6命令首先完成,脚本结束,但其他两个sleep进程将继续在后台运行几秒钟。!binbashsleep15sleep9sleep6waitnechoFirstjobhasbeencompleted。 如果改成以下脚本,它会在每个睡眠过程完成时告诉你。由于时间关系,这将按照与睡眠过程开始时相反的顺序发生。!binbashsleep15sleep9sleep6waitnechoFirstjobhasbeencompleted。waitnechoNextjobhasbeencompleted。waitechoAlljobshavebeencompleted。 注意:等待的进程必须是子进程(在当前shell中启动的进程)。 总结 两者都可以在脚本或命令行中使用。但是,wait命令仅适用于在后台运行的进程。