Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >So lösen Sie das Problem, dass der Linux-Dienst keine Systemumgebungsvariablen verwenden kann
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
[root@localhost init.d]# vi /etc/init.d/mysqlmul #!/bin/bash #chkconfig: - 75 15 #description: testBerechtigungen 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:$PATHzum 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 ServicedateienTestvorbereitungC++-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; }
[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
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.logHinweis: 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!