CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  系统维护与使用区

怎样在系统启动时自动运行我的socket程序?

楼主hongbo781202(hongsoft)2002-08-06 21:21:53 在 Linux/Unix社区 / 系统维护与使用区 提问

我做了一个SOCKET程序,想在每次开机时,让该程序自动运行。  
  请问怎么设置?  
  任何一种方法都可! 问题点数:100、回复次数:10Top

1 楼wiler(@_@)回复于 2002-08-06 21:43:17 得分 5

/etc/rc.d等的文件你可看一看  
  系统启动时会先执行/etc/下的一些程序  
  好象/etc/有个profile  
  Top

2 楼sans(长风半日)回复于 2002-08-06 22:56:02 得分 5

加在/etc/rc.d/init.d文件的最后一行即可。Top

3 楼wiler(@_@)回复于 2002-08-07 20:44:54 得分 10

在profile最后一行中加入你的程序即可  
  我刚测试过了Top

4 楼waterstream((*星*雨*))回复于 2002-08-08 10:55:50 得分 15

方法:  
  /etc/profile  
  /etc/rc.d/rc.local  
  /etc/rc.d/rc.sysinit  
  还有好几个地方,都是可以的.  
  不过,我建议你使用/etc/rc.d/rc.local  
  这个文件来启动你的程序.  
   
  原因:一般情况下,如果是自己的程序,都是加在rc.local里面的.  
  你可以看一下,你的rc.local,里面就有那么一两条东东.  
  不像profile和rc.sysinit里面满满的都是shell程序.  
  再说了,local本来就是本地的意思,是不?!  
   
  email:waterstream@371.net  
  qq:147869863  
  常联系.Top

5 楼mengge(踏岸寻柳)回复于 2002-08-15 16:00:48 得分 15

我觉得文件/etc/profile里面添加好像不大合适吧,因为这个文件是用户登录系统时才执行的,倘若系统只是启动而没有任何用户登录(想想Windows   NT/2000/XP里面的服务,即使不登录一样启动),那么里面的程序该怎么启动呢?!上面有尝试成功的,其测试方法是错误的,因为他能够看到成功只是因为他登录了操作系统,就是因为他的登录程序才启动的。  
   
  正确的方法应该是参考/etc/rc.d/下面的东西,系统有很多服务都是在这里启动的。Top

6 楼bao_zey(幽游白书)回复于 2002-08-15 17:05:25 得分 5

把程序做成daemon方式启动Top

7 楼hongbo781202(hongsoft)回复于 2002-08-19 19:39:48 得分 0

谢谢了。  
  对不起,好就没来。明天测试;明晚给分。  
  都有分。Top

8 楼zhoulifa(周立发)回复于 2002-08-31 18:00:08 得分 40

关于系统启动时自动启动某些自己的应用程序:  
  //Designed   by   ZhouLifa  
  //If   any   bug   found,   please   inform   me   as   soon   as   possible!  
  //Contact   info:  
  //post   addr:   广州市天河区华南理工大学计算机研究所   周立发   510640  
  //Computer   Application   Research   Institution,   South   China   University   of   Technology  
  //e-mail:   zhoulifa@yahoo.com  
  //Tel:   020-87113239-9322  
  //LastModifiedDate:2002.8.4  
  其实linux启动的主要工作在/etc/rc.d目录下的文件里.  
  1.首先是rc,它是一段shell,就是启动时做的事都在那里了,比如屏幕上出现Welcome   to   Red   Hat   Linux几个字也是它打印出来的,然后在set   clock   time,   set   hostname,   set   IP   address,监测硬盘,启动相应的服务等  
  2.如果你仔细看过就知道了它首先确定启动选项0-6,再进入/etc/rc.d/下相应的目录里,比如单用户模式为/etc/rc.d/rc1.d,我们平常用的Xwindow模式为/etc/rc.d/rc5.d  
  3.搜索相应目录(这里假设为/etc/rc.d/rc5.d)里的文件,首先找K开头的个文件(这是要被停止的程序),然后一个一个终止相应的进程.再找S开头的文件,这就是启动时要启动的各个程序.比如一般有:  
  K03rhnsd               K30sendmail       K74ypserv         S17keytable         S90cWnn  
  K05innd                 K34yppasswdd     K74ypxfrd         S20random             S90FreeWnn  
  K15postgresql     K35vncserver     K89bcm5820       S25netfs               S90xfs  
  K16rarpd               K45arpwatch       K91isdn             S26apmd                 S91smb  
  K20nfs                   K45named             K92ipchains     S28autofs             S95anacron  
  K20rstatd             K46radvd             K92iptables     S56rawdevices     S95atd  
  K20rusersd           K50snmpd             S05kudzu           S56xinetd             S99local  
  K20rwalld             K50tux                 S10network       S85gpm                   S99wine  
  K20rwhod               K60lpd                 S12syslog         S85httpd  
  K25squid               K65identd           S13portmap       S90canna  
  K25sshd                 K74ntpd               S14nfslock       S90crond                                                            
  你开机时就会看到:  
  Starting   syslog:           [   OK   ]  
  Starting   sendmail:       [   OK   ]  
  Starting   cWnn:               [   OK   ]  
  Starting   wine                 [   OK   ]  
  等等上面有的东西.  
  这些文件编号有个规则,就是都是S开头加两位数字,再加要启动的程序的名称.  
  数字越大就越在最后启动.即  
  Starting   wine                 [   OK   ]  
  这一行可定在  
  Starting   sendmail:       [   OK   ]  
  之后出现.  
  4.这里的文件都是符号链接,即用ln   -s命令建立的,用ls   -l   /etc/rc.d/rc5.d可以明确地看到他们的相应程序命令所在的位置.  
  5.如果你安装了某个软件,希望它在系统启动时自动启动,安装程序一般在这里加一个S文件.所以,如果你有一个程序希望它在系统启动是自动运行,你也可以加一个在这里.  
  比如我要启动的程序是/home/zhou/test/myapp  
  我在/etc/rc.d/rc5.d目录里用命令ln   -s   /home/zhou/test/myapp   S99myapp建立这个文件S99myapp  
  重新启动时就可以看到  
  Starting   myapp:  
  开机后ps   -A也可以看到我得程序在运行,当然这个程序是一直运行的,不是马上结束的那种  
  注意:关键是你要知道你要运行的程序的路径  
   
  6.另外,rc文件的最后指明在上述init程序启动完毕后要找/etc/rc.d/rc.local文件,会把rc.local文件里的程序全部运行,但rc.local是个shell文件.  
  你可以自己在里面加入  
  echo   "Hello,   welcome   to   my   home,   my   name   is   zhoulifa,   My   own   program   run   here"  
  sleep   5  
  系统启动时你可以看到这句话  
  对于上述我的程序你可以在rc.local文件里加入:  
  echo   "Starting   my   own   programe   myapp   now..."  
  /home/zhou/test/myapp  
  echo   "myapp   started   OK"  
  7.需要强调的一点是:如果你的程序本来不是用root身份运行的,那么在启动时可能就不能运行,因为你的环境变量不是符合的。  
  解决问题的办法就是:1、先在你的程序的开头就用setenv()函数来设定一些环境变量;2、在rc.local里用sudo   username   command去运行你这个程序。  
  ***********************  
  我刚做过试验,先写这样一个含有启动oracle所需的命令的文件OraScript:  
  [test@LinuxServer00   bin]$   cat   OraScript  
  connect   internal  
  startup  
  quit  
  再写这样一个运行上述命令的文件StartOracle,主要作用就是设置变量,最后一行启动svrmgrl  
  [test@LinuxServer00   bin]$   cat   StartOracle  
  export   USERNAME="oracle"  
  export   HOME=/home/oracle  
  export   PATH=$PATH:$HOME/bin  
  export   BASH_ENV=$HOME/.bashrc  
  export   ORACLE_BASE=/oracle  
  export   ORACLE_HOME=$ORACLE_BASE/product/8.1.7  
  export   ORACLE_SID=mydb  
  export   CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip  
  export   LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  
  export   PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:$ORACLE_HOME/dbs:./  
  export   USERNAME   BASH_ENV   PATH  
  /oracle/product/8.1.7/bin/svrmgrl   <   /oracle/product/8.1.7/bin/OraScript  
  当然你得到这个文件改为可执行chmod   u+x   StartOracle  
  最后在rc.local里加入:  
  [test@LinuxServer00   bin]$   cat   /etc/rc.d/rc.local  
  #!/bin/sh  
  #  
  #   This   script   will   be   executed   *after*   all   the   other   init   scripts.  
  #   You   can   put   your   own   initialization   stuff   in   here   if   you   don't  
  #   want   to   do   the   full   Sys   V   style   init   stuff.  
   
  echo   "Starting   oracle   now...My   Script   run   here..."  
  su   oracle   "-c   /oracle/product/8.1.7/bin/StartOracle   >   /dev/null"  
  echo   "Oracle   started   OK!"  
  sleep   10  
  这样,开机时会看到提示"Starting   oracle   now...My   Script   run   here..."和"Oracle   started   OK!"。  
  如果你的程序里不含"   >   /dev/null"这个把输出定位到空设备的命令,你还可以看到启动oracle的详细情况。  
   
  Top

9 楼hongbo781202(hongsoft)回复于 2002-09-01 11:07:27 得分 0

我没测试成功,成功后给分!  
   
  请看我的新开的贴(为了给分)  
  http://www.csdn.net/expert/topic/981/981560.xml?temp=.1574365  
   
  http://www.csdn.net/expert/topic/986/986855.xml?temp=.4922907  
   
  共250分,回者有分。Top

10 楼dupenf(飞跃人生)回复于 2002-09-01 22:57:32 得分 5

upTop

相关问题

  • win2000启动运行程序的问题?
  • 如何运行socket的程序呀?
  • 如何判断一个运行程序的启动路径
  • 启动运行程序时,如何隐藏界面?急急急!
  • 请问怎样让程序在windows启动以前运行
  • 启动Windows程序自动运行问题
  • 如何使我的程序在WINDOWS启动时就运行.
  • 怎样取消系统启动时自动运行的程序?
  • 如何让自已的程序在os启动时运行?
  • 怎样使程序在开机时自动启动运行????

关键词

  • .net
  • 文件
  • 系统
  • oracle
  • 用户
  • 启动
  • 程序
  • rc
  • 运行
  • etc

得分解答快速导航

  • 帖主:hongbo781202
  • wiler
  • sans
  • wiler
  • waterstream
  • mengge
  • bao_zey
  • zhoulifa
  • dupenf

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo