当前位置: 技术问答>linux和unix
用脚本调用可执行程序,在crontab里不能执行,100分求
来源: 互联网 发布时间:2015-09-04
本文导语: 脚本如下 cd /usr/local/rsync_main/bin/;./rsync_backup echo "[`date "+%Y-%m-%d %H:%M:%S"`] rsync_main restart" 执行脚本,一切正常 但把它放到crontab里 则 cd /usr/local/rsync_main/bin/;./rsync_backup #...
脚本如下
cd /usr/local/rsync_main/bin/;./rsync_backup
echo "[`date "+%Y-%m-%d %H:%M:%S"`] rsync_main restart"
执行脚本,一切正常
但把它放到crontab里
则
cd /usr/local/rsync_main/bin/;./rsync_backup #没有被执行
echo "[`date "+%Y-%m-%d %H:%M:%S"`] rsync_main restart" #执行了
rsync_backup是一个daemon程序
但如果rsync_backup换成其他可执行程序,一切正常
下面是rsync_backup的代码
int
InitialDaemon(void)
{
pid_t iPID;
if ((iPID = fork()) 0)
exit(0);
/* disconnect the control terminal */
setsid();
signal(SIGINT, SIG_IGN);
signal(SIGHUP, SIG_IGN);
signal(SIGQUIT, SIG_IGN);
signal(SIGPIPE, SIG_IGN);
signal(SIGTTOU, SIG_IGN);
signal(SIGTTIN, SIG_IGN);
/* signal(SIGCHLD, SIG_IGN); */
signal(SIGTERM, SIG_IGN);
/* ignore_pipe(); */
if ((iPID = fork()) 0)
exit(0);
/* change the work env */
chdir("/");
umask(0);
return 0;
}
int
main(int argc, char *argv[])
{
if (InitialDaemon() != 0)
return -1;
...
}
cd /usr/local/rsync_main/bin/;./rsync_backup
echo "[`date "+%Y-%m-%d %H:%M:%S"`] rsync_main restart"
执行脚本,一切正常
但把它放到crontab里
则
cd /usr/local/rsync_main/bin/;./rsync_backup #没有被执行
echo "[`date "+%Y-%m-%d %H:%M:%S"`] rsync_main restart" #执行了
rsync_backup是一个daemon程序
但如果rsync_backup换成其他可执行程序,一切正常
下面是rsync_backup的代码
int
InitialDaemon(void)
{
pid_t iPID;
if ((iPID = fork()) 0)
exit(0);
/* disconnect the control terminal */
setsid();
signal(SIGINT, SIG_IGN);
signal(SIGHUP, SIG_IGN);
signal(SIGQUIT, SIG_IGN);
signal(SIGPIPE, SIG_IGN);
signal(SIGTTOU, SIG_IGN);
signal(SIGTTIN, SIG_IGN);
/* signal(SIGCHLD, SIG_IGN); */
signal(SIGTERM, SIG_IGN);
/* ignore_pipe(); */
if ((iPID = fork()) 0)
exit(0);
/* change the work env */
chdir("/");
umask(0);
return 0;
}
int
main(int argc, char *argv[])
{
if (InitialDaemon() != 0)
return -1;
...
}
|
把cd /usr/local/rsync_main/bin/;./rsync_backup
改成
. /usr/local/rsync_main/bin/rsync_backup
注意.和/有个空格.
改成
. /usr/local/rsync_main/bin/rsync_backup
注意.和/有个空格.