[linux] 线程和wait命令,sleep命令
生活随笔
收集整理的這篇文章主要介紹了
[linux] 线程和wait命令,sleep命令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在linux腳本編程中使用多線程編程,其中wait命令可以實現shell的多線程同步控制。
1. 啟動后臺子任務
在執行命令后加&操作符,表示將命令放在子shell中異步執行。可以達到多線程效果。如下,
sleep 10 #等待10秒,再繼續下一操作 sleep 10 & #當前shell不等待,后臺子shell等待2. wait命令
wait是用來阻塞當前進程的執行,直至指定的子進程執行結束后,才繼續執行。使用wait可以在bash腳本“多進程”執行模式下,起到一些特殊控制的作用。
? wait? [作業指示或進程號]
eg:wait 23 ? or ?wait %1
? ? ? ? 1.等待作業號或者進程號制定的進程退出,返回最后一個作業或進程的退出狀態狀態。如果沒有制定參數,則等待所有子進程的退出,其退出狀態為0.
? ? ? ? 2.如果是shell中等待使用wait,則不會等待調用函數中子任務。在函數中使用wait,則只等待函數中啟動的后臺子任務。
? ? ? ? 3.在shell中使用wait命令,相當于高級語言里的多線程同步。
?example:
1.使用wait等待所有子任務結束。
#!/bin/sh echo “1” sleep 5& echo “3” echo “4” wait #會等待wait所在bash上的所有子進程的執行結束,本例中就是sleep 5這句 輸出:echo”5”2.在函數中使用wait
#!/bin/bash source ~/.bashrc fun(){ echo "fun is begin.timeNum:$timeNum" local timeNum=$1 sleep $timeNum & wait #這個只等待wait前面sleep echo "fun is end.timeNum:$timeNum" } fun 10 & fun 20 & wait #如果fun里面沒有wait,則整個腳本立刻退出,不會等待fun里面的sleep echo "all is ending"輸出結果為:
fun is begin.timeNum:10 fun is begin.timeNum:20 fun is end.timeNum:10 fun is end.timeNum:20 all is ending?
轉載于:https://www.cnblogs.com/xiaofeiIDO/p/6170199.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的[linux] 线程和wait命令,sleep命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux安装xz解压xz文件和安装py
- 下一篇: linux系统下搭建php环境之-Dis