当前位置: 技术问答>linux和unix
SOLARIS下如果保持一个程序24小时不停地处于运行状态???
来源: 互联网 发布时间:2014-12-16
本文导语: 我现在需要一个程序不能永停止地运行!刚开始我用 ./nohup 方法!可是机器重新启动后就不会继续了! 再说有时候会莫名其妙地停掉的! 可不可以通过SHELL编程来利用SOLARIS内部的什么机制,检测这个程序在不在运...
我现在需要一个程序不能永停止地运行!刚开始我用 ./nohup 方法!可是机器重新启动后就不会继续了! 再说有时候会莫名其妙地停掉的! 可不可以通过SHELL编程来利用SOLARIS内部的什么机制,检测这个程序在不在运行,如果停了就运行它???还请高手赐教!!!
或者可不可以这样解决:我用 来确保程序可以不停止,可是我不知道,过了一整天,会不会导致这样的情况出现,有n个一模一样的该程序进程在内存中并行运行,那可不是我本意! 就是说,程序已经运行了,再运行一次的话是仍旧保持这个程序呢?还是另外开一个内存区域??
或者可不可以这样解决:我用 来确保程序可以不停止,可是我不知道,过了一整天,会不会导致这样的情况出现,有n个一模一样的该程序进程在内存中并行运行,那可不是我本意! 就是说,程序已经运行了,再运行一次的话是仍旧保持这个程序呢?还是另外开一个内存区域??
|
在程序中用如下步骤将程序设置成守护进程:
int InitDaemon()
{
if( fork() > 0 )
exit(0);
signal( SIGHUP, SIG_IGN );
setsid();
if( fork() > 0 )
exit(0);
/*
chdir( "/" );
fclose( stderr );
fclose( stdout );
fclose( stdin );
*/
return( 0 );
}
int InitDaemon()
{
if( fork() > 0 )
exit(0);
signal( SIGHUP, SIG_IGN );
setsid();
if( fork() > 0 )
exit(0);
/*
chdir( "/" );
fclose( stderr );
fclose( stdout );
fclose( stdin );
*/
return( 0 );
}
|
1、你的程序应该是不需要GUI界面的,首先你得将其设置为Daemon进程,用楼上给出的代码就可以实现了;
2、对于程序异常退出的问题,多半是你的程序有bug;
保证程序异常退出后能自动重起,最简单的办法就是用ps命名检查。如:
ps -ef|grep prog-name|grep -v grep
可以用cron定时运行来检查和重启,
也可以再写一个守护程序专门定时检查,如发现异常退出重新启动该进程。
3、要保证开机自动运行,在/etc/rc3.d目录下放一个脚本文件。
脚本文件名应该以S打头,内容最简单的情况,写上你要运行的程序名就可以了。
2、对于程序异常退出的问题,多半是你的程序有bug;
保证程序异常退出后能自动重起,最简单的办法就是用ps命名检查。如:
ps -ef|grep prog-name|grep -v grep
可以用cron定时运行来检查和重启,
也可以再写一个守护程序专门定时检查,如发现异常退出重新启动该进程。
3、要保证开机自动运行,在/etc/rc3.d目录下放一个脚本文件。
脚本文件名应该以S打头,内容最简单的情况,写上你要运行的程序名就可以了。
|
做歌守候进程监控它,每次系统重起时,守候进程自动运行,有它启动你的那个进程,你的进程如果意外退出,那么守候进程重新启动他
|
你最好写一个有子进程的程序.主进程一旦发现子进程死了,那么就去重新启动子进程.你可要记住主进程最好用select来阻塞住.否则,会占好多的资源.我在前面的贴子中,已发表了一个程序!如果你先看一下的话,对你有么大的好处!
|
add link file which links to your app to the /etc/rc?.d/
? means init mode
? means init mode
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。