openSUSE没有/etc/rc.d/rc.local这个文件,网上查找资料说可以/etc/init.d下添加服务脚本程序,
但好像我的是用C编译的可执行程序,用chkconfig命令时会提示unknown service。
请问怎样才能实现开机自动运行某个C语言编译的程序呢???
麻烦详细解答下
|
我用的是suse10sp2,不是opensuse,但差别应该不是不大。我当时配好的那台服务器已经寄给客户了,我手上没有suse的。我当时的步骤是:其中xxx是你的服务名字
根据模版/etc/init.d/skeleton写好启动脚本,放在/etc/init.d/下。这个脚本的编写,重要的是init infoheader的编写。下面是xxx中的
### BEGIN INIT INFO
# Provides: xxx
# Required-Start: $local_fs $network xdm mysql
# Should-Start:
# Required-Stop:
# Should-Stop:
# X-Start-Before:
# Default-Start: 5
# Default-Stop: 0 1 2 6
# Short-Description: Start xxx server
# Description: ...
### END INIT INFO
然后运行
# insserv /etc/init.d/italkavatar
就可以了,该命令会将这个脚本安装,并在rc5.d中生成相应的符号链接。
里面没有写gdm,而是xdm,因为suse是用这个脚本去启动gdm的。那个信息头的信息就是要等待xdm启动好了以后才运行xxx。这个顺序错了,就算你进入runlevel 5也没用。其实各个runlevel的差别就在启动的服务不同以及服务之间的依赖关系会因此有些变化。你可以好好看看inittab的manual,其实是init进程读取inittab,按照这个脚本的指示去读取init.d,并按照init.d特定的文件组织,依次启动服务
|
1.简单的方法,在/etc/inittab结尾加上你要启动的程序.
2.复杂的方法,自己做个service启动脚本(把别的服务启动脚本复制过来该改改就是了,注意改成自己服务名和放到正确的地方),然后用chkconfig添加并调整你想在哪些运行级别自动启动服务
|
/etc/rc.d/rc.local
你说的的这个就行啊。
直接添加行
/yourpath/yourprogram