Linux 서비스에서 시스템 환경변수를 사용할 수 없는 문제를 해결하는 방법
Linux 서비스는 시스템 환경 변수를 사용할 수 없습니다
자세한 설명
이전에 mysql 다중 인스턴스 설치를 할 때 설치가 성공적으로 이루어졌고 Linux도 성공적으로 시작할 수 있었지만 support-files/mysqld_multi.server가 다음 위치로 이동되었습니다. /etc /init.d/ 디렉토리 및 시작 설정(chkconfig xxx on)에 실패했습니다.
문제 탐색
문제를 발견하고 해결하기 시작했으며 서비스 xxx start가 mysql의 여러 인스턴스를 시작할 수 없다는 것을 발견했습니다. 다양한 시도 끝에 /etc/profile에서 설정한 mysql 환경 변수는 일반 환경에서 출력할 수 있지만, 쉘에서 만든 서비스에서는 mysql 환경 변수를 출력할 수 없다는 사실을 발견했습니다. /etc/frofile 파일:
export PATH=/usr/local/mysql/bin:$PATH
실행: mysql 환경 변수 set
[root@localhost init.d]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
그런 다음 시스템 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 init.d]#chkconfig --add mysqlmul
로 설정합니다. 서비스 실행: 결과적으로 mysql 환경 변수
[root@localhost init.d]# service mysqlmul start /sbin:/usr/sbin:/bin:/usr/bin
Solution
1이 없음을 확인할 수 있습니다. 추가 내보내기 PATH=/usr/local/mysql/bin:$PATH
참고:에서 셸로 처리하세요. /etc/init.d/xxx에 방금 설정된 서비스 스크립트가 서비스에 배치되면 PATH 등의 환경을 설정해야 합니다.
서비스 파일 내 환경변수 파일 활용
테스트 준비
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; }
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) 서비스 파일 로드
# 文件拷贝 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이 인쇄되어 전체 프로세스가 성공했음을 나타냅니다.
위 내용은 Linux 서비스에서 시스템 환경변수를 사용할 수 없는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Docker 환경을 사용할 때 Docker 환경에 Extensions를 설치하기 위해 PECL을 사용하여 오류의 원인 및 솔루션. 종종 일부 두통이 발생합니다 ...

많은 웹 사이트 개발자는 램프 아키텍처에서 Node.js 또는 Python 서비스를 통합하는 문제에 직면 해 있습니다. 기존 램프 (Linux Apache MySQL PHP) 아키텍처 웹 사이트 요구 사항 ...

Linux 터미널에서 Python 사용 ...

Apscheduler 타이밍 작업을 MacOS 플랫폼의 서비스로 구성하십시오. Ngin과 유사한 APSCHEDULER 타이밍 작업을 서비스로 구성하려면 ...

언어의 멀티 스레딩은 프로그램 효율성을 크게 향상시킬 수 있습니다. C 언어에서 멀티 스레딩을 구현하는 4 가지 주요 방법이 있습니다. 독립 프로세스 생성 : 여러 독립적으로 실행되는 프로세스 생성, 각 프로세스에는 자체 메모리 공간이 있습니다. 의사-다일리트 레딩 : 동일한 메모리 공간을 공유하고 교대로 실행하는 프로세스에서 여러 실행 스트림을 만듭니다. 멀티 스레드 라이브러리 : PTHREADS와 같은 멀티 스레드 라이브러리를 사용하여 스레드를 만들고 관리하여 풍부한 스레드 작동 기능을 제공합니다. COROUTINE : 작업을 작은 하위 작업으로 나누고 차례로 실행하는 가벼운 다중 스레드 구현.

Linux 시스템과 함께 제공되는 Python 통역사를 제거하는 문제와 관련하여 많은 Linux 배포판이 설치 될 때 Python 통역사를 사전 설치하고 패키지 관리자를 사용하지 않습니다 ...

Web.xml 파일을 열려면 다음 방법을 사용할 수 있습니다. 텍스트 편집기 (예 : 메모장 또는 문자 메시지)를 사용하여 통합 개발 환경 (예 : Eclipse 또는 NetBeans)을 사용하여 명령을 편집하십시오 (Windows : Notepad Web.xml; Mac/Linux : Open -A Texted web.xml).
