LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 987|回复: 7

请问如何让一个脚本只启动一个进程

[复制链接]
发表于 2003-5-21 11:09:02 | 显示全部楼层 |阅读模式
如题,谢谢各位
发表于 2003-5-21 11:21:41 | 显示全部楼层
说明白些!在一个脚本中,也许有很多命令,很多管道操作,那么就会产生很多进程,只启动一个进程好像不太可能吧~
 楼主| 发表于 2003-5-21 11:28:56 | 显示全部楼层
比如我在shell做这些
for f in `ls`
do
do something   如果有多个进程同时运行的话,就会重复处理
rm -f $f
done
 楼主| 发表于 2003-5-21 11:40:35 | 显示全部楼层
本来想生成个文件作为标志,但是如果脚本异常中止就有点麻烦了
用ps auxw | grep xxx | grep -v grep | awk ....又发现各个系统得到的结果都不一样
发表于 2003-5-21 12:09:35 | 显示全部楼层
coowoo兄,我给你回短信啦~~,恕小弟愚昧,爱莫能助
发表于 2003-5-21 15:08:58 | 显示全部楼层
最初由 coowoo 发表
比如我在shell做这些
for f in `ls`
do
do something   如果有多个进程同时运行的话,就会重复处理
rm -f $f
done


do exec something
发表于 2003-5-21 16:01:08 | 显示全部楼层
是不是也可以先检查进程中是否有相同的程序在运行,如果有的话,就结束他们,这样也可以保持你的脚本/程序的进程是唯一的.
 楼主| 发表于 2003-5-22 11:54:30 | 显示全部楼层

呵呵,解决不过还是用了临时文件

exe_dir=/home/tenpo
tmpfilename="tmp$$"
runningflag="x"
is_running()
{
        if [ $runningflag = "x" ]
        then
            rm -f $exe_dir/running.*
            `touch "$exe_dir/running.$tmpfilename"`
        else
            if [ ! -f "$exe_dir/running.$tmpfilename" ]
            then
                exit 0
            fi
            return
        fi
        runningflag="v"

}
for f in `ls`
do
is_running
do something 如果有多个进程同时运行的话,就会重复处理
rm -f $f
done
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表