目标

以可控制的多进程执行,达到最大执行时长后停止脚本。

思路

1、产生fifo管道,并预填充n个值(与并发数相等)

2、记录脚本本身PID并启动计时器进程(计时终止后杀脚本本身PID)

3、并发执行

4、正常执行后,杀掉计时器子进程

5、回收fd

控制参数

PROC: 进程数

MAX_EXEC_TIME: 最大执行时长

不带时间控制版本

#!/bin/bash

trap "exec 10>&-;exec 10<&-;exit 0"
mkfifo testfifo
exec <>testfifo
rm -f testfifo for x in {..};do
echo >&
done for x in {..};do
read -u10
{
### do something
echo "success:$x"
sleep
echo >&
}&
done wait exec >&-
exec <&-

带时间控制版本

#!/bin/bash
## create fd
[[ -e ./fd1 ]] || mkfifo ./fd1
exec <> ./fd1
rm -rf ./fd1 PROC= for i in `seq ${PROC}`;
do
echo >&
done ## Define max execuate time here
MAX_EXEC_TIME= ## echo $$ > PPID
ppid=$(echo $$) ## time tic-toc
{
sleep ${MAX_EXEC_TIME} && exec <&- && exec >&- && echo "ABORT" && kill $ppid
}&
## echo $! > PID
pid=`echo $!`
################
## task list
for line in `seq `;
do
read -u6
{
## do something here
echo "start_task_${line}: $!"
sleep
echo >&
}&
done
sleep
kill $pid
wait ## close fd read & write
exec <&-
exec >&- echo "NORMAL EXIT" && exit

Linux带有时间控制的多进程bash脚本的更多相关文章

  1. 在ubuntu linux 中编写一个自己的bash脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...

  2. linux下一键安装 powershell,的bash脚本

    说明 目前,linux下的powershell约等于pash.希望大家专注mono,关注pash. 一键安装脚本包括for centos6,centos7,ubuntu 14.04  ubuntu 1 ...

  3. Linux 桌面玩家指南:06. 优雅地使用命令行及 Bash 脚本编程语言中的美学与哲学

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  4. Linux应用环境实战10:Bash脚本编程语言中的美学与哲学(转)

    阅读目录 一.一切皆是字符串 二.引用和元字符 三.字符串从哪里来.到哪里去 四.再加上一点点的定义,就可以推导出整个Bash脚本语言的语法了 五.输入输出重定向 六.Bash脚本语言的美学:大道至简 ...

  5. Linux Bash脚本编程语言中的美学与哲学

    我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更 ...

  6. Linux开机执行bash脚本

    问题描述:     Linux开机执行bash脚本     问题解决:         (1)在 /etc/init.d文件夹中新建一个脚本myinit                     (2) ...

  7. 用Bash脚本将Linux普通用户添加为系统管理员

    将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但 ...

  8. Linux中编写Bash脚本的10个技巧

    Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式.尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能. 本文中,我们将分享 ...

  9. 通过定时任务 bash 脚本 控制 进程 的 执行时间

    通过定时任务 bash 脚本 控制 进程 的 执行时间

随机推荐

  1. 视频描述(Video Captioning)调研

    Video Analysis 相关领域介绍之Video Captioning(视频to文字描述)http://blog.csdn.net/wzmsltw/article/details/7119238 ...

  2. 1.1_C语言概述

    C语言概述 1.1 什么是C语言 一提到语言这个词语,自然会想到的是像英语.汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具. 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之 ...

  3. Firemonkey Android 虚拟机

    AVD,Android Virtual Device start menu>Android AVD Manager>create>start. [DCC Error] E2597 D ...

  4. Download/Attach source-code/java-docs with maven dependencies

    I am using Maven in my projects from last couple of years, and the automatically downloading the Jar ...

  5. mac使用备注

    快捷键: 掌握好多手势和快捷键可以有效的提高工作效率,触控板和快捷键基本让你可以脱离鼠标. Command+Tab                   任意情况下切换应用程序 - 向前循环 Shift ...

  6. 为什么nginx error_page遇到后端错误时不跳转?

    nginx不得不说的参数之 proxy_intercept_errors与fastcgi_intercept_errors 为什么我的error_page 配置没有生效,没有正常跳转?我也遇到过这个问 ...

  7. tomcat 域名直接访问默认工程,而不添加项目路径

    <Engine name="Catalina" defaultHost="xx.xx.xx.xx"> <!--For clustering, ...

  8. U3D屏幕坐标,世界坐标,像素坐标之间的关系

    U3D中,屏幕坐标和世界坐标单位一样,二者之间是直接的一一对应关系,不受屏幕分辨率影响.默认情况下屏幕空间画布的左下角坐标是世界原点(0,0,0),这种情形下,世界空间的点(1920,1080,任何值 ...

  9. 迷你MVVM框架 avalonjs 1.1发布

    本版本添加了许多有用的功能,得益于用户量的增大,一些隐性BUG也暴露出来Fix掉了.强烈建议升级! 优化扫描流程: ms-skip(0) --> ms-important(1) --> m ...

  10. vim调整粘贴时的文本缩进

    解决办法: 1. 在拷贝前输入:set paste (这样的话,vim就不会启动自动缩进,而只是纯拷贝粘贴)2. 拷贝完成之后,输入:set nopaste (关闭paste) 在 Vim 中粘贴文本 ...