Linux service无法使用系统环境变量问题
问题
Linux service无法使用系统环境变量问题
详细描述
之前在做一个mysql多实例安装时,安装成功,linux也能成功启动;但是将support-files/mysqld_multi.server移动到/etc/init.d/目录下并设置开机启动(chkconfig xxx on)失败;
问题探索
发现了问题,开始解决,发现service xxx start 无法启动mysql的多实例,但是mysqld_multi start就可以使用;然后经过各种尝试,发现在普通环境下可以打印出/etc/profile设置的mysql环境变量,但是在shell做成的service中无法打印该mysql环境变量;
我的/etc/frofile文件:
export PATH=/usr/local/mysql/bin:$PATH
执行:可以看到是有设置的mysql环境变量的
[root@localhost init.d]#
echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
然后我们定义一个system V的脚本
[root@localhost init.d]# vi /etc/init.d/mysqlmul
#!/bin/bash
#chkconfig: - 75 15
#description: test
赋予权限并设置为service
[root@localhost init.d]#chmod +x /etc/init.d/mysqlmul
[root@localhost init.d]#chkconfig --add mysqlmul
执行service:结果可以看到是没有mysql环境变量的
[root@localhost init.d]# service mysqlmul start
/sbin:/usr/sbin:/bin:/usr/bin
解决办法
1、在/etc/init.d/xxx刚才设置的service中添加export PATH=/usr/local/mysql/bin:$PATH
最后总结
当把一个shell脚本放入到service中时,需要设定好PATH等环境。