有时候,该shell脚本需要等到另一个shell脚本 或 程序执行完毕之后,才开始执行。
提供一种方法:
查看 前序 脚本或程序 的进程是否已经执行结束:
#如果有程序在make,则等待make结束
cnt=`ps -ef|grep "make"|grep "all"|grep -v grep|grep -v vi|wc -l`
echo $cnt
do
while [ $cnt -nq 0 ]
then
cnt=`ps -ef|grep "make"|grep "all"|grep -v grep|grep -v vi|wc -l`
echo $cnt
sleep 5
done
#如果前序 脚本或程序 正在执行,则等待5s
count=`ps -ef|grep |grep -v grep|grep -v vi|wc -l`
echo $count
do
while [ $count-nq 0 ]
then
count=`ps -ef|grep |grep -v grep|grep -v vi|wc -l`
echo $count
sleep 5
done
#这下面可以写 要执行的 后续shell了
相关文章
- shell中等待其他程序执行完毕
- 在apk 中执行.exec adb shell各种命令远程控制其他Android设备(一)
- Redis --- redis事务和分布式事务锁-事务过程中失败有两种可能: Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令中用在了错误类型的键上面,所以如果在生产环境中你使用的正常命令,那么在 Redis 事务中,是不会出现错误而导致回滚的。 来自文档:Redis commands can fail only if called with a wrong syntax... 事务执行一半,Redis宕机。如果 Redis 服务器因为某些原因被管理员杀死,或者遇上某种硬件故障,那么可能只有部分事务命令会被成功写入到磁盘中。如果 Redis 在重新启动时发现 AOF 文件出了这样的问题,那么它会退出,并汇报一个错误。使用redis-check-aof程序可以修复这一问题:它会移除 AOF 文件中不完整事务的信息,确保服务器可以顺利启动 注意: 若在事务队列中存在命令性错误(类似于java编译性错误),则执行EXEC命令时,所有命令都不会执行 若在事务队列中存在语法性错误(类似于java的1/0的运行时异常),则执行EXEC命令时,其他正确命令会被执行,错误命令抛出异常。 Redis 官网也解释了自己为啥不支持回滚。简单来说就是 Redis 开发者们觉得没必要支持回滚,这样更简单便捷并且性能更好(回滚还需要解决回滚事务覆盖的问题)。Redis 开发者觉得即使命令执行错误也应该在开发过程中就被发现而不是生产过程中。
- 嵌入式学习37-TCP并发模型-有限 2.IO模型: 1.阻塞IO: 没有数据到来时,可以让任务挂起 节省CPU资源开销,提高系统效率 2.非阻塞IO: 程序未接收到数据时一直执行 效率很低 3.异步IO 只能绑定一个文件描述符用来 读取数据 4.多路复用IO select 1.select监听的集合中的文件描述符有 上限限制 2.select有 内核层 向 用户层数据空间 拷贝 的过程,占用系统资源开销 3.select必须 轮询检测 产生 事件 的文件描述符 4.select 只能工作 在 水平触发 模式(低速模式) 无法工作 在 边沿触发 模式(高速模式) poll (监听的集合中的文件描述符有 没有上限限制) 1.poll有 内核层 向 用户层 数据空间 拷贝 的过程,占用系统资源开销 2.poll必须 轮询检测 产生 事件 的文件描述符 3.poll 只能工作在水平触发模式(低速模式) 与select相同 无法工作在边沿触发(高速模式) 3.函数接口: 1.select int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 功能: select 监听 文件描述符集合 中 是否 有文件描述编程 ready状态 select 监听 文件描述符集合 中 ,若有状态 , 将没有ready状态的T除 若无状态,将阻塞继续等待 参数: nfds: 最大文件描述符的值 +1 readfds: 读 文件描述符集合 writefds: 写 文件描述符集合 exceptfds: 其余 文件描述符集合 timeout: 等待的时长 NULL 一直等待(超时处理) 返回值: 成功 返回 文件描述符集合中 的 文件描述符个数 失败 返回 -1 void FD_CLR (int fd, fd_set *set); 功能: 将文件描述符 fd 从集合中清除
- C++程序中调用其他exe可执行文件方法
- 在程序中执行shell命令
- 如何使应用程序等待并使其他进程在C#中同时运行?
- 在Linux中从Linux执行shell脚本(使用perl和其他shell脚本的shell脚本)
- c#中调用外部EXE,如何知道该外部程序运行错误,并根据运行的结果 再执行其他功能
- CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。