UNIX-判断程序是否已经运行的脚本在crontab与命令行下的不同
来源:互联网 发布:linux reboot无法重启 编辑:程序博客网 时间:2024/05/19 03:44
crontab会定时启动脚本,而不管原来的脚本是否执行完毕,这在某些情况下是不能容忍的,详见http://blog.csdn.net/totuswhf/archive/2008/05/08/2416424.aspx.
于是我写了个脚本cron_music.sh,其中判断是否已经启动,如果启动则直接退出:
#!/bin/sh
. $HOME/.cronprofile
PROCEXIST=""
PROCEXIST=`ps -ef|grep cron_music|grep -v grep|wc -l`
if(test $PROCEXIST -ge 2)
then
echo "program already exist!" >>$HOME/cron/cron_music.log
return;
fi;
sleep 120
在命令行下执行,试验没有问题。
放到crontab中死活就不会执行了。把PROCEXIST打印出来一看,执行一个计数已经是2,接着把`ps -ef|grep cron_music|grep -v grep`作为独立语句写到文件中,看到果然有两个进程,一个是sh -c path/cron_music.sh, 一个是/bin/sh cron_music.sh.
原来是因为crontab会先执行一个sh -c,然后才执行到要执行的脚本。
因此这个判断,要至少是ge 3才行。如果有两个程序要启动,计数是4。
- UNIX-判断程序是否已经运行的脚本在crontab与命令行下的不同
- 判断程序实例是否已经运行的N种方法
- 判断程序实例是否已经运行的N种方法
- 判断程序实例是否已经运行的N种方法
- 在命令行里运行已经完成的python程序
- 判断程序是否已经运行
- C# winform 判断程序是否已经在运行 判断程序是否已经打开
- expect脚本文件在crontab下无法运行的解决方法
- c#检查启动的程序是否已经在运行
- 判断自己的程序是否已经打开
- AIX环境下SHELL脚本设置成crontab调度和手动运行的某些不同
- AIX_环境下SHELL脚本设置成crontab调度和手动运行的某些不同
- 在命令行下运行PHP脚本[带参数]的方法
- 判断是否已经运行了某个程序
- java判断一个程序是否已经运行
- 判断程序是否已经运行,然后kill旧的或者新的.
- 判断程序是否已经运行,然后kill旧的或者新的.
- 通过脚本判断一个程序是否在运行
- 一个南方互联网十年发展见证者致汪洋刘玉浦等广东及深圳领导的信(转自天涯论坛)
- 什么是 SOA?
- 给自己提个醒.
- 你这该死的销售--走出软件作坊:三五个人十来条枪 如何成为开发正规军(七)
- java通过ODBC连接sqlserver 代码
- UNIX-判断程序是否已经运行的脚本在crontab与命令行下的不同
- 兼容ie和 firefox的event事件
- 启用Service Broker
- BI--如何创建BI的新client
- 浅谈DOS扩展器和DPMI
- 删除表中重复记录
- DPMI在C语言中的实现方法浅析
- 得到本机IP
- vim的lookupfile插件在windows平台上tag文件生成