linux 一个sh小脚本,这里的wait用的对吗?为什么不是sleep?wait可以这么用吗?
答案:2 悬赏:80
解决时间 2021-03-17 04:06
- 提问者网友:疯子也有疯子的情调
- 2021-03-16 22:15
linux 一个sh小脚本,这里的wait用的对吗?为什么不是sleep?wait可以这么用吗?
最佳答案
- 二级知识专家网友:長槍戰八方
- 2021-03-16 23:53
wait 命令后面跟的参数是进程的id,根据我的理解,wait是等待某进程结束后再往下执行脚本,如果wait后不跟参数,就是等待以上所有进程都执行完后再往下执行脚本。
按照你的意思,是要等待一段时间的,则应该用sleep 命令,sleep就是用来延迟一段时间用的,将wait 300 改成sleep 300才正确。
追问:我写的一个小脚本,如果用sleep,过后再调用这个脚本,我发现就会又产生一个这个脚本的进程,如果用wait就会避免这个问题对吧,但是wait 后面跟pid 我怎么能知道进程号是多少 每次执行都查查?他不是会变吗?
按照你的意思,是要等待一段时间的,则应该用sleep 命令,sleep就是用来延迟一段时间用的,将wait 300 改成sleep 300才正确。
追问:我写的一个小脚本,如果用sleep,过后再调用这个脚本,我发现就会又产生一个这个脚本的进程,如果用wait就会避免这个问题对吧,但是wait 后面跟pid 我怎么能知道进程号是多少 每次执行都查查?他不是会变吗?
全部回答
- 1楼网友:慢性怪人
- 2021-03-17 00:11
进程号会变你每次执行都需要用脚本获得进程号。
当前脚本的进程号是:$$
最后一个后台程序的进程号是:$!
使用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
}&
#注意跨括号最后的& 符号它表示此命令分组在后台执行。
记得采纳哈。
当前脚本的进程号是:$$
最后一个后台程序的进程号是:$!
使用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
}&
#注意跨括号最后的& 符号它表示此命令分组在后台执行。
记得采纳哈。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |