Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So lösen Sie das Problem, dass der Linux-Dienst keine Systemumgebungsvariablen verwenden kann

So lösen Sie das Problem, dass der Linux-Dienst keine Systemumgebungsvariablen verwenden kann

王林
王林nach vorne
2023-05-16 19:28:261139Durchsuche

    Linux-Dienst kann keine Systemumgebungsvariablen verwenden

    Detaillierte Beschreibung

    Ich habe ein MySQL erstellt Vorher Während der Installation mit mehreren Instanzen ist die Installation erfolgreich und Linux kann erfolgreich gestartet werden. Das Verschieben von support-files/mysqld_multi.server in das Verzeichnis /etc/init.d/ und das Festlegen des Startvorgangs (chkconfig xxx on) schlägt jedoch fehl. ?? Bei verschiedenen Versuchen habe ich festgestellt, dass es in einer normalen Umgebung verwendet werden kann, die von /etc/profile festgelegte MySQL-Umgebungsvariable kann jedoch nicht in dem von der Shell erstellten Dienst gedruckt werden 🎜#Meine /etc/frofile-Datei:

    export PATH=/usr/local/mysql/bin:$PATH
    #🎜 🎜#Ausführung: Sie können sehen, dass MySQL-Umgebungsvariablen festgelegt sind

    [root@localhost init.d]# echo $PATH
    /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

    Dann definieren wir ein System-V-Skript

    [root@localhost init.d]# vi /etc/init.d/mysqlmul
    #!/bin/bash
    
    #chkconfig: - 75 15
    #description: test

    Berechtigungen erteilen und auf Dienst setzen#🎜🎜 #
    [root@localhost init.d]#chmod +x /etc/init.d/mysqlmul
    [root@localhost init.d]#chkconfig --add mysqlmul

    Dienst ausführen: Als Ergebnis sehen Sie, dass keine MySQL-Umgebungsvariable vorhanden ist

    [root@localhost init.d]# service mysqlmul start
    /sbin:/usr/sbin:/bin:/usr/bin

    Lösung#🎜 🎜#

    1. Gerade in /etc/init.d/xxx export PATH=/usr/local/mysql/bin:$PATH

    zum eingestellten Dienst hinzufügen . Hinweis:

    beim Einfügen eines Shell-Skripts Wenn Sie es in einen Dienst einfügen, müssen Sie PATH und andere Umgebungen einrichten.

    Verwendung von Umgebungsvariablendateien in Servicedateien

    Testvorbereitung

    C++-Testprogramm

    Der Inhalt von LogTest.cpp ist wie folgt:

    // 测试代码
    
    #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-Datei

    LogTest.service-Datei

    [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

    Umgebungsvariablendatei #🎜 🎜#

    Die Umgebungsvariablendatei LogTest wird im Verzeichnis /etc/sysconfig/ abgelegt.

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

    1) Kompilieren Sie das C++-Testprogramm und kopieren Sie das Testprogramm in das Verzeichnis /usr/local/MyTest/.

    cp LogTest /usr/local/MyTest/

    2) Protokollkonfiguration

    Über protokollbezogene Konfiguration, Kann unter https://blog.csdn.net/www_dong/article/details/128053496 eingesehen werden.

    3) Laden der Servicedatei

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

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

    Hinweis: Das Protokoll druckt 10 aus, was darauf hinweist, dass der gesamte Vorgang abgeschlossen ist ist erfolgreich#🎜 🎜#

    Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass der Linux-Dienst keine Systemumgebungsvariablen verwenden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen