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
[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: test
[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
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 anzeigenHinweis: Das Protokoll druckt 10 aus, was darauf hinweist, dass der gesamte Vorgang abgeschlossen ist ist erfolgreich#🎜 🎜## 进入日志所在目录 cd /var/log # 查看LogTest.log cat LogTest.logNach dem Login kopierenDas 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!