日期:2014-05-16  浏览次数:20713 次

问一个关于linux设置开机自启动程序的问题
我在linux上有一个java文件已经编译好了.class文件了。

现在我想将这个class文件做成开机自启动的,这个怎么做呀?

我在网上搜到的说在/etc/rc.local/添加一行就行了。

于是我编写了一个脚本

Assembly code


cd /XX
java XX



将这个脚本保存为XX.sh

然后再rc.local中添加了一行

./XX.sh

可是这样根本不起做用的。大家帮我看看,这个应该怎么写才能使这个class文件开机自启动啦。

------解决方案--------------------
不要直接./XX.sh
加上全路径$PATH/XX.sh
------解决方案--------------------
楼上的,你看看这样是否可行:

1.首先确保你的那个文件".class"是否为可执行文件,(验证方法,进入文件所在文件夹,执行./.class,确保OK)

2.编辑/etc/rc.local文件;(该文件需要root权限,最好切换成root用户或者使用sudo)
在rc.local文件里面添加你的可执行文件的全路径,比如/home/user/program/.class
注意:刚才我在ubuntu 10.04版本查看了一下,有个exit 0,记得把你添加的内容放在exit 0之前,否则执行不到你得文件便exit了;

3.rc.local文件为只读属性,需要强制保存(对于使用vim编辑器来说 输入:w!强制保存)
完成后最好使用cat /etc/rc.local文件,检查你是否添加OK;

4.重启PC观察你的程序.class是否自动运行了;
------解决方案--------------------
在你的xx.sh脚本最后加上一行:
touch /tmp/aaabbbccc.txt
只是用来测试看看系统启动后这个脚本到底有没有执行,如果脚本确实执行了那应该会在/tmp目录下产生一个aaabbbccc.txt文件,否则就是没有执行。
------解决方案--------------------
这个问题跟你要执行的java命令执行后期望得到的结果有点关系了,java方面不懂。
------解决方案--------------------
探讨

引用:

这个问题跟你要执行的java命令执行后期望得到的结果有点关系了,java方面不懂。


我java代码的功能就是向一个文件中输入数据。

------解决方案--------------------
这个还是有区别的,你用用户登录的话在登录时自动执行了.bash_profile,在其中又调用了.bashrc。但是rc.local是init进程在较“早期”调用的,这个时候还没有你设置的java环境变量吧,大概是这么理解吧
------解决方案--------------------
就是在同一个脚本中把环境变量的设置语句加到调用你的java代码的语句前面啊
------解决方案--------------------
Python code

Last login: Thu Dec 15 18:16:40 2011 from ad999
[root@RHEL6A ~]# cat /tmp/osstarttest.txt 
this is test data
[root@RHEL6A ~]# grep -v -E '(^#|^$)' /etc/rc.d/rc.local 
touch /var/lock/subsys/local
/root/pycode/py17.py
[root@RHEL6A ~]# cat /root/pycode/py17.py 
#!/usr/bin/env python

filename=r'/tmp/osstarttest.txt'
fh=open(filename,'a')
buffer='this is test data\n'
fh.write(buffer)
fh.close()

[root@RHEL6A ~]#

------解决方案--------------------
先执行/etc/rc.local 才会到登录那步
脚本里先获取系统变量试试
source /etc/profile