cron - Crond execute shell many times -
i have following timey.cpp
code in redhat 2.6.32 x86_64:
using namespace std ; int main() { while( 1 ){ char x[64]={0} ; strcpy( x,"1234567890") ; std::string s = x ; std::cout << "(" << x << ")" << std::endl ; struct timeval localtimex ; long secs,usecs ; gettimeofday(&localtimex,0x00) ; secs = localtimex.tv_sec ; usecs = localtimex.tv_usec ; //long mills = (time.tv_sec * 1000) + (time.tv_usec / 1000 ) ; printf("secs=(%d),usecs=(%d)\n",secs,usecs) ; sleep( 1 ) ; } //while }
in /home/informix/test
, compiled g++ --std=c++0x timey.cpp -o timey.exe
, , shell timey.sh
:
source /etc/bashrc nohup /home/informix/test/timey.exe &
then run timey.sh
by:
/home/informix/test/timey.sh
and take if timey.exe
runs by:
ps -ef | grep timey
it seems timey.exe
runs expected:
informix 41340 1 0 10:32 pts/10 00:00:00 /home/informix/test/timey.exe
what confuses me add shell crontab:
38 10 * * 1-5 informix /home/informix/test/timey.sh
and restart crond
:
/etc/init.d/crond restart
what surprises me see 4 copies of timey.exe
running:
ps -ef | grep timey informix 41498 1 0 10:38 ? 00:00:00 /home/informix/test/timey.exe informix 41499 1 0 10:38 ? 00:00:00 /home/informix/test/timey.exe informix 41529 1 0 10:38 ? 00:00:00 /home/informix/test/timey.exe informix 41561 1 0 10:38 ? 00:00:00 /home/informix/test/timey.exe
what did wrong 4 copies of timey.exe
running?
i see following in /var/log/cron
:
jul 2 10:38:01 localhost crond[41440]: (informix) cmd (/home/informix/test/timey.sh ) jul 2 10:38:01 localhost crond[41439]: (informix) cmd (/home/informix/test/timey.sh ) jul 2 10:38:01 localhost crond[41491]: (informix) cmd (/home/informix/test/timey.sh ) jul 2 10:38:01 localhost crond[41533]: (informix) cmd (/home/informix/test/timey.sh )
it seems crond
ran timey.sh
4 times, why?
also:
- in redhat 2.6.32-279.el6.x86_64, works!
- in redhat 2.6.32-358.el6.x86_64, not work!
Comments
Post a Comment