Linux service无法使用系统环境变量问题

文章目录

      • Linux service无法使用系统环境变量问题
        • 问题
        • 详细描述
        • 问题探索
        • 解决办法
        • 最后总结

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等环境。

你可能感兴趣的:(Linux service无法使用系统环境变量问题)