以前に mysql マルチインスタンス インストールを実行したとき、インストールは成功しました。 、linux 正常に起動することもできますが、support-files/mysqld_multi.server を /etc/init.d/ ディレクトリに移動し、スタートアップの設定 (chkconfig xxx on) が失敗します。
問題を見つけて解決し始めました。service xxx start では mysql の複数のインスタンスを開始できないことがわかりましたが、mysqld_multi start は使用できることがわかりました。その後、さまざまな試みの後、mysql 環境変数が / によって設定されていることがわかりました。通常の環境では etc/profile は出力できますが、シェルが作ったサービスでは mysql 環境変数が出力できません;
My /etc/frofile file:
export PATH=/usr/local/mysql/bin:$PATH
Execution: mysql 環境変数が設定されていることがわかります
[root@localhost init.d]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
次に、system V スクリプトを定義します
[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
サービスを実行します。結果、mysql 環境変数
[root@localhost init.d]# service mysqlmul start /sbin:/usr/sbin:/bin:/usr/bin
1 が存在しないことがわかります。export 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
テスト プロセス
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 中国語 Web サイトの他の関連記事を参照してください。