中易网

linux 一个sh小脚本,这里的wait用的对吗?为什么不是sleep?wait可以这么用吗?

答案:2  悬赏:80  
解决时间 2021-03-17 04:06
linux 一个sh小脚本,这里的wait用的对吗?为什么不是sleep?wait可以这么用吗?
最佳答案
wait 命令后面跟的参数是进程的id,根据我的理解,wait是等待某进程结束后再往下执行脚本,如果wait后不跟参数,就是等待以上所有进程都执行完后再往下执行脚本。
按照你的意思,是要等待一段时间的,则应该用sleep 命令,sleep就是用来延迟一段时间用的,将wait 300 改成sleep 300才正确。
追问:我写的一个小脚本,如果用sleep,过后再调用这个脚本,我发现就会又产生一个这个脚本的进程,如果用wait就会避免这个问题对吧,但是wait 后面跟pid 我怎么能知道进程号是多少 每次执行都查查?他不是会变吗?
全部回答
进程号会变你每次执行都需要用脚本获得进程号。
当前脚本的进程号是:$$
最后一个后台程序的进程号是:$!
使用wait 需要使用后台程序。
ls -Rl > last_file &
wait $! #等待上个后台进程结束。
ls -Rl > current_file > current_file
diff last_file current_file
你把你代码写出来。使用 内置命令source 调用脚本不会产生新进程。 直接执行脚本会产生子进程。
$ echo"echo pid: \$$ " >a.sh
$ chmod a+x a.sh
$ echo pid: $$
pid:2160
$ source a.sh
pid:2160
$ ./a.sh
pid:2563
追问:如果我想写的效果是:每5分钟检查一次。就用这种办法的话应该如何做?感觉说的看起来不是太明白
追答:应该用后台进程。给你写个例子1s钟检查一次,某个进程是否存在,如果存在就echo 一下。
务必将例子以脚本方式运行:
#!/bin/bash
#次命令判断有无gvim进程存在。如果进程存在就不断循环直到进程终止。
{
while true;
do
sleep 1s
if ps -A|grep -q -e'gvim' ; then
echo gvim is running
else
echo gvim no running,script exit.
exit 0
fi
done
}&
#注意跨括号最后的& 符号它表示此命令分组在后台执行。
记得采纳哈。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
老河口市襄樊百世快递(振兴路店)地址是什么,
黄大仙路/凯旋路(路口)地址有知道的么?有点
惠州淡水哪里好玩?具体价格介绍一下
在溧水县买房要开无房证明需要什么手续
本科学历就可以落成都户口吗
不敢见你送我的丝娟歌词是那一首歌的
天津哪里的艺术照比较好?
魅族Note5手机误删的照片怎么恢复?
asinx-bcosx=? 辅助角公式,看清楚不是加号是
求Sony Z5 Premium使用感受,真的跟传说中说
我是黄梅县的一名学生,今年中考,分数高出黄
湘f7开头是岳阳哪的车
学跆拳道有什么好处和坏处
前男友生日,我该用什么样的祝福语祝他生日快
西宁市粮食局地址有知道的么?有点事想过去
推荐资讯
日照市公共资源交易中心在市区什么路
有想领养萨摩耶的狗狗吗,公的,有的联系保定
新华第一家夜食虾王羊烤鱼在什么地方啊,我要
本人想从江西赣州托运摩托车到广东惠州惠城区
在结转销售成本时,记账凭证后面是不是要附上
DNF最新85版本 升到85一直不转职 会不会影响
用两种循环结构输出101~500之间的所有奇数并
有些昨天是今天渴望的明天制作情绪卡片
琪琪木门怎么样?
苹果的售后太差,打什么电话可以维权
iphone7plus型号mn是什么意思
广西壮族自治区贵港市覃塘区覃塘镇振兴街邮编
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?