Heim > Betrieb und Instandhaltung > Betrieb und Wartung von Linux > 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

王林
Freigeben: 2023-05-16 19:28:26
nach vorne
1187 Leute haben es durchsucht

    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
    Nach dem Login kopieren
    #🎜 🎜#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
    Nach dem Login kopieren

    Dann definieren wir ein System-V-Skript

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

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

    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
    Nach dem Login kopieren

    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;
    }
    Nach dem Login kopieren

    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
    Nach dem Login kopieren

    Umgebungsvariablendatei #🎜 🎜#

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

    # 环境变量文件,可根据需要新增
    TESTSIZE=10
    Nach dem Login kopieren
    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
    Nach dem Login kopieren
    4) LogTest-Programmprotokoll anzeigen

    # 进入日志所在目录
    cd /var/log
    
    # 查看LogTest.log
    cat LogTest.log
    Nach dem Login kopieren
    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!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage