如何实现 linux 下自启动服务
1. 如何在系统用户未登录前自启动嵌入自己所写的服务(可执行程序 myftp)?
这里介绍三种经我验证过的可行的办法:
方法一: 编辑 rc.local,在里面添加可执行所在路径
vi
/etc/rc.d/rc.local
进入编辑模式, 在该文件中添加 /mnt/hgfs/su/myftp (/mnt/hgfs/su 是文件存放路径可变)
保存,重启 ok
方法二: 可以把 myftp 的执行路径写到一个脚本中(su.sh)
/mnt/hgfs/su/myftp
在脚本中添加命名
修改文件的执行权限 chmod u+x su.sh
再进入/etc/rc.d/rc.local 中 添加 /mnt/hgfs/su/su.sh (/mnt/hgfs/su 是文件存放路径可变)
保存,重启
方法三: 由于前面两个都要手动去更改去编辑 rc.local 下文本的内容,有些麻烦,如果用程序来实现更加麻烦,,所以推荐使下
面这种方法.
将 myftp 的执行路径写到一个脚本中(su.sh) 方法参照方法二
但有一点需注意要将 su.sh 里面的 #!/bin/sh 部分改为
#!/bin/sh
#
# chkconfig: 2345 97 00
# description:myftp auto
#
(这个是运用 chkconfig 命令能识别并为该脚本建立软连接的保证)
其中 2345 代表服务可在哪个运行级别下启动
97
00
代表软连接启动的序号
代表软连接关闭的序号 ( 序号低总比序号高的先执行 )
将 su.sh 拷贝到/etc/rc.d/init.d 下
命令: cp
/mnt/hgfs/su/su.sh
/etc/rc.d/init.d 下
chkconfig –add su.sh
重启
2. 如何在系统用户登录后自启动自己所写的服务(可执行程序 myftp) ?
用户登录时,bash 首先自动执行系统管理员建立的全局登录 script :/etc/profile。然后 bash 在用户起始目录下按顺序查找
三个特殊文件中的一个:/.bash_profile、/.bash_login、 /.profile,但只执行最先找到的一个。
因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于 DOS 下的 Autoexec.bat)。
由于/.bash_profile、/.bash_login、 /.profile 不确定哪个被先找到,虽然它们有执行顺序,为了保险起见,我直接在/etc/profile
下编辑
Vi /etc/profile
在该文件末尾添加入一条命令
/mnt/hgfs/su/su.sh
(su.sh 请参见方法二)
保存, 重启 测试 ok