我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux service无法使用系统环境变量的问题及解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux service无法使用系统环境变量的问题及解决

目录
  • linux service无法使用系统环境变量
    • 详细描述
    • 问题探索
    • 解决办法
  • 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 in
    

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

    service文件中环境变量文件的使用

    测试准备

    c++测试程序

    LogTest.cpp内容如下:

    // 测试代码
    
    #include <stdio.h>
    #include <IOStream>
    
    using namespace std;
    
    int main(int argc, const char* argv[])
    {
        int size = 0;
        // 解析传入参数(argc和argv),代码略
        // ...
        
    	cout << size <<endl;
        
    	while(1);
    	return 0;
    }
    

    service文件

    LogTest.service文件

    [Unit]
    Description=LogTest
    After=network.target
    
    [Service]
    Type=simple
    EnvironmentFile=-/etc/sysconfig/LogTest
    ExecStart=/usr/local/MyTest/LogTest -s ${TESTSIZE}
    ExecStop=/bin/kill -s QUIT $MAINPID
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=LogTest
    
    [Install]
    WantedBy=multi-user.target 

    环境变量文件

    环境变量文件LogTest放在/etc/sysconfig/目录下。

    # 环境变量文件,可根据需要新增
    TESTSIZE=10

    测试流程

    1)编译c++测试程序,并将测试程序拷贝至/usr/local/MyTest/目录下。

    cp LogTest /usr/local/MyTest/

    2)日志配置

    关于日志相关配置,可查看https://blog.csdn.net/www_dong/article/details/128053496。

    3)service文件加载

    # 文件拷贝
    cp LogTest.service /usr/lib/systemd/system
    
    # 文件加载
    systemctl daemon-reload
    
    # 程序启动
    systemctl start LogTest
    
    # 查看进程是否启动成功
    ps -aux | grep LogTest

    4)查看LogTest程序日志

    # 进入日志所在目录
    cd /var/log
    
    # 查看LogTest.log
    cat LogTest.log

    说明: 日志打印出10,说明整个流程成功

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Linux service无法使用系统环境变量的问题及解决

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Linux service无法使用系统环境变量的问题及解决

    目录linux service无法使用系统环境变量详细描述问题探索解决办法service文件中环境变量文件的使用测试准备测试流程总结Linux service无法使用系统环境变量 详细描述 之前在做一个mysql多实例安装时,安装成功,li
    2023-04-07

    Linux service无法使用系统环境变量问题如何解决

    这篇“Linux service无法使用系统环境变量问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux s
    2023-07-05

    Linuxservice无法使用系统环境变量的问题及解决

    这篇文章主要介绍了Linuxservice无法使用系统环境变量的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-14

    Linux系统修改环境变量的常用方法

    本文详细介绍了修改Linux系统环境变量的常用方法,包括:永久修改系统范围环境变量(/etc/profile、/etc/environment)永久修改特定用户环境变量(~/.profile、~/.bash_profile、~/.bashrc)临时修改环境变量(export命令、环境变量声明)修改特定应用程序环境变量(命令行参数、配置文件)使用环境变量管理器
    Linux系统修改环境变量的常用方法
    2024-04-02

    解决linux环境下时区无法设置的问题

    在进行linux下修改时区的时候总是修改不了修改成 Asia/Shanghai 但是 时区总是 +0000 却不是想要的+0800 按照网上的方法 A : tzselect:执行tzselect命令-->
    2022-06-04

    Vue无法访问.env.development定义的变量值问题及解决

    这篇文章主要介绍了Vue无法访问.env.development定义的变量值问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-10

    linux操作系统的常用命令及环境变量是什么

    本篇内容介绍了“linux操作系统的常用命令及环境变量是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Linux简介与程序开发环境1
    2023-06-22

    vue定义在computed的变量无法更新问题及解决

    这篇文章主要介绍了vue定义在computed的变量无法更新问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-10

    Win10系统下无线网卡无法使用问题的解决方法

    Win10系统刚推出不久,便有无数的用户心急火燎地登上体验的大船,去尝鲜Win10的特性,但也要承担Win10尚不稳定的风险。编程有用户就在升级Win10后发现无线网卡用http://www.cppcns.com不了了,怎么解决这问题呢?以
    2023-06-09

    goland中npm无法使用的问题及解决

    这篇文章主要介绍了goland中npm无法使用的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-26

    Android Service中使用Toast无法正常显示问题的解决方法

    本文实例讲述了Android Service中使用Toast无法正常显示问题的解决方法。分享给大家供大家参考,具体如下: 在做Service简单练习时,在Service中的OnCreate、OnStart、OnDestroy三个方法中都像在
    2022-06-06

    如何解决win7系统收藏夹无法使用的问题

    小边最近在浏览合作伙伴信息时,发现了一个问题:如果无法使用win7收藏夹,应该怎么办呢?。许多用户对于如何操作win7操作系统中的问题感到困惑。下面的小边将教你如何添加win7收藏夹。所以让我们一起学习吧!如何解决win7系统收藏夹无法使用
    2023-07-24

    android开发环境遇到adt无法启动的问题分析及解决方法

    开始研究android开发,搭建开发环境的时候就出了问题……果然是好事多磨~ 安装了jdk,配置环境变量,安装了完整版的adt、创建了helloworld程序,启动的时候就报错 “Please ensure that adb is corr
    2022-06-06

    解决linux 所有命令无法使用的问题

    出现这个问题说明你的 /etc/profile 配置出现了问题,笔者就因为在配置一个环境的时候因为配置NODE环境变量出错而出问题,然后执行 source /etc/profileexport NODE_HOME=/usr/local/no
    2022-06-04

    如何解决Linux系统中Starting pptpd无法运行的问题

    本篇内容介绍了“如何解决Linux系统中Starting pptpd无法运行的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!安装pptp
    2023-06-13

    windows8系统变为Windows To Go环境导致应用及商店等功能无法使用

    Windows 8提供了全新的Windows To Go功能,它可以让我们把系统从硬盘转移到移动存储当中,达到随时随地使用自己的工作环境的目的。但是在某些特定的情况下,我们会遇到使用正常的系统变为Windows To Go环境从而导致不能使
    2022-06-04

    编程热搜

    目录