当前位置: 技术问答>firefox在Linux下运行的话对系统的基本要求?
iis7站长之家
系统启动时自动运行我的程序
来源: 互联网 发布时间:2014-12-14
本文导语: 我做了一个SOCKET程序,手工运行没问题。 但做成/ETC/RC2。D下系统开机时自动启动后,总是出错。 (我的程序中有读和写数据库的部分,用的数据库的DBA读和写记录) 请问是什么问题? 在自动运行的程序中能转换成...
我做了一个SOCKET程序,手工运行没问题。
但做成/ETC/RC2。D下系统开机时自动启动后,总是出错。
(我的程序中有读和写数据库的部分,用的数据库的DBA读和写记录)
请问是什么问题?
在自动运行的程序中能转换成其他用户吗?(‘其他用户’不是ROOT用户)。
但做成/ETC/RC2。D下系统开机时自动启动后,总是出错。
(我的程序中有读和写数据库的部分,用的数据库的DBA读和写记录)
请问是什么问题?
在自动运行的程序中能转换成其他用户吗?(‘其他用户’不是ROOT用户)。
|
你的系统是sco openserver?
我所说的原用户是 informix
你的那一句shell可以这样写:
su - informix -c "/usr/informix/jlverify/jlverify"
请注意 informix前的 - 号。如果加上 - 号的话,su 调用就会自动设置 /usr/informix/.profile 文件中的环境变量(例如 INFORMIXSERVER INFORMIXDIR),这样就会保证以 informix的用户身份连接数据库。
如果 informix 前没有 - 号,则要在当前启动程序的脚本中设置 INFORMIXSERVER INFORMIXDIR,以及其他环境变量。
我所说的原用户是 informix
你的那一句shell可以这样写:
su - informix -c "/usr/informix/jlverify/jlverify"
请注意 informix前的 - 号。如果加上 - 号的话,su 调用就会自动设置 /usr/informix/.profile 文件中的环境变量(例如 INFORMIXSERVER INFORMIXDIR),这样就会保证以 informix的用户身份连接数据库。
如果 informix 前没有 - 号,则要在当前启动程序的脚本中设置 INFORMIXSERVER INFORMIXDIR,以及其他环境变量。
|
一般注意一下rc2运行的各环境变量和你调试的那个用户的环境变量的对不对。
另外,对于绝大多数的数据库访问,可能需要配置环境变量,如:informix,oracle。另外,也要注意用户名问题,对于一些ec写的程序,缺省的登陆用户使用的是系统用户。
要更换用户可以,
su - -c ""
另外,对于绝大多数的数据库访问,可能需要配置环境变量,如:informix,oracle。另外,也要注意用户名问题,对于一些ec写的程序,缺省的登陆用户使用的是系统用户。
要更换用户可以,
su - -c ""
|
关于系统启动时自动启动某些自己的应用程序:
//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
//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